Pricing
from $0.99 / 1,000 results
YouTube Search Scraper
Search YouTube videos, channels, and playlists. Filter by upload date, view count, length, live, shorts. Bulk-paginated.
Pricing
from $0.99 / 1,000 results
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Search YouTube by keyword and stream back structured results β videos, channels, and playlists β with built-in filters for upload date, view count, content type, and live/shorts.
Why use this actor
- No account / no API key required β just give it a query and the actor returns the same results YouTube shows on the web.
- Filter the way YouTube does β sort by relevance, upload date, view count, or rating; restrict to videos / channels / playlists; or narrow to today's or this week's uploads, live streams, or shorts.
- Mixed result types in one stream β videos, channels, and playlists are returned together, each tagged with a
typediscriminator so you can split them downstream. - No quota limits β unlike the official YouTube Data API, runs are not capped by a daily quota; pay only for the results you receive.
- Bulk queries in one run β pass a list of search terms; every record is tagged with
_inputand_filterso you can join results back to your input list. - Stable JSON output β every row carries
_input,_filter,_source,_scrapedAtenvelope fields, ready for pipelines, spreadsheets, and databases.
How it works
- You provide one or more search queries (e.g.
twice,python tutorial) and pick afilter. - The actor fetches search results the same way YouTube's web app does, then paginates with continuation tokens until it has gathered
maxResultsitems per query. - Results stream into your dataset as flat JSON records, ready to download as JSON, CSV, or Excel.
You do not need to manage scrapers, browsers, or rotating IPs β all handled internally.
Input
{"queries":["lofi hip hop","python tutorial"],"maxResults":20,"filter":"relevance","proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["DATACENTER"]}}
| Field | Type | Description |
|---|---|---|
queries | array | One or more search queries to run. Each query is processed independently. |
maxResults | integer | Maximum results returned per query. Pagination is automatic. Default: 20. Set to 0 for unlimited. |
filter | string | Filter / sort mode. See table below. Default: relevance. |
proxyConfiguration | object | Apify Proxy settings. Datacenter is the default and works well for search. |
filter options
| Value | What it does |
|---|---|
relevance | Default YouTube ranking (best match for the query). |
upload_date | Sort by newest upload first. |
view_count | Sort by most viewed first. |
rating | Sort by highest-rated first. |
video_only | Restrict results to videos. |
channel_only | Restrict results to channels β useful for influencer discovery. |
playlist_only | Restrict results to playlists. |
live | Currently live streams only. |
short | Videos under 4 minutes (catches most Shorts). |
today | Uploaded in the last 24 hours. |
this_week | Uploaded in the last 7 days. |
Output
Input: queries: ["twice"], maxResults: 5, filter: "relevance" β the actor returns a mixed stream of videos and channels:
{"type":"video","videoId":"i0p1bmr0EmE","title":"TWICE \"What is Love?\" M/V","channelTitle":"JYP Entertainment","channelId":"UCaO6TYtlC8U5ttz62hTrZgg","publishedTimeText":"8 years ago","lengthText":"3:44","viewCountText":"918,997,637 views","descriptionSnippet":"TWICE(νΈμμ΄μ€) \"What is Love?\" M/V Spotify https://goo.gl/jVLYYY iTunes & Apple Music https://goo.gl/DKyKZf Google Music ...","thumbnails":[{"url":"https://i.ytimg.com/vi/i0p1bmr0EmE/hqdefault.jpg?sqp=-oaymwEcCOADEI4CSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA8eBN8cI0jbqpUfPBbCVH7jph99A","width":480,"height":270}],"_input":"twice","_filter":"relevance","_source":"S1-primary","_scrapedAt":"2026-05-18T10:42:57.499074+00:00"}
{"type":"channel","channelId":"UCzgxx_DM2Dcb9Y1spb9mUJA","title":"TWICE","descriptionSnippet":"TWICE Official YouTube Channel.","subscriberCountText":"19.3M subscribers","thumbnails":[{"url":"https://yt3.googleusercontent.com/rj-m7CQIV8hIHx_lB8cjs0NxrDFJaUkVwZ5tCnZTNSVEr2IqXGF-2e7nr7og1IGeRXtHikce=s176-c-k-c0x00ffffff-no-rj-mo","width":176,"height":176}],"_input":"twice","_filter":"relevance","_source":"S1-primary","_scrapedAt":"2026-05-18T10:42:57.499074+00:00"}
{"type":"video","videoId":"FxkAkEaalB8","title":"TWICE (νΈμμ΄μ€) PLAYLIST 2025 [UPDATED]","channelTitle":"FEARLIX","channelId":"UCqNQp_VOtVjQBOR_OhrizMA","publishedTimeText":"10 months ago","lengthText":"2:52:07","viewCountText":"765,898 views","descriptionSnippet":"TWICE (νΈμμ΄μ€) is a nine-member girl group under JYP Entertainment, Formed through the reality show SIXTEEN. Group ...","_input":"twice","_filter":"relevance","_source":"S1-primary","_scrapedAt":"2026-05-18T10:42:57.499074+00:00"}
β¦ 2 more results in the same run.
Common fields (every row)
| Field | Type | Description |
|---|---|---|
_input | string | The query exactly as you supplied it. Use this to join results back to your input list. |
_filter | string | The filter value used for this run (e.g. relevance, upload_date). |
_source | string | Internal tag for the fetch path. S1-primary means the fastest, richest path; S2-* would indicate a fallback. |
_scrapedAt | string | ISO-8601 UTC timestamp when the record was scraped. |
type | string | Result type discriminator: video, channel, or playlist. |
Video fields (type: "video")
| Field | Type | Description |
|---|---|---|
videoId | string | YouTube video ID (the part after watch?v=). |
title | string | Video title. |
channelTitle | string | Display name of the channel that uploaded the video. |
channelId | string | Channel ID (starts with UC...). |
publishedTimeText | string | YouTube's localized upload time (e.g. "8 years ago", "3 days ago"). |
lengthText | string | Video duration as displayed (e.g. "3:44", "2:52:07"). |
viewCountText | string | View count as displayed (e.g. "918,997,637 views"). |
descriptionSnippet | string | Short description snippet shown under the result. |
thumbnails | array | Thumbnail URLs with width and height. |
Channel fields (type: "channel")
| Field | Type | Description |
|---|---|---|
channelId | string | Channel ID (starts with UC...). |
title | string | Channel display name. |
descriptionSnippet | string | Short channel description. |
subscriberCountText | string | Subscriber count as displayed (e.g. "19.3M subscribers"). |
thumbnails | array | Channel avatar URLs with width and height. |
Playlist fields (type: "playlist")
| Field | Type | Description |
|---|---|---|
playlistId | string | YouTube playlist ID. |
title | string | Playlist title. |
videoCount | string | Number of videos in the playlist. |
channelTitle | string | Display name of the channel that owns the playlist. |
Error envelope
Queries that fail to fetch return a structured error instead of crashing the run:
{"_input":"some query","_error":"fetch_failed","_errorDetail":"network error or upstream rejection","_source":"S1-primary","_scrapedAt":"2026-05-18T10:42:57.499074+00:00"}
Filter on _error to triage failed rows.
Pricing
This actor is billed per result: $3.50 per 1,000 results. Each video, channel, or playlist record = 1 result. Errors are not billed.
Other Sosmed Actors
| Platform | Actor | Best for |
|---|---|---|
| YouTube | YouTube Channel Scraper | Pull a channel's full upload list + metadata |
| YouTube | YouTube Video Detail Scraper | Full metadata, description, and stats for any video |
| Bluesky | Bluesky Search Scraper | Keyword search across the Bluesky timeline |
| Reddit Search Scraper | Search posts across all subreddits | |
| X / Twitter | X Search Scraper | Keyword search across X posts |
| Tumblr | Tumblr Blog Scraper | Pull posts from any Tumblr blog |
Browse the full catalog at apify.com/xtracto.
Notes
- Result freshness β YouTube ranks search results dynamically; the same query rerun a few minutes later may return a slightly different order. Use
_scrapedAtto track when each row was captured. - Pagination β the actor chains continuation tokens automatically until
maxResultsis reached or YouTube returns no more pages. Very largemaxResultsvalues for narrow queries may end early simply because YouTube has no more results to give. - Why filters help β
relevanceis broad and noisy for popular keywords. For trend monitoring,todayorthis_weekgive you only fresh uploads; for influencer discovery,channel_onlystrips out the videos; for view-driven research,view_countputs the biggest hits first. - Counts as text β
viewCountText,subscriberCountText, andpublishedTimeTextare returned as YouTube's localized strings ("918,997,637 views","19.3M subscribers","3 days ago"). Parse these client-side if you need numeric values. - No deduplication β the actor does not deduplicate by
videoId/channelId/playlistIdacross pages; downstream pipelines should dedupe if strict uniqueness is required.
