YouTube Search Scraper - Keyword to Video Rows, No Browser
Pricing
$0.50 / 1,000 video row delivereds
YouTube Search Scraper - Keyword to Video Rows, No Browser
Search YouTube by keyword and get one row per result: title, channel, views, duration, publish date, URL and the rank it held. HTTP only, no headless browser. Charged per row delivered.
YouTube Search Scraper — a keyword in, ranked video rows out, no browser
Search YouTube the way a person would and get the results as data: one row per video, with the rank it held for that query, title, channel, views, duration, publish date, thumbnail and URL. Give it a plain search term, several terms, or a pasted YouTube results URL. Get JSON, CSV or Excel back, or call it from the API, a schedule, an integration or an AI agent.
- HTTP only — there is no headless browser in this Actor. It talks to YouTube's own search
endpoint through
yt-dlp's flat extractor. That is a design choice with a specific consequence, explained below. - Charged per row delivered. A query that returns nothing costs nothing. A query that fails
after its retries is written out as a row with a
statusand anerror, and is not charged. - Rank is preserved. Most tools hand back an unordered bag of videos. The position a video held for your query is the whole point if you are tracking visibility, so it is a first-class field.
Use it for
- Keyword and visibility research — who ranks for the terms your audience actually searches, and at what position.
- Competitor monitoring — schedule it weekly on a set of terms and watch the ranking move.
- Building a corpus — search, then feed the
video_ids straight intoleekung125/youtube-transcript-scraperfor the text, orleekung125/youtube-channel-transcriptsfor whole channels. They are built to chain. - Agent tooling — one call turns a question into a list of real videos with metadata.
Input
| field | what it does |
|---|---|
queries | Search terms. Also accepts a pasted youtube.com/results?search_query=… URL, and tolerates a leading search: so inputs are portable from our channel Actor. |
maxResultsPerQuery | Rows per term, up to 1000. Default 20. |
minViews | Drop results below a view count. |
minDurationSeconds / maxDurationSeconds | Length window. 61+ excludes Shorts; max 60 keeps only Shorts. |
skipLiveAndUpcoming | Exclude live streams and premieres. |
country / language | Two-letter country code and language hint to bias results. |
maxRetries | Attempts before a query is reported failed. Default 3. |
proxyConfiguration | Residential by default on the platform, which is what keeps results stable when an IP is rate-limited. |
⛔ A missing field is never treated as a failed filter. YouTube does not report a view count or duration for every result. If a filter is set and the value is unknown, the row is kept — because silently dropping most of a result set is worse than returning a row with a blank column.
Output
One object per video:
{"type": "video","status": "ok","query": "best budget espresso machine","rank": 1,"video_id": "…","url": "https://www.youtube.com/watch?v=…","title": "…","channel": "…","channel_id": "…","channel_url": "…","view_count": 63582,"duration_seconds": 752,"published_at": "2026-04-11T00:00:00+00:00","live_status": null,"thumbnail": "…"}
Failed or empty queries appear as {"type": "query", "query": …, "status": "error" | "no_results"}.
A run summary is written to the key-value store under SUMMARY.
Why "no browser" is in the title
It is the only reliability claim made anywhere on this page, and it is architectural rather than
promotional — you can verify it by reading my_actor/main.py.
Apify publishes 30-day run statistics for every public Actor. For the leader of the adjacent Google Trends niche, those read: 22,102 runs, 62.4% succeeded, and the single largest failure bucket is TIMED-OUT at 24.4% — the signature of a headless browser dying under load. An Actor with no browser in it cannot fail that way.
⛔ What is deliberately NOT claimed: any measured uptime advantage for this Actor. It is new, its run count is small, and quoting that as evidence of reliability would be dishonest. The architectural statement is checkable today; a statistical one will have to wait until there is a real sample.
What it does not do
It does not download videos, and it does not fetch transcripts. Transcripts are a separate product because they are a separate job — see the two Actors linked above. Nothing here requires a YouTube account, an API key or a quota.