YouTube Search Scraper — Keyword Results with Views avatar

YouTube Search Scraper — Keyword Results with Views

Pricing

from $2.00 / 1,000 search result scrapeds

Go to Apify Store
YouTube Search Scraper — Keyword Results with Views

YouTube Search Scraper — Keyword Results with Views

Search YouTube by keyword and export the results: video title, channel, views, duration and publish date. Sort by upload date, views or rating. No API key, no quota.

Pricing

from $2.00 / 1,000 search result scrapeds

Rating

0.0

(0)

Developer

Mohanad Alshaka

Mohanad Alshaka

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Search YouTube by keyword and export the results as structured data: title, channel, view count, duration and publish date. No API key, no quota, no login.

Every row records the query that produced it, so one run can cover many keywords and stay sortable afterwards.

Output

{
"query": "claude ai",
"videoId": "r2vYObllqJU",
"url": "https://www.youtube.com/watch?v=r2vYObllqJU",
"title": "Claude AI Tutorial for Beginners (Step-by-Step)",
"channelName": "Kevin Stratvert",
"channelId": "UC...",
"viewCount": 1058712,
"viewCountText": "1,058,648 views",
"lengthText": "8:37",
"lengthSeconds": 517,
"publishedText": "4 months ago",
"publishedApprox": "2026-05-...",
"description": "...",
"isLive": false
}

Paging is real, and it stops honestly

The first results page carries about 25 videos. Going deeper uses YouTube's internal continuation endpoint, which is refused from some datacenter IPs.

When that happens, paging stops cleanly and keeps what it already collected, logging how far it got. The query is not failed and the collected rows are still delivered. Verified live: 30 results per query over 2 pages.

Blocked queries are never charged

YouTube refuses some datacenter IPs with "Sign in to confirm you're not a bot", returned as a normal 200 page with no results. Billing for that would charge you for this Actor's IP being refused, so those rows are written with blocked: true and error: "blocked_by_youtube" and no event fires.

Set proxyConfiguration to Apify Proxy with RESIDENTIAL groups to avoid it.

Input

FieldWhat it does
searchQueriesKeywords. Each runs separately; rows are tagged with their query.
maxResultsPerQueryCap per query, and therefore on cost.
sortRelevance, upload date, view count or rating.
uploadDateLast hour, today, this week, month or year.
language / countryTwo-letter codes. Search results are regional.

One honest caveat on filters: YouTube encodes sort and upload-date in the same URL parameter, so they cannot both apply. Setting uploadDate overrides sort. A test asserts this rather than letting it surprise you, and an unrecognised value falls back to no filter instead of producing a broken URL.

Example

{
"searchQueries": ["claude ai", "apify scraper"],
"maxResultsPerQuery": 100,
"uploadDate": "month"
}

Notes and limits

  • Public search results only. No login, no cookies, no Google account.
  • View counts on search results are YouTube's displayed values and are exact for smaller videos, abbreviated for large ones. Both the number and the original string are returned.
  • Publish dates are relative on this surface ("4 months ago"), so publishedApprox is derived and approximate by definition. The original text is kept.
  • Paging is capped at 20 requests per query regardless of maxResultsPerQuery.

Development

npm install
npm test
node src/main.js