YouTube Search Results Scraper (videos, channels, no API key) avatar

YouTube Search Results Scraper (videos, channels, no API key)

Pricing

from $0.30 / 1,000 results

Go to Apify Store
YouTube Search Results Scraper (videos, channels, no API key)

YouTube Search Results Scraper (videos, channels, no API key)

YouTube Search Results Scraper returns videos, channels or playlists for any keyword, with title, views, duration, channel and publish time — no API key, no quota.

Pricing

from $0.30 / 1,000 results

Rating

0.0

(0)

Developer

Murat Uzun

Murat Uzun

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

What is YouTube Search Results Scraper?

YouTube Search Results Scraper runs any search term against YouTube and returns videos, channels or playlists — title, channel, view count, duration, upload time, thumbnail and more — as one clean row per result. It calls YouTube's own /youtubei/v1/search endpoint directly, the same one youtube.com's search page uses, so no YouTube Data API key and no daily quota are needed. Paste in your search queries, pick a result type, and run it on Apify with scheduling, API access and export built in.

What data does YouTube Search Results Scraper extract?

One row per matching video, channel or playlist:

FieldTypeDescription
query, positionstring, numberThe search term and this result's 1-based rank
type, id, urlstringvideo/channel/playlist and its ID and canonical URL
titlestringVideo title, channel name or playlist title
channelName, channelId, channelUrlstringThe owning/uploading channel
viewCountText, viewCountstring, numberRaw and parsed view (or "watching") count
publishedTimeText, publishedAtApproxstringRaw relative time ("6 months ago") and a best-effort resolved ISO date
durationText, durationSecondsstring, numberVideo length, null for live streams
thumbnailUrlstringLargest available thumbnail
descriptionSnippetstringExcerpt from the video description or channel bio
subscriberCountTextstringChannel results only, e.g. "25.2K subscribers"
videoCountnumberPlaylist results only, parsed from the "N videos" badge
isLive, badgesboolean, arrayLive-stream flag and labels like New, LIVE, 4K, CC
error, scrapedAtstringSet when a query failed completely; ISO timestamp

How to use YouTube Search Results Scraper

  1. Open the Input tab and list your Search queries, e.g. web scraping tutorial, apify.
  2. Pick a Result type — video, channel, playlist or all three mixed.
  3. Optionally set Upload date, Duration and Sort by to narrow the results.
  4. Set Max results per query (the Actor pages through YouTube's continuations to reach it) and click Start.
  5. Download the dataset as JSON, CSV, Excel or HTML from the Output tab, or pull it via the API.

Example input

{
"queries": ["web scraping tutorial", "apify"],
"type": "video",
"uploadDate": "any",
"sortBy": "relevance",
"duration": "any",
"maxResultsPerQuery": 50
}

Example output

{
"query": "web scraping tutorial",
"position": 1,
"type": "video",
"id": "hHQlcnubuFI",
"url": "https://www.youtube.com/watch?v=hHQlcnubuFI",
"title": "Learn Web Scraping in 5 Minutes (NO PRIOR KNOWLEDGE)",
"channelName": "CodeHead",
"channelUrl": "https://www.youtube.com/channel/UCFVteOob_YXJHPaGTqlDV2Q",
"viewCountText": "158,721 views",
"viewCount": 158721,
"publishedTimeText": "6 months ago",
"durationText": "4:53",
"durationSeconds": 293,
"descriptionSnippet": "Get Rid of IP Blocking for just $1 with DataImpulse: ...",
"isLive": false,
"scrapedAt": "2026-09-13T12:00:00.000Z"
}

Input parameters

ParameterTypeDefaultDescription
queriesarray["web scraping tutorial"]Search terms, one dataset slice per query
typestringvideoall, video, channel or playlist
uploadDatestringanyhour, today, week, month or year
sortBystringrelevancerelevance, date, views or rating
durationstringanyshort (<4 min), medium (4-20 min), long (>20 min)
maxResultsPerQueryinteger50Results per query, 1-1000
language, regionstringen, USSent to YouTube as hl/gl
maxConcurrencyinteger3Queries run in parallel

Which filters are verified vs. best-effort

Every filter value below was captured live against youtubei/v1/search and checked against the actual returned results, not copied from documentation:

  • Type (video/channel/playlist) — verified: each filter returns exclusively that renderer type.
  • Upload date (hour/today/week/month/year) — verified: tested against a high-volume query and every returned video's relative-time text fell inside the requested window.
  • Duration (short/medium/long) — verified: every returned video's length matched the bucket.
  • Sort by views — verified: results come back in a monotonically decreasing view-count order.
  • Sort by date and rating — not reliably honoured server-side as of this testing; YouTube's WEB client silently no-ops both values on this endpoint. For sortBy=date the Actor instead re-sorts the page(s) it already fetched by a parsed approximate publish date (client-side, best-effort — not a true site-wide "newest first"). sortBy=rating has no reliable substitute (YouTube no longer exposes like/dislike counts publicly) and is left in fetch order.

Playlists render as YouTube's newer lockupViewModel card rather than the legacy playlistRenderer; the Actor reads that shape (with a fallback for the old one). Channel results also carry a long-standing field-name swap in YouTube's own JSON: videoCountText actually holds the subscriber-count text and subscriberCountText holds the @handle — the Actor corrects for this internally so subscriberCountText in the dataset means what it says.

Pricing

YouTube Search Results Scraper uses pay-per-event pricing: $0.0005 per result row, i.e. $0.50 per 1,000 results, plus a negligible actor-start fee. A 50-result run across 10 queries costs about $0.25. Set Maximum cost per run and the Actor trims work to fit your budget instead of overspending.

YouTube Search Results Scraper vs. the YouTube Data API

The official YouTube Data API's search.list endpoint burns 100 quota units per call against a 10,000-unit daily default — about 100 searches a day, no more. This Actor talks to the same endpoint the youtube.com search page itself uses, with no API key, no OAuth and no quota ceiling, and returns a flat one-row-per-result dataset ready for a spreadsheet or a pipeline.

Using YouTube Search Results Scraper with AI agents and MCP

This Actor is pay-per-event with limited permissions — the two requirements for an Actor to be callable through the Apify MCP server at mcp.apify.com. An agent passes queries and gets back structured video/channel/playlist rows for competitive research, content discovery or lead sourcing, and the same run works from n8n, Make, Zapier and LangChain through Apify's integrations.

FAQ

Why is videoCount null for channel results? YouTube's search results page does not expose a channel's total video count anywhere in the response — only subscriberCountText. It's populated for playlists, parsed from the "N videos" thumbnail badge.

Why does publishedAtApprox look approximate? YouTube search only ever returns relative text like "6 months ago", never an exact timestamp, so the Actor resolves it against the scrape time as a best-effort midpoint — treat it as approximate, not authoritative.

Does sorting by date actually work? Not server-side, as documented above — see "Which filters are verified vs. best-effort".

Is this legal to run? Yes. It reads YouTube's own public search results page data, the same data any visitor's browser receives, and collects no personal data beyond what a channel or video owner already published.

What are the limitations? YouTube can change its internal JSON shape or filter encoding at any time without notice; if a run starts returning fewer fields than expected, please open an Issue.

Part of the webdatatools web-intelligence suite — every Actor is pay-per-event, reads public data without a login, and returns one clean row per entity:

Browse the whole suite at webdatatools, or call ten of these Actors straight from Claude, Cursor or Cline with the webdatatools MCP server.

Website & domain intelligence

Content for AI, LLMs and RAG

Search, video and social

Leads, jobs and company data

Developer, app and research data

Support and feedback

Found a query that returns unexpected results, or a field that's missing? Open an issue on the Issues tab.