YouTube Scraper - Search, Channels, Playlists, Shorts, No Key avatar

YouTube Scraper - Search, Channels, Playlists, Shorts, No Key

Pricing

from $1.20 / 1,000 videos

Go to Apify Store
YouTube Scraper - Search, Channels, Playlists, Shorts, No Key

YouTube Scraper - Search, Channels, Playlists, Shorts, No Key

Returns YouTube videos from search terms, channels, playlists and video links in one run: title, exact views, likes, upload date, length, description, channel and subscribers. Whole channel histories, Shorts and live streams, exact date ranges. No API key, no login, no browser.

Pricing

from $1.20 / 1,000 videos

Rating

0.0

(0)

Developer

Ben

Ben

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

14 days ago

Last modified

Share

▶️ YouTube Scraper

Returns YouTube videos from search terms, channels, playlists and video links in one run, without an API key, a login or a browser. One row per video: title, exact views, likes, upload date, length, description, channel and its subscribers. It reads a channel's whole history, its Shorts and live streams, and cuts out an exact date range.

Price: $1.50 per 1,000 videos on the Apify Free plan, down to $1.20 from the Gold plan up. A channel, playlist or video that does not exist costs nothing. Export to JSON, CSV or Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

🔎 What is the YouTube Scraper?

YouTube's own pages load their lists from a few data endpoints: one for a channel's tabs and playlists, one for search, one for a single video. This Actor calls those endpoints directly. There is no quota as with the official YouTube Data API, and no browser to pay for: a run needs 512 MB of memory.

What data does it extract?

  • Video: id, link, title, type (video, Short or live), length, preview picture
  • Numbers: views and likes; the number of comments for videos given by link
  • Dates: the exact upload day, and the age the list shows ("3 weeks ago")
  • Text: the complete description
  • Channel: name, id, link, @handle, verified badge, subscribers
  • Source: the search term or link that led to the row, its type and the video's place in that list

What users of YouTube scrapers ask for, and what this Actor does

The issue pages of the two most used general YouTube Actors on Apify were read on October 4, 2026. These requests repeat:

Asked for thereHere
A real date range, and date filters that workpublishedAfter and publishedBefore are applied to the exact upload day. One channel's videos from September 1 to 15 came back as 5 rows in 4 seconds
More than the first 200 videos of a channelA tab is read to its end: 5,304 videos of one channel in 53 seconds
Shorts and live streamsChannel tabs you choose, or a link that ends in /shorts or /streams; every row says which type it is
Correct view countsExact views, likes and dates come from each video's own data, not from the rounded list
Playlists that return nothingPlaylists are read from YouTube's list endpoint, 100 videos a request; a playlist that does not exist is named in the status message
Charges without rowsOnly saved rows are charged

⬇️ Input

FieldTypeDefaultWhat it does
queriesarraySearch terms
urlsarrayChannels (link, @handle or UC… id), playlists, videos, Shorts and search result pages, in any mix
maxResultsinteger20Videos to save per search term, channel tab and playlist, up to 20,000
contentTypesarrayvideosChannel tabs to read: videos, shorts, streams
includeDetailsbooleantrueExact views, likes, upload day, full description and subscribers for every video. Off: list values only, several times faster
publishedAfterstringA day (YYYY-MM-DD) or a period back from now (7 days, 2 months)
publishedBeforestringUpper end of a date range (YYYY-MM-DD)
channelSortstringlatestlatest, popular or oldest
uploadedWithinstringanySearch filter: today, week, month, year
videoLengthstringanySearch filter: short (under 3 minutes), medium (3 to 20), long (over 20)
searchSortstringrelevancerelevance or popularity
minViewsintegerKeep videos with at least this many views

An empty input runs a sample search (python tutorial).

Example input

A search and two channels:

{
"queries": ["home workout"],
"urls": ["https://www.youtube.com/@NASA", "@veritasium"],
"maxResults": 100
}

Everything a channel uploaded in September, with its Shorts:

{
"urls": ["https://www.youtube.com/@NASA"],
"contentTypes": ["videos", "shorts"],
"publishedAfter": "2026-09-01",
"publishedBefore": "2026-09-30",
"maxResults": 500
}

A channel's whole video list, fast, without exact values:

{
"urls": ["https://www.youtube.com/@TED"],
"includeDetails": false,
"maxResults": 20000
}

The most viewed videos about a topic from this week:

{
"queries": ["openai"],
"uploadedWithin": "week",
"searchSort": "popularity",
"maxResults": 30
}

Coming from another YouTube Actor?

These input names of the two most used YouTube Actors are read as they are: searchQueries, startUrls, maxResults, maxResultsShorts, maxResultStreams, sortVideosBy, dateFilter, lengthFilter, sortingOrder, oldestPostDate, and keywords, youtubeHandles, maxItems. An input like this one runs here unchanged:

{
"searchQueries": ["Crawlee"],
"maxResults": 10,
"maxResultsShorts": 5,
"startUrls": [{ "url": "https://www.youtube.com/@LofiGirl" }],
"sortVideosBy": "POPULAR"
}

⬆️ Output

One row per video, the same columns in every row. A video given by link (the description is shortened here):

{
"id": "jNQXAC9IVRw",
"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"title": "Me at the zoo",
"type": "video",
"viewCount": 439934381,
"likes": 19992291,
"commentsCount": 10633160,
"date": "2005-04-23",
"publishedText": null,
"duration": null,
"durationSeconds": null,
"thumbnailUrl": "https://i.ytimg.com/vi/jNQXAC9IVRw/hqdefault.jpg",
"channelName": "jawed",
"channelId": "UC4QobU6STFB0P71PMvOGN5A",
"channelUrl": "https://www.youtube.com/channel/UC4QobU6STFB0P71PMvOGN5A",
"channelHandle": "@jawed",
"isChannelVerified": true,
"numberOfSubscribers": 6650000,
"text": "Microplastics are accumulating in human brains at an alarming rate …",
"playlistId": null,
"playlistTitle": null,
"position": null,
"input": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"inputType": "video",
"scrapedAt": "2026-10-04T14:02:41.600753+00:00"
}

A row from a search, a channel or a playlist also carries publishedText, duration, durationSeconds and its position in that list; a playlist row carries playlistId and playlistTitle. The names id, url, title, viewCount, likes, commentsCount, date, duration, thumbnailUrl, channelName, channelUrl, numberOfSubscribers and text are those of the most used YouTube Actor, so code written for it reads these rows. The run also writes a SUMMARY record that names the inputs that were not found and the reason a run stopped.

💰 What a run costs

Apify planPer 1,000 videos
Free$1.50
Bronze$1.40
Silver$1.30
Gold, Platinum, Diamond$1.20

Apify's standard start event ($0.00005) is the only other charge; proxies are included. The price is the same with and without exact values. Not charged: an input that does not exist, a video outside your date limits or below minViews. Set the run's maximum charge and the Actor stops at it with the rows it has saved.

⏱️ Measured (October 4, 2026)

RunVideosTime
Empty input (sample search, exact values)206 s
Two searches, a channel, its Shorts tab, a playlist and a video link5114 s
300 videos of one channel with exact values30049 s
One channel's whole video tab, list values only5,30453 s
A channel's videos and Shorts, list values only5015 s
A channel's uploads of September 1 to 1554 s
This week's most viewed videos for a search term309 s

🤖 For AI agents

Smallest useful call:

{"queries": ["home workout"], "maxResults": 20}

Each row is one video with title, url, viewCount, likes, date, duration, text, channelName and numberOfSubscribers. Put channel, playlist or video links into urls; both fields take several entries. Add "publishedAfter": "7 days" for recent uploads. An input that does not exist returns no rows; the status message and the SUMMARY record name it. No credentials are needed.

💡 Use cases

  • 📊 Channel and competitor analysis: every upload of a channel with views, likes and dates, to see what works.
  • 🔎 Topic and trend research: what ranks for a keyword, and what was uploaded about it this week.
  • 🤝 Creator sourcing: channels behind the top videos of a niche, with subscribers and handles.
  • 🧠 Datasets for models: titles and full descriptions of thousands of videos, with their numbers.

⚠️ Limits, stated plainly

  • A search ends after roughly 150 to 250 results. YouTube stops there. More terms and filters reach further, and the status message says when a search ended early.
  • No transcripts and no comment texts. The YouTube Transcript Scraper and the YouTube Comments Scraper return those.
  • Without exact values a row carries what the list shows: views rounded by YouTube and an age instead of a date, no likes and no description. publishedBefore needs exact values.
  • A video given by link comes without its length. The length is part of a list, not of the video's own data.
  • The number of comments is filled for video links only.
  • A date limit on a channel needs the order "latest". With "popular" or "oldest" the whole tab is read and filtered.
  • Subscriber counts are rounded by YouTube ("6.65M").
  • No dislikes, no video files, no channel "about" page.
  • A video link that leads nowhere is reported as not found and costs nothing.

❓ FAQ

Do I need a YouTube API key or an account? No. The Actor reads what YouTube shows a visitor.

How many videos can I get from a channel? All of them. A tab is read 30 videos per request to its end; 5,304 videos took 53 seconds without exact values, 300 videos with exact values 49 seconds.

How do I get only recent uploads? Set publishedAfter to a day or to a period such as 7 days. Put the run on a schedule for a daily list of new videos.

Can I mix searches, channels and playlists? Yes. Every row says in input and inputType where it came from.

Why are views in some rows rounded? With includeDetails off a row carries the list's values. Turn it on for exact numbers.

Does it return Shorts? Yes: choose shorts in contentTypes, or give a channel link that ends in /shorts. Searches return Shorts mixed in, marked by type.

What happens when a channel or video does not exist? It is named in the status message and costs nothing; the other inputs are read.

How do I call it from code? With the Apify API or the Python and JavaScript clients; every run returns a dataset you can fetch as JSON or CSV. It also works as a tool through Apify's MCP server.

Is it legal? The Actor reads public video data that YouTube shows to everyone without a login. Descriptions can contain personal data: GDPR, CCPA and similar rules apply to how you store and use it, and YouTube's terms apply to you as well.

🔗 You might also like

Keywords: youtube scraper, youtube video scraper, youtube channel scraper, youtube search scraper, youtube playlist scraper, youtube shorts scraper, youtube data api alternative, youtube views and likes export, youtube channel videos csv, youtube video metadata, youtube date range, youtube trending videos by keyword, no api key youtube scraper, youtube competitor analysis, youtube data for ai