YouTube Scraper
Pricing
from $2.49 / 1,000 results
YouTube Scraper
YouTube Scraper SD - YouTube Scraper is a powerful tool that extracts video titles, channels, views, durations, upload times and URLs from YouTube search results by keyword, filters, channel, playlist or video URL - YouTube search and video data extractor for research.
Pricing
from $2.49 / 1,000 results
Rating
0.0
(0)
Developer
Neuro Scraper
Maintained by CommunityActor stats
1
Bookmarked
6
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
YouTube Scraper - search results, channel videos and video data from YouTube
The YouTube Scraper collects YouTube videos the way you find them: by keyword search with YouTube's own filters, or from channel, playlist, video and search URLs. Each video becomes one clean row.
You get the title, URL, channel, view count, duration, upload time, thumbnail and description snippet. Switch on full details and the YouTube Scraper adds likes, exact views, full description, publish date, category, tags and chapters.
No login, no Google account and no YouTube Data API key or quota. The YouTube Scraper reads what any logged-out visitor sees.
What the YouTube Scraper does
Type the words you would type into the YouTube search box. The YouTube Scraper opens the results page, applies the filters you chose and then pages through the results until it has as many videos as you asked for.
Filters are YouTube's own: result type (Videos or Shorts), upload date, duration, features such as Live, 4K, HD or Subtitles, and the Relevance or Popularity order.
Add start URLs to mix in other sources. A channel URL gives the channel's videos, a playlist URL its videos, a video URL one detailed row, and a search URL is scraped as it is.
Who uses the YouTube Scraper
Marketers and SEO teams who track which videos rank for their keywords, and how many views the top results have.
Agencies and brands who research competitors, find creators in a niche, or monitor new uploads about a product.
Researchers and data scientists who need video datasets with titles, channels and view counts for analysis.
Developers who feed YouTube search data into dashboards, alerts or AI pipelines through the Apify API.
Input fields for the YouTube Scraper
Give searchTerms, startUrls, or both. Everything else has a default, so the YouTube Scraper runs on its first click with the prefilled search.
| Field | Type | Default | Meaning |
|---|---|---|---|
searchTerms | array | lofi music | Search terms, one per line |
startUrls | array | empty | Video, channel, playlist or search-results URLs |
maxResults | integer | 20 | Videos per search term and per channel, playlist or search URL |
maxItems | integer | empty | Optional cap for the whole run |
searchType | select | videos | videos, shorts, or all (no type filter) |
uploadDate | select | any | today, week, month, year |
duration | select | any | short (under 3 min), medium (3-20 min), long (over 20 min) |
features | multi-select | none | Live, 4K, HD, Subtitles/CC, Creative Commons, 360, VR180, 3D, HDR, Location, Purchased |
sortingOrder | select | relevance | relevance or popularity |
scrapeVideoDetails | boolean | false | Open each video's page for full details |
proxyConfiguration | object | Apify RESIDENTIAL, US | Proxy used for every request |
The filters apply to search terms. A search URL keeps the filters that are already in it.
Output of the YouTube Scraper
Every video row of the YouTube Scraper carries these fields. With scrapeVideoDetails on, the detail fields are added to each row.
| Field | Meaning |
|---|---|
videoId, url | Video id and link (/shorts/ link for Shorts) |
title | Video title |
channelName, channelId, channelUrl | Uploader channel |
viewCount, viewCountText | Views as a number and as YouTube shows them |
duration, durationSeconds | Length as text and in seconds |
publishedTimeText | Relative upload time, e.g. "2y ago" |
descriptionSnippet | Text snippet YouTube shows under the result |
thumbnailUrl | Largest thumbnail |
badges | Labels such as "New", "4K", "CC" |
isLive, isShort | Live stream / Short flags |
rank | Position in the results of that search or URL |
searchTerm, sourceType, sourceUrl | What produced the row |
scrapedAt | ISO timestamp |
| Detail fields | description, likes, commentCountText, publishDate, uploadDate, category, keywords, hashtags, channelHandle, channelSubscribers, chapters, captionLanguages ... |
Shorts found through the Shorts filter come with id, URL, title, view label and thumbnail only, because that is what YouTube lists for them. Turn on details to add channel, duration, likes and dates.
Export the YouTube Scraper dataset as CSV, JSON, Excel, XML or HTML, or read it through the Apify API.
Example row
{"videoId": "lTRiuFIWV54", "url": "https://www.youtube.com/watch?v=lTRiuFIWV54", "title": "1 A.M Study Session [lofi hip hop]", "channelName": "Lofi Girl", "viewCount": 136670672, "viewCountText": "136,670,672 views", "duration": "1:01:14", "durationSeconds": 3674, "publishedTimeText": "6y ago", "isShort": false, "rank": 1, "searchTerm": "lofi music", "sourceType": "search"}
How to run the YouTube Scraper
Open the YouTube Scraper, type your search terms, set maxResults, pick filters if you need them, and press Start. Results appear in the dataset as the run pages through YouTube.
For a list of known sources, leave the search empty and paste channel, playlist or video URLs into startUrls.
Turn on scrapeVideoDetails when you need likes, publish dates or full descriptions. It opens one extra page per video, so it is slower.
Measured speed of the YouTube Scraper
All numbers below come from local test runs of the YouTube Scraper on a home connection:
- 20 videos for "lofi music" in 3-4 seconds, from 2 result pages.
- 60 videos for "pubg mobile" with three filters (Videos, This week, Popularity) in 6-7 seconds, from 4 pages.
- 50 Shorts for "street food" with the Shorts filter in 3-4 seconds, from 3 pages.
- 13 rows from a channel, a playlist, a video and a search URL, all with full details, in 15 seconds.
The first results page of a Videos search held 21 videos in our test. Without a type filter, YouTube mixes regular videos with Shorts shelves on the same page.
How the YouTube Scraper works
The YouTube Scraper follows YouTube's own public web flow. It loads the results page and reads the page configuration from it: client version, visitor data, language and region.
Each filter is applied by following the link that the results page itself publishes for it. The YouTube Scraper never types a filter code into its source.
Further pages come from YouTube's internal search endpoint, called with that page's own context and the continuation token of the previous answer, until your limit or the end of the results.
Nothing is hardcoded, so a YouTube release does not silently break the YouTube Scraper. If a value cannot be read, the log names it and the run moves on to the next source.
YouTube Scraper limits, stated plainly
The YouTube Scraper sees what a logged-out visitor sees. Private videos, members-only videos and age-gated content that needs a login are out of reach.
YouTube decides how many results a search has. When it stops returning new pages, the YouTube Scraper stops too and logs why.
View counts on channel and playlist pages are YouTube's short labels ("2.7M"), converted to numbers. Search results usually show exact counts; full details always give the exact count.
Upload times in lists are relative ("2y ago"). For an exact date, switch on scrapeVideoDetails, which adds publishDate.
YouTube localises results to the country of the IP address; our local test runs were served as region BD. On the Apify platform the YouTube Scraper's default proxy is residential in the United States, so you get US results unless you pick another proxy country.
YouTube Scraper pricing
The YouTube Scraper uses pay-per-event pricing: you pay per dataset row (event "result"), plus the Apify platform usage of your run. The run stops at your maxItems or at the charge limit you set.
Free-plan users get up to 30 rows per run, which is enough to test the YouTube Scraper on real data. The current price per 1,000 results is on the Pricing tab.
Using the YouTube Scraper in a workflow
Schedule the YouTube Scraper to run daily for your keywords and you get a ranking history of the top videos for each term.
Send the dataset to Google Sheets, Slack or your database with the Apify integrations, or through Make, Zapier and n8n. A webhook can start your own automation when a run finishes.
Developers run the YouTube Scraper from Python or JavaScript with the Apify API client:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("neuro-scraper/youtube-comment-scraper").call(run_input={"searchTerms": ["electric cars"], "maxResults": 50, "uploadDate": "month"})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["rank"], item["viewCount"], item["title"])
The schema of a row does not change between runs, so an integration built today keeps working.
Keyword research with the YouTube Scraper
Run the YouTube Scraper for twenty related keywords with maxResults: 20, export to Excel, and sort by viewCount to see which topics pull the biggest audiences.
Group by channelName to find the creators who own a niche, then pass their channel URLs to the channel scraper below for their full profile.
Competitor monitoring with the YouTube Scraper
Put your competitors' channel URLs into startUrls with maxResults: 10. Each scheduled run of the YouTube Scraper returns their ten newest uploads with views and upload time.
Compare two runs a week apart and you see which new videos took off. The videoId field is stable, so joining runs in a spreadsheet or a database is a one-line match.
Mixing searches and URLs in one run
One run of the YouTube Scraper can hold many search terms and many URLs at once. Every row says where it came from in sourceType, searchTerm and sourceUrl.
A video that appears in two of your sources is stored once, the first time it is found, so the dataset has no duplicate videos.
Related scrapers
The YouTube Scraper is part of a family of YouTube and social media scrapers by the same developer.
| Actor | What it extracts |
|---|---|
| YouTube Comments Scraper | Comments and replies of any video |
| YouTube Channel Scraper | Channel profile, about data and all videos |
| YouTube Playlist Scraper | Every video of a playlist |
| YouTube Shorts Scraper | Shorts of a channel or a search |
| YouTube Transcript Scraper | Full transcripts with timestamps |
| YouTube Video Details Scraper | Exact views, likes, tags and chapters per video |
| YouTube Video Downloader | Video or audio files |
| TikTok Profile Scraper | Public TikTok profile data |
| Instagram Reels Scraper | Reels of public Instagram profiles |
| Facebook Reels Scraper | Reels of public Facebook pages |
| Facebook Video Details Scraper | Details of public Facebook videos |
| Amazon Scraper | Amazon products by keyword |
Leave a review
If the YouTube Scraper saved you time, please leave a star rating and a short review on the Actor page. It helps other users choose and tells me what to improve.
Found a problem? Open an issue with the run link and it will be fixed.
Frequently asked questions
Does the YouTube Scraper need a YouTube API key?
No. The YouTube Scraper does not use the YouTube Data API, so there is no API key and no daily quota. It reads public pages like a logged-out visitor.
How many results can the YouTube Scraper return for one search?
As many as YouTube serves for that search, page by page, up to your maxResults. In tests the YouTube Scraper collected 60 filtered results from 4 pages in 7 seconds.
Can the YouTube Scraper scrape YouTube Shorts?
Yes. Set searchType to shorts to use YouTube's Shorts filter, or all to keep Shorts shelves mixed with videos. Turn on full details to add likes and dates to each Short.
Can I scrape a whole channel with the YouTube Scraper?
Yes. Paste the channel URL into startUrls and set maxResults. For the channel's profile fields (country, joined date, total views, links) use the YouTube Channel Scraper.
Does the YouTube Scraper get likes and exact upload dates?
Yes, with scrapeVideoDetails on. It opens each video page and adds likes, exact views, publish date, category, tags, hashtags and chapters.
Which search filters does the YouTube Scraper support?
YouTube's own: Videos or Shorts, upload date, duration, features such as Live, 4K, HD and Subtitles, and Relevance or Popularity order. Each filter is read from the results page at run time.
Why do some view counts look rounded?
On channel and playlist lists YouTube shows short labels such as "2.7M". The YouTube Scraper converts them to numbers and keeps the label in viewCountText. Full details give the exact count.
Can I export YouTube search results to Excel or Google Sheets?
Yes. Export the dataset as Excel or CSV from the console, or connect Google Sheets through the Apify integrations so every run lands in a sheet.
What happens when a URL is wrong or a channel does not exist?
The YouTube Scraper logs a clear error for that source, for example "channel not found (HTTP 404)" or "playlist not found or private", and continues with the next one. One bad source never fails the run.
Do I need my own proxy for the YouTube Scraper?
No. The YouTube Scraper uses Apify's residential proxy by default. You can choose another proxy in the input.