Operated by Sourcelane✓ verified
Scrape YouTube Shorts by keyword, hashtag, or channel with views, likes, comments, duration, tags, and channel details — export to JSON, CSV, or Sheets.
A scraper for YouTube Shorts that discovers Shorts by keyword queries, hashtags, or channel identifiers and extracts per-Short metadata and engagement metrics. The connector crawls YouTube Shorts feeds and search results without requiring login or cookies, parses titles and descriptions for hashtags, captures creator-set tags, and extracts timestamps, duration, view/like/comment counts, channel identity, thumbnail links, declared audio/metadata language, and the source query or channel plus the Short’s rank. Results are de-duplicated across queries and channel feeds are returned newest-first; the output is structured as one record per Short containing metadata, engagement figures, tags/hashtags, language info, source attribution, and direct video links.
Verified Sep 28, 3:56 AM
$0.003
per short
Up to 100 per call. Only pay for results returned; failed calls are refunded.
Trend research
Identify which Shorts are gaining traction for a keyword or hashtag, sortable by views or upload date
Competitor analysis
Compile a channel’s Shorts catalog with engagement metrics to surface top-performing formats
Influencer discovery
Find creators posting Shorts in a niche and rank them by views and engagement
Content ideation
Mine titles, tags, and hashtags from top Shorts to inform content planning
Hashtag monitoring
Track new Shorts posted under a campaign or brand hashtag
Results building
Collect large labeled sets of Shorts metadata for analysis or model training
Keywords or hashtags to search Shorts for, one per line.
YouTube channels whose Shorts tab you want to scrape, one per line.
Optional settings
| Window | Uptime | Success rate | p50 | p95 | Calls |
|---|---|---|---|---|---|
| 24h | — | — | — | — | 0 |
| 7d | — | — | — | — | 0 |
| 30d | — | — | — | — | 0 |
Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.
Call it via Sourcelane
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"youtube-shorts-scraper","params":{"searchQueries":["vegan cooking","#homeworkout"],"maxItemsPerQuery":5},"maxResults":10}'Request params
| Field | Type | Required | Description |
|---|---|---|---|
searchQueries | array | optional | Keywords or hashtags to search Shorts for, one per line. Start an entry with # to search a hashtag (e.g. #vegancooking). Each entry is scraped up to Max Items per query. |
channels | array | optional | YouTube channels whose Shorts tab you want to scrape, one per line. Accepts a handle (@mkbhd), a channel URL, or a UC... channel ID. |
maxItemsPerQuery | integer | optional | Maximum number of Shorts to return for each search query, hashtag, or channel. Set 0 for as many as YouTube will return (up to 5,000 per query). Capped at 100 per call. |
sortBy | string | optional | Ordering of search and hashtag results. Channel Shorts tabs are always returned newest first. |
uploadedWithin | string | optional | Only return Shorts uploaded within this period. Applies to search queries and hashtags. |
Each result contains
| Field | Type | Description |
|---|---|---|
videoId | string | Video Id |
url | string | Url |
title | string | Title |
description | string | Description |
publishedAt | string | Published At |
durationSeconds | integer | Duration Seconds |
viewCount | integer | View Count |
likeCount | integer | Like Count |
commentCount | integer | Comment Count |
channelId | string | Channel Id |
channelTitle | string | Channel Title |
channelUrl | string | Channel Url |
thumbnailUrl | string | — |
tags | array | — |
hashtags | array | — |
language | string | — |
sourceType | string | — |
sourceQuery | string | — |
position | integer | — |
Pick your tool and connect in under a minute. Then just ask — for example: “Get the transcript of this video and turn it into a blog outline: <url>”
Connect Claude
Web, desktop and mobile. One click, then confirm.
Adds the Sourcelane MCP server with your key as a header.
claude mcp add --transport http sourcelane https://api.usesourcelane.com/mcp \
--header "Authorization: Bearer sl_live_your_agent_key"Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.
{
"mcpServers": {
"sourcelane": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.usesourcelane.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer sl_live_your_agent_key"
}
}
}
}Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).
{
"mcpServers": {
"sourcelane": {
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer sl_live_your_agent_key"
}
}
}
}Save as .vscode/mcp.json. VS Code prompts for your key once.
{
"servers": {
"sourcelane": {
"type": "http",
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer ${input:sourcelane-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "sourcelane-key",
"description": "Sourcelane agent key",
"password": true
}
]
}Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.
https://usesourcelane.com/openapi.jsonOne POST. Pass maxResults to cap cost.
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"youtube-shorts-scraper","params":{"searchQueries":["vegan cooking","#homeworkout"],"maxItemsPerQuery":5},"maxResults":10}'Wrap the REST call as a tool, or point an MCP client at the endpoint.
import requests
res = requests.post(
"https://api.usesourcelane.com/v1/call",
headers={"Authorization": "Bearer sl_live_your_agent_key"},
json={
"listing": "youtube-shorts-scraper",
"params": {"searchQueries":["vegan cooking","#homeworkout"],"maxItemsPerQuery":5},
"maxResults": 10,
},
timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])—
0 reviews
Leave a review
Loading reviews…