YouTube Scraper avatar

YouTube Scraper

Pricing

from $2.00 / 1,000 video results

Go to Apify Store
YouTube Scraper

YouTube Scraper

Scrape YouTube search results, videos, playlists and channels. Views, likes, comment count, description and exact date on every video, with YouTube's search filters. 2 USD per 1,000 videos, no minimum charge per run.

Pricing

from $2.00 / 1,000 video results

Rating

0.0

(0)

Developer

Brahim Sliti

Brahim Sliti

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

11 days ago

Last modified

Share

Search YouTube like you would in the search bar, or paste video, playlist and channel links, and get one row per video with views, likes, comment count, description, hashtags and the exact publish date.

YouTube's own search filters work here too: upload date, type, length and sort order.

What people use it for

  • Market and product research. Search "espresso machine review" and see which videos, channels and products get the views.
  • Brand monitoring. Search your brand or your competitors' every week and catch new videos about them.
  • Finding creators. Search a topic, sort by views, and get the channels behind the top videos.
  • Datasets for analysis or AI. Pull thousands of videos with their descriptions and engagement numbers.

How to use it

  1. Add Search terms, one per line, and/or Direct URLs (a video, a playlist, a channel or a YouTube search page).
  2. Set Max regular videos per search term / URL (default 10). Shorts and streams have their own limits, off by default.
  3. Optional, for search terms: Sorting order (relevance, rating, date, views), Date filter (last hour to last year), Video type and Length filter.
  4. Click Start. Export as JSON, CSV or Excel, or pull the results through the API.
{
"searchQueries": ["espresso machine review"],
"maxResults": 25,
"sortingOrder": "views",
"dateFilter": "month"
}

What you get

{
"id": "mAYbmcqPphc",
"title": "The Fellow ES1 Espresso Machine Review",
"url": "https://www.youtube.com/watch?v=mAYbmcqPphc",
"viewCount": 755016,
"likes": 70101,
"commentsCount": 3200,
"publishedAt": "2026-08-26T00:00:00.000Z",
"dateIsApproximate": false,
"duration": "34:16",
"durationSeconds": 2056,
"text": "In this video we review the Fellow ES1...",
"hashtags": ["#coffee", "#espresso"],
"channelName": "James Hoffmann",
"channelUrl": "https://www.youtube.com/@jameshoffmann",
"isChannelVerified": true,
"type": "video"
}
  • Likes, comment count, description, hashtags and the exact date are included on every video, at no extra cost. publishedAt is the publish DATE (YouTube doesn't give us the time of day on this product, so it's always midnight UTC); dateIsApproximate is false once we have that exact date, true when all we have is a relative text like "3 weeks ago".
  • input and fromYTUrl tell you which search term or URL each row came from.
  • commentsTurnedOff is true when the creator disabled comments.
  • Top comments (beta, free): set Top comments per video between 1 and 20 to add the first top comments of each video, with author, likes and reply count.

Pricing

2 USD per 1,000 videos, with likes, comment count, description and top comments included.

There is no minimum charge per run: a search returning 10 videos costs 0.02 USD. Error rows are free, and there's no monthly fee or Apify platform usage on top.

Example: 40 search terms with 25 videos each (1,000 videos) costs 2 USD.

Good to know

  • Subscriber count is only filled when the video came from a channel or video URL. YouTube's search results and playlists don't show it.
  • This actor doesn't download videos or subtitles. For captions, use our YouTube Transcript Scraper.
  • Need a channel's whole catalogue and its stats? Our YouTube Channel Scraper does it for 0.80 USD per 1,000.
  • You don't need a proxy, a YouTube account or a YouTube API key.

Use it from n8n, Make or an API

  • Small inputs: call run-sync-get-dataset-items and read the items back directly. Set Time budget (seconds) (default 240) to how long you are willing to wait: the actor stops starting new calls before that point and returns what it already has, so you never hit Apify's 300 second run-sync limit and lose the whole run. Any search term or URL left unfinished comes back as a TIME_BUDGET_EXCEEDED row instead of being silently dropped.
  • Big inputs: start the run with POST /v2/acts/vakitek~youtube-scraper/runs, poll GET /v2/actor-runs/<runId> (or add waitForFinish=60) until the status is SUCCEEDED, then read GET /v2/datasets/<datasetId>/items. Set Time budget (seconds) to 0 (no limit) for this pattern.

Errors

A bad input never crashes the run. It becomes a row with an error code, and you are not charged for it.

errorWhat happenedRetry?
NOT_FOUNDThe video, playlist or channel was deleted, is private or never existedNo
NO_RESULTSNothing matches your search and filtersNo
INVALID_INPUTAn option value is invalidNo
PARSE_ERRORYouTube changed its page and we could not read it; we fix these fast, open an issueNo
BLOCKEDYouTube refused us for now, usually age-restricted content, even after trying every proxy tierYes
UPSTREAM_ERRORSomething went wrong on YouTube's side or oursYes
UPSTREAM_UNAVAILABLEOur API was unreachableYes
TIME_BUDGET_EXCEEDEDThe time budget ran out before this search term or URL finishedYes

Some rows also carry a legacyError field with the old, pre-unification code name (for example VIDEO_NOT_FOUND, PLAYLIST_NOT_FOUND, CHANNEL_NOT_FOUND or LOGIN_REQUIRED) so a pipeline still matching on it keeps working while it migrates to error.

Reliability

Success rate, last 30 days: 98.9 % of 281 results across 31 runs (updated 2026-10-10). Failures counted: blocks, errors on our side, and runs that failed or timed out. Not counted: videos with no captions, private or deleted videos, bad links.

FAQ

Is this an alternative to the YouTube Data API? Yes, for public data. You don't need an API key and there's no daily quota: you pay per video returned.

I already use another YouTube scraper on Apify. Do I have to change my code? Probably not much. The input (searchQueries, startUrls, maxResults...) and most output fields follow the most used YouTube scraper on the Store. One difference: our date is the relative text YouTube shows ("1 month ago"), so use publishedAt for an ISO date.

Can I call it from my code or from an AI agent? Yes, like any Apify actor: REST API, the Python and JavaScript clients, or the Apify MCP server. The examples are in the API tab.

Something broke or a field is missing? Open an issue on this page. We read every one and usually answer within a day.