YouTube Scraper - Search Results, Channels & Playlists
Pricing
from $0.13 / 1,000 videos
YouTube Scraper - Search Results, Channels & Playlists
YouTube scraper for search results or a channel's newest uploads. Each row has the videoId, title, watch URL, channel, thumbnail, and the views, age and runtime exactly as YouTube prints them ("4 years ago", "34,811,276 views"). $0.135 per 1,000 videos.
Pricing
from $0.13 / 1,000 videos
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
10
Monthly active users
15 hours ago
Last modified
Categories
Security
Limited permissionsShare
YouTube scraper for search results, channel uploads, playlists and past live streams: give it keywords, channels, links, or all three, and you get one flat row per video with the id, title, watch link, channel, views, age, runtime and thumbnail, plus the views and length as numbers.
The part that surprises people on run two: the figures are the ones a results page prints. viewCount is
"34,811,276 views" read as a number, which is exact on search rows, but a channel page prints "88M views", so
those rows carry YouTube's rounding and say so in viewCountIsApproximate. Dates stay as "4 years ago".
| Input | Keywords, channel links, @handles, UC ids, playlist links or YouTube search links |
| Output | One row per video: id, title, link, channel, views as text and number, age, runtime in seconds, thumbnail, hashtags, channel link and handle; channel rows add subscribers, total views, joined date and country |
| Ceiling | 1,000 videos per keyword, per channel and per playlist |
| Account needed | None |
| Price | $0.135 per 1,000 videos on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 37,000 |
🔍 What YouTube Scraper does
Three ways in, same row shape. A keyword runs a YouTube search, with any of YouTube's own filters. A channel
returns its newest uploads, or its most viewed or oldest, plus its Shorts and past streams if you ask. A link
returns that playlist or search. Mix them in one run and the rows come back together, with mode and
sourceInput telling you which produced each one.
Results are deduplicated by videoId across the whole run, so a video found twice is returned once and billed
once. maxItems is per keyword, per channel and per playlist, not per run.
📋 What data you get from each YouTube video
| What you get | Field |
|---|---|
| The 11 character video id and the watch link | videoId, url |
| Title and hashtags | title, hashtags |
| Who uploaded it | channelName, channelId, channelUrl, channelHandle, channelVerified, channelAvatar, collaborators |
| Views, as printed and as a number | viewCountText, viewCount, viewCountIsApproximate |
| Age and runtime | publishedTimeText, lengthText, lengthSeconds |
| What kind of row | type (video, live, upcoming, short, movie), isLive, isMembersOnly, recordType, mode |
| Which input produced it, and where | sourceInput, position, channelTab |
| The largest thumbnail on offer | thumbnail |
| Channel facts (channel rows, or search rows with Add channel facts) | channelSubscriberCount, channelVideoCount, channelBanner; channel rows also channelTotalViews, channelJoinedDate, channelCountry, channelDescription, channelLinks |
| Comment count add-on | commentCountText, commentCount, commentCountIsApproximate, commentsTurnedOff |
▶️ How to scrape YouTube videos
- Open YouTube Scraper and click Try for free.
- Type keywords into Search queries, paste channels into Channel URLs / handles, or links into YouTube links.
- Set Max videos per query / channel. Start at 50 while you look at the output.
- Pick any filters or extras you want, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it over the Apify API.
Give it nothing to read and you get one uncharged row telling you so.
💰 How much does it cost to scrape YouTube videos?
$0.135 per 1,000 videos on the Free plan. Paid plans pay a little less: $0.133 on Starter, $0.131 on Scale and $0.129 on Business. On the free plan, the $5 Apify gives you each month covers about 37,000 videos.
You pay per row delivered; the filters and Add channel facts cost nothing extra. A channel search bills each channel row like a video row. Diagnostic rows, duplicates and rows a filter leaves out are never billed. The comment count and channel profiles are optional add-ons.
📥 What you give it
{"searchQueries": ["lofi hip hop"],"channelUrls": ["https://www.youtube.com/@LofiGirl"],"startUrls": [{ "url": "https://www.youtube.com/playlist?list=PL6NdkXsPL07Il2hEQGcLI4dg_LTg7xA2L" }],"maxItems": 50,"uploadDate": "month","channelSort": "popular"}
| Field | Default | What it is |
|---|---|---|
searchQueries | none | Keywords, one per line. The form opens with lofi hip hop as an example. |
channelUrls | none | Channel links, @handles or bare UC ids. If one will not resolve, pass the full link or the UC id. |
startUrls | none | Playlist links, search results links (their filters apply) or channel links. Upload a text file or a Google Sheet shared with anyone who has the link. Single video links are not read. |
maxItems | 50 | Per keyword, channel and playlist, 0 to 1,000. Also your spend cap. 0 skips them, for runs that only want Shorts, streams or profiles. |
includeChannelFacts | false | Subscriber count, video count, banner and handle on search and playlist rows, one lookup per channel. |
includeCommentCount | false | Optional add-on: the comment count as YouTube shows it, and whether comments are off. |
channelProfilesOnly | false | Optional add-on: one row per channel about the channel, no videos. |
uploadDate | any | hour, today, week, month or year. Searches only. |
duration | any | short (under 3 minutes), medium (3 to 20) or long (over 20). Live streams have no length, so they are left out. |
features | none | Any of hd, 4k, live, subtitles, creativeCommons, 360, vr180, 3d, hdr, location, purchased. All must match. |
searchType | videos | channels gives one row per channel, movies the films YouTube sells or rents. |
searchCountry, searchLanguage | US, en | Who the search is made for. In another language the numbers worked out from YouTube's text come back empty. |
channelSort | latest | popular or oldest, for the Videos tab. |
publishedAfter | none | A day like 2026-10-01 or 30 days. Channel videos and streams only. |
maxStreams, maxShorts | 0 | Past live streams and Shorts per channel, each with its own limit. |
notionConnector, notionParentId | none | Optional. Write each video into a Notion database as well. |
proxyConfiguration | none | Optional. Leave it empty unless you have your own servers you want the run to go out through. |
A filter value the run does not know is refused at the start with one free row, never ignored.
📤 What you get back
A real row from a run on 24 October 2026, with the thumbnail and avatar links trimmed:
{"ok": true,"videoId": "CLeZyIID9Bo","title": "Chill Lofi Mix [chill lo-fi hip hop beats]","url": "https://www.youtube.com/watch?v=CLeZyIID9Bo","channelName": "Settle","channelId": "UCkKT4qf-TcPFOmpqhTawrGA","viewCountText": "35,075,027 views","publishedTimeText": "4 years ago","lengthText": "1:44:52","thumbnail": "https://i.ytimg.com/vi/CLeZyIID9Bo/hq720.jpg?sqp=...","mode": "search","viewCount": 35075027,"viewCountIsApproximate": false,"lengthSeconds": 6292,"sourceInput": "lofi hip hop","position": 4,"channelUrl": "https://www.youtube.com/channel/UCkKT4qf-TcPFOmpqhTawrGA","channelHandle": "@settlefm","type": "video","isLive": false,"hashtags": [],"channelVerified": false,"channelAvatar": "https://yt3.ggpht.com/89HydDCrVDqoTZbqoX...","collaborators": null,"isMembersOnly": false,"recordType": "video"}
| Field | How to read it |
|---|---|
viewCount | A number. viewCountIsApproximate: true means YouTube printed a rounded figure like 88M views. Null on a live stream, which shows viewers, not views. |
position | Where the video sat in that keyword's results or that channel's list, counting from 1. |
channelHandle | Filled when the row carries it; search rows from some big channels carry only the UC id unless Add channel facts is on. |
collaborators | Set on a collaboration, whose byline has no single channel. channelId is empty on those rows. |
channelSubscriberCount | YouTube's own rounding for big channels, as on the page. |
🧾 Reading the output
| Row | How to spot it | Billed |
|---|---|---|
| A video | ok: true, recordType: "video" | yes |
| A channel from a channel search | ok: true, recordType: "channel" | yes, like a video |
| A channel profile | ok: true, recordType: "channelProfile" | an add-on |
| A diagnostic | ok: false and an errorCode | no |
Filter on ok == true and you have your data. A failed keyword, channel or link gets its own row and the run
carries on.
| Code | What it means |
|---|---|
BAD_INPUT | An input or link could not be used, a single video link was given, or the input named nothing. |
NOT_FOUND | YouTube has no channel at that address. |
NO_RESULTS, NO_VIDEOS | A search, playlist or channel gave nothing, or nothing matched your filters. |
SORT_NOT_AVAILABLE, SORT_NOT_APPLIED | The channel order you asked for was not offered or not applied, so that channel's Videos tab gave no rows. |
FILTER_UNCHECKED | A pasted search link carried a filter the run cannot check. |
RATE_LIMITED, SERVER_ERROR, NETWORK | That target would not answer this run. Re-running usually clears it. |
NOT_SERVED | This video was not served this run. Re-run it later. Runs before 13 October 2026 wrote BLOCKED here, and runs from 13 to 17 October wrote NETWORK. |
TIME_LIMIT | The run got close to its time limit and stopped on its own. The videos delivered before that are in the dataset and charged as usual. Give the run more time, or ask for fewer videos, to get the rest. |
A run still ends as succeeded, with an amber status message, even when the time limit stopped it before any video came back. The Overview table shows video columns only, so a diagnostic row reads as a blank line there.
💡 What people use it for
- Watching what ranks for a keyword this week, with
positionsaved next to each video. - Pulling a channel's most viewed videos, or everything since a date, for a pitch or a review.
- Turning a list of playlists into one table of videos with their channels.
- Finding the channels behind a topic, with their subscriber counts, through a channel search.
From a keyword to what is said and what viewers say back, in three runs:
- Search a keyword here and copy the
urlcolumn of the videos you care about. - Paste those links into the Video URLs or IDs box of YouTube Transcript Scraper to get what each video says.
- Paste the same links into the Video URLs box of YouTube Comments Scraper to read the replies.
🚧 What it does not do
- No exact view counts on channel rows, no likes and no real dates. A channel page prints
"88M views"and"4 years ago", and that is what comes back. - No single video links. It reads searches, channels and playlists.
- Search skips Shorts and playlists that appear between ordinary results; Shorts come from a channel's Shorts tab.
- No comment text, transcripts or subtitles. Those live in the actors in the table below.
- Comment counts are rounded. Signed out, YouTube shows
4.1K, not the exact figure. - No search order. Results come in YouTube's relevance order.
- Very large limits come back short. 1,000 is the most, and a big number often stops before it.
- It is not an official YouTube tool. Dami's Studio is independent and is not affiliated with or endorsed by YouTube or Google, or by any other company named on this page.
🧭 Which YouTube scraper do you need?
| If you want | Use |
|---|---|
| Keyword search results, a channel's videos, Shorts and streams | This one |
| A channel's uploads, with a higher ceiling per run | YouTube Channel Scraper |
| Shorts from a keyword, with exact view and like counts | YouTube Shorts Scraper |
| Videos in a playlist | YouTube Playlist Scraper |
| The most-viewed videos for a topic | YouTube Trending Scraper |
| Comments under a video | YouTube Comments Scraper |
| What a video says, as text, SRT and VTT | YouTube Transcript Scraper |
| The video, its audio or its subtitles as a file | YouTube Downloader Pro |
❓ Questions people ask
Do I need a YouTube or Google account?
No. Nothing here is signed in.
Is maxItems per run?
No, per keyword, per channel and per playlist. Three targets at 50 is up to 150 rows.
Can I get exact YouTube view counts?
On search rows viewCount is already the exact figure the results page prints. Channel and playlist pages print
rounded figures. YouTube Shorts Scraper returns exact view and like counts for Shorts.
Why is channelId empty on some rows?
Search rows whose byline is a collaboration carry no single channel. collaborators lists the channels instead.
Can I call it from code or connect it to an AI assistant?
The API tab has code for Python, JavaScript and the CLI.
MCP clients like Claude and ChatGPT use
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/youtube-scraper; coding assistants can load our skill
file. All three bill your
Apify account at the same price.
Is scraping YouTube legal?
This reads public search results, public channel pages and public playlists, nothing signed in. Results can still contain personal data, which GDPR and similar laws cover, so have a reason for collecting it. YouTube's own terms still apply to what you do with it. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Include the keyword, channel or link you used and the run ID, and the log is enough for us to see what happened.