YouTube Search Scraper - Keyword to Video Rows, No Browser avatar

YouTube Search Scraper - Keyword to Video Rows, No Browser

Pricing

$0.50 / 1,000 video row delivereds

Go to Apify Store
YouTube Search Scraper - Keyword to Video Rows, No Browser

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.

Pricing

$0.50 / 1,000 video row delivereds

Rating

0.0

(0)

Developer

Lee Kung

Lee Kung

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

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 status and an error, 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 into leekung125/youtube-transcript-scraper for the text, or leekung125/youtube-channel-transcripts for whole channels. They are built to chain.
  • Agent tooling — one call turns a question into a list of real videos with metadata.

Input

fieldwhat it does
queriesSearch terms. Also accepts a pasted youtube.com/results?search_query=… URL, and tolerates a leading search: so inputs are portable from our channel Actor.
maxResultsPerQueryRows per term, up to 1000. Default 20.
minViewsDrop results below a view count.
minDurationSeconds / maxDurationSecondsLength window. 61+ excludes Shorts; max 60 keeps only Shorts.
skipLiveAndUpcomingExclude live streams and premieres.
country / languageTwo-letter country code and language hint to bias results.
maxRetriesAttempts before a query is reported failed. Default 3.
proxyConfigurationResidential 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.