# YouTube Scraper: extract videos, channels, comments and transcripts

Apidojo YouTube Scraper is a no-login YouTube data API that collects videos from channels, playlists, keyword searches, Shorts and trending lists. It costs $0.50 per 1,000 videos, runs at 10 to 19 videos a second, needs no YouTube API key, Google Cloud project or OAuth consent, and exports JSON or CSV.

[Run your first channel](https://apify.com/apidojo/youtube-scraper)

[See sample output](#output)

Free Apify plan: 5 runs a month, 10 items a run. No credit card.

**$0.50** per 1,000 videos

**10–19/s** videos, published range

**0 quota** no API key or OAuth

**$0.001** per transcript

Transcripts run on YouTube Transcript Scraper, a sibling actor. Everything else is the main scraper. Read on 21 September 2026.

## What are the YouTube Scraper specifications?

YouTube Scraper accepts 5 URL types, @handles, keyword searches and a trending switch, shaped by 6 filters. Each video returns metadata, engagement counts, a channel object, thumbnails, streaming formats and the caption track list, exported as JSON or CSV.

**Data surfaces on YouTube:** Videos, channels, playlists, Shorts, keyword searches and trending lists

**Inputs:** startUrls, youtubeHandles, keywords, getTrending, includeShorts, maxItems, customMapFunction

**Filters:** gl (country), hl (language), uploadDate, duration, features, sort

**Price:** $0.50 per 1,000 videos, flat, with no per-query fee

**Speed:** 19 videos/sec on search URLs, 16 on channels, 14 on playlists, 10 on keyword searches

**Countries and languages:** gl and hl take the codes YouTube itself uses; defaults us and en

**Date filter:** uploadDate, Any, Last hour, Today, This week, This month, This year. Keyword searches only

**Sort:** Relevance, Rating, Upload date, View count. Keyword searches only

**Caption text:** Not from this scraper. It returns the caption track list. Text comes from YouTube Transcript Scraper

**Minimum per input:** 10 videos per keyword, handle or start URL

**Inputs per run:** Up to 5 keywords, handles or URLs in one run, per the README

**Export formats:** JSON and CSV, per the README. Other Apify export formats are platform features

**YouTube API key or OAuth:** Not required. No Google Cloud project either

**Free plan:** Demo mode, 5 runs per month, 10 items per run

## What does YouTube Scraper output look like?

YouTube Scraper output is one JSON object per video, carrying the ID, title, URL, duration in seconds, views, likes, publish date, live and family-safe flags, a nested channel object, thumbnails, streaming formats and the caption track list.

**Keyword search**

**Channel**

**Comments**

**Transcript**

Runs on apidojo/youtube-scraper

uploadDate and sort only apply here. On a channel or URL run they are ignored.

Input

```
{
  "keywords": ["machine learning tutorial"],
  "uploadDate": "w",
  "sort": "v",
  "gl": "us",
  "hl": "en",
  "maxItems": 200
}
```

Output

```
{
  "type": "video",
  "id": "wwSzpaTHyS8",
  "title": "Did The Future Already Happen?",
  "duration": 755,
  "views": 6501854,
  "likes": 282499
}
```

Runs on apidojo/youtube-scraper

A handle or channel URL returns that channel’s videos, each with the channel object.

Input

```
{
  "youtubeHandles": ["@kurzgesagt"],
  "includeShorts": true,
  "maxItems": 300
}
```

Output

```
"channel": {
  "id": "UCsXVk37bltHxD1rDPwtNM8Q",
  "name": "Kurzgesagt – In a Nutshell",
  "url": "http://www.youtube.com/@kurzgesagt"
}
```

Runs on apidojo/youtube-comments-scraper

A sibling actor. Counts arrive as display strings, "3.4K", "5 months ago", so parse before sorting.

Input

```
{
  "startUrls": [
    "https://www.youtube.com/watch?v=xuCn8ux2gbs",
    "https://www.youtube.com/shorts/vVTa1_hm4n4"
  ],
  "sort": "top",
  "includeReplies": false,
  "maxItems": 1000
}
```

Output

```
{
  "text": "This one hit you in the feels? …",
  "likeCount": "3.4K",
  "replyCount": "8",
  "publishedTime": "5 months ago",
  "author": { "id": "UCa90xqK2odw1KV5wHU9WRhg", "name": "@TheOffice" }
}
```

Runs on apidojo/youtube-transcript-scraper

Also a sibling actor. Timed lines, and the list of every caption language the video has.

Input

```
{
  "startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
  "lang": "en"
}
```

Output

```
{
  "type": "transcript",
  "id": "dQw4w9WgXcQ",
  "transcript": [
    { "text": "Welcome back to the channel…", "dur": "3.52", "startTime": "0" },
    { "text": "Let's take a closer look…", "dur": "2.87", "startTime": "3.6" }
  ],
  "selected": { "title": "English (auto-generated)", "languageCode": "en" }
}
```

### What the fields are

-   #### Video metadata

    ID, title, URL, description, duration in seconds, publish and upload dates, live, private and family-safe flags

-   #### Engagement

    View count and like count

-   #### Channel

    Channel ID, display name and channel URL on every video

-   #### Media and captions

    Thumbnails, embed URL, streaming formats, and the caption track list with language codes

| Field | Type | Example value | Group |
| --- | --- | --- | --- |
| type | string | video | Metadata |
| id | string | wwSzpaTHyS8 | Metadata |
| title | string | Did The Future Already Happen? | Metadata |
| url | string | https://www.youtube.com/watch?v=wwSzpaTHyS8 | Metadata |
| description | string | Go to brilliant.org/nutshell to dive deeper… | Metadata |
| duration | integer (seconds) | 755 | Metadata |
| publishDate | string | Jan 30, 2024 | Metadata |
| uploadDate | string | Jan 30, 2024 | Metadata |
| status | string | OK | Metadata |
| views | integer | 6501854 | Engagement |
| likes | integer | 282499 | Engagement |
| isLive | boolean | false | Flags |
| isPrivate | boolean | false | Flags |
| isFamilySafe | boolean | true | Flags |
| channel.id | string | UCsXVk37bltHxD1rDPwtNM8Q | Channel |
| channel.name | string | Kurzgesagt – In a Nutshell | Channel |
| channel.url | string | http://www.youtube.com/@kurzgesagt | Channel |
| thumbnails[] | array (url, width, height) | 1920 × 1080 | Media |
| embedUrl | string | https://www.youtube.com/embed/wwSzpaTHyS8 | Media |
| streamingData.formats[] | array | itag 18 · 360p · video/mp4 | Media |
| captions.captionTracks[] | array (name, language_code) | English · en | Captions |
| captions.translationLanguages[] | array | Afrikaans · af | Captions |

## Which Apidojo YouTube scraper fits your job?

Apidojo publishes 7 YouTube scrapers. YouTube Scraper collects videos from channels, playlists, searches, Shorts and trending at $0.50 per 1,000, and six single-job scrapers handle transcripts, comments, channel profiles, channel videos, playlists and trending lists, each billing a small fee per query on top of the same per-video rate.

### YouTube Scraper

`apidojo/youtube-scraper`

30.2K users · 3.3 (22)

The main scraper. Collects videos from channel URLs and @handles, playlists, keyword searches, Shorts and the trending list, with country, language, date, duration, feature and sort filters.

-   Channels, playlists, searches, Shorts, trending
-   Six filters, two of them search-only
-   10–19 videos per second
-   Caption track list on every video
-   Flat rate, no query fee, no free-item maths
-   Minimum 10 videos per input

**$0.50 / 1,000 videos** Pay per result, no per-run fee

[Open YouTube Scraper](/scrapers/youtube-scraper/) [See query types](#reference)

### YouTube scrapers for a single job

-   [YouTube Transcript Scraper `apidojo/youtube-transcript-scraper` The full transcript of a video as timed lines, from a youtube.com or youtu.be watch URL, in the language you set with lang. text, startTime and dur per line · Every available caption language listed · Videos without a transcript are skipped and not charged $0.001 / transcript 17 users · new · New](/scrapers/youtube-transcript-scraper/)
-   [YouTube Comments Scraper `apidojo/youtube-comments-scraper` Comments from video and Shorts URLs, sorted Top or Latest, with the commenter’s channel ID and name. Reply threads are added with includeReplies. Around 20 comments included per video · 251 comments/sec on videos, 267 on Shorts · Each reply thread billed as its own query $0.001 / video + $0.50 / 1K 3K users · 4.8 (12)](/scrapers/youtube-comments-scraper/)
-   [YouTube Channel Info Scraper `apidojo/youtube-channel-information-scraper` Channel profiles rather than videos, from channel URLs, @handles or a keyword search across channels. Subscriber and video counts, description, tags · Verified, artist and family-safe flags; available countries · 166 channels per second $0.005 / URL · $0.001 / search + $0.50 / 1K 2.2K users · 5.0 (8)](/scrapers/youtube-channel-information-scraper/)
-   [YouTube Trending Scraper `apidojo/youtube-trending-scraper` The current trending list for one country, set with a gl country code. The only other input is maxItems. Around 50 videos included per query · One country per query · 14 videos per second $0.025 / query + $0.50 / 1K 893 users · 5.0 (7)](/scrapers/youtube-trending-scraper/)
-   [YouTube Channel Videos Scraper `apidojo/youtube-channel-scraper` The videos of a channel from its URL or @handle, or channels found by keyword first. Named for what it returns, because its listing shares a title with Channel Info Scraper. Around 30 videos or 48 Shorts included per channel · Around 20 channels included per keyword search · 13 videos per second $0.015 / channel · $0.005 / search + $0.50 / 1K 707 users · 5.0 (7)](/scrapers/youtube-channel-scraper/)
-   [YouTube Playlist Scraper `apidojo/youtube-playlist-scraper` Every video in a playlist from its URL, or playlists found by keyword, with views, likes and duration per video. Around 100 videos included per playlist · Keyword search with gl, hl and sort · 13 videos per second $0.025 / playlist · $0.005 / search + $0.50 / 1K 591 users · 5.0 (7)](/scrapers/youtube-playlist-scraper/)

## How much does YouTube Scraper cost?

YouTube Scraper costs $0.50 per 1,000 videos, billed per result with no per-run and no per-query fee. Scraping 100,000 YouTube videos costs $50.00. The six single-job scrapers add a query fee between $0.001 and $0.025, most of them with items included in it.

$0.50per 1,000 videos

-   Flat rate, no query fee, no free-item maths
-   The same price at 1,000 or 1,000,000 videos
-   Minimum 10 videos per input

[Run your first query](https://apify.com/apidojo/youtube-scraper)

| Scraper | Query fee | Per item |
| --- | --- | --- |
| YouTube Transcript Scraper | $0.001 per transcript, the whole price | no item fee |
| YouTube Comments Scraper | $0.001 per video (around 20 comments free) | $0.50 / 1K |
| YouTube Channel Info Scraper | $0.005 per URL or handle · $0.001 per keyword search | $0.50 / 1K |
| YouTube Channel Videos Scraper | $0.015 per channel (around 30 videos free) · $0.005 per search | $0.50 / 1K |
| YouTube Playlist Scraper | $0.025 per playlist (around 100 videos free) · $0.005 per search | $0.50 / 1K |
| YouTube Trending Scraper | $0.025 per query (around 50 videos free) | $0.50 / 1K |

| Job | Scraper | Calculation | Cost |
| --- | --- | --- | --- |
| 100,000 videos from a keyword search | YouTube Scraper | 100,000 × $0.0005 | $50.00 |
| 1 channel, 200 videos | YouTube Scraper | 200 × $0.0005 | $0.10 |
| 100 channels, 1,000 videos each | YouTube Scraper | 100,000 × $0.0005 | $50.00 |
| 1,000 transcripts | Transcript Scraper | 1,000 × $0.001 | $1.00 |
| 1 video, 1,000 comments | Comments Scraper | $0.001 + 980 × $0.0005 | $0.49 |
| US trending list, daily for 30 days | Trending Scraper | 30 × $0.025 | $0.75 |

Prices apply to Apify paid plans. The free plan runs YouTube Scraper in demo mode, 5 runs a month, 10 items a run, no credit card.

## How does YouTube Scraper compare with the YouTube Data API?

The YouTube Data API is free but capped. A Google Cloud project gets 10,000 quota units a day for most endpoints plus a separate bucket of 100 search.list calls, both reset at midnight Pacific Time, and every caption endpoint requires OAuth authorization. YouTube Scraper has no quota, no key and no OAuth step.

|  | Apidojo YouTube Scraper | YouTube Data API v3 |
| --- | --- | --- |
| Setup | An Apify account | Google Account, Google Cloud project, API enabled; OAuth 2.0 for user-authorised calls |
| Daily ceiling | Set by your Apify plan | 10,000 units a day for most endpoints, reset at midnight PT |
| Keyword searches per day | Unlimited, at $0.50 per 1,000 videos returned | 100 search.list calls, in their own quota bucket |
| Each extra results page | $0.0005 per video | Charged again at the method’s quota cost |
| Caption track list | On every video, included | captions.list, 50 units, and requires OAuth authorization |
| Transcript text | YouTube Transcript Scraper, $0.001 per video | captions.download, requires OAuth authorization |
| Raising the limit | Change your Apify plan | Request a quota extension from Google |
| Cost | $0.50 per 1,000 videos | No charge within quota |
| Upload, comment, update | No, read-only | Yes |

Quota figures from Google’s own "Determine quota cost" page, read on the snapshot date, which states that search.list and videos.insert have their own quota buckets with a default daily limit of 100 each, separate from the 10,000 units shared by every other endpoint. That is the number worth knowing: a project can burn its entire search allowance in 100 calls while 10,000 units sit unused.

## How to scrape YouTube with Apidojo in 4 steps

Scraping YouTube with Apidojo takes 4 steps: open the scraper, add URLs, handles or keywords, set the filters, then run and export. No YouTube API key, Google Cloud project or OAuth consent screen is involved.

1.  01

    ### Open YouTube Scraper on Apify

    Sign in with a free Apify account. No credit card is needed to run it in demo mode.

2.  02

    ### Add URLs, handles or keywords

    Paste a channel, playlist, Shorts or search URL, type an @handle, or enter search keywords.

3.  03

    ### Set the filters

    Pick country and language, upload date, duration, features and sort; turn on Shorts or trending. Cap the run with maxItems.

4.  04

    ### Run and export the dataset

    Download JSON or CSV, or read the results straight through the Apify API.

### Which query types and filters it accepts

| Input | What it does | Example |
| --- | --- | --- |
| Channel URL or @handle | Videos published by a channel | youtube.com/@MrBeast |
| Playlist URL | Every video in a playlist | youtube.com/playlist?list=PLrAXtmErZgOeiKm4… |
| Search URL | Results for a query string | youtube.com/results?search_query=AI |
| Shorts URL | A Shorts video, or a channel’s Shorts page | youtube.com/@MrBeast/shorts |
| Video URL | Accepted in startUrls, but see the 10-video minimum | youtube.com/watch?v=dQw4w9WgXcQ |
| keywords | Searches YouTube for terms instead of URLs | ["machine learning tutorial"] |
| getTrending | Returns the trending list for the gl country | true |
| includeShorts | Adds Shorts to a channel or keyword run | true |
| uploadDate | Keyword searches only | l last hour · t today · w this week · m this month · y this year |
| sort | Keyword searches only | r relevance · ra rating · u upload date · v view count |
| duration | Search results | all any · s short · l long |
| features | Search results | hd HD · s subtitles · c CC · li live · 4 4K · 3 360 |
| gl · hl | Country and language for search results | us · gb · de · en · de · tr |

-   #### `The single-letter codes`

    uploadDate: "w" and features: "4" are undiscoverable without reading the input schema, YouTube’s own URL parameters, passed straight through. Printed as a code table they let you or an agent write a correct input on the first try, which is the main reason this section exists.

-   #### `Why sort is ignored on a channel`

    uploadDate and sort are YouTube search parameters, and a channel or playlist page is not a search. On those runs they are silently ignored rather than rejected. To sort a channel by views, search its name as a keyword instead of pasting its URL.

## How do you call the YouTube Scraper API?

YouTube Scraper is the actor apidojo/youtube-scraper, called through the Apify REST API or the official Python and JavaScript clients. The input is the same JSON the web form produces, so a run built in the form copies straight into code.

**Python**

**JavaScript**

**cURL**

**Transcripts**

```
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

# This week's most-viewed videos for a topic, US results in English
run = client.actor("apidojo/youtube-scraper").call(run_input={
    "keywords": ["machine learning tutorial"],
    "uploadDate": "w",
    "sort": "v",
    "gl": "us",
    "hl": "en",
    "maxItems": 200,
})

for v in client.dataset(run.default_dataset_id).iterate_items():
    print(v["views"], v["duration"], v["title"], v["url"])
```

```
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

// A channel's long-form videos plus its Shorts, split by duration
const run = await client.actor('apidojo/youtube-scraper').call({
  youtubeHandles: ['@kurzgesagt'],
  includeShorts: true,
  maxItems: 300,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
const shorts = items.filter((v) => v.duration <= 60);
console.log(shorts.length, 'Shorts of', items.length, 'videos');
```

```
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~youtube-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":["https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"],"maxItems":100}'
```

```
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

# Transcripts are a separate actor, the main scraper returns the track list
run = client.actor("apidojo/youtube-transcript-scraper").call(run_input={
    "startUrls": ["https://www.youtube.com/watch?v=_AbFXuGDRTs"],
    "lang": "en",
})

for item in client.dataset(run.default_dataset_id).iterate_items():
    for line in item["transcript"]:
        print(line["startTime"], line["text"])
```

-   ### n8n

    A daily trending run feeding a market digest.

-   ### Make and Zapier

    New channel video into a review queue.

-   ### Warehouse

    JSONL into BigQuery or Snowflake.

-   ### Webhooks

    POST to any URL on run success.

## How fast is YouTube Scraper?

YouTube Scraper returns 19 videos a second on search URLs, 16 on channels, 14 on playlists and 10 on keyword searches, all from its own published benchmark. At the channel rate a 10,000-video export finishes in about ten minutes.

Search URL19 videos/sec

Channel URL16 videos/sec

Playlist URL14 videos/sec

Keyword search10 videos/sec

| Scraper | Published speed | 1,000 items |
| --- | --- | --- |
| YouTube Scraper | 10–19 videos/sec | ≈ 53 s – 1 min 40 s |
| YouTube Comments Scraper | 251 comments/sec · 267 on Shorts | ≈ 4 s |
| YouTube Channel Info Scraper | 166 channels/sec | ≈ 6 s |
| YouTube Trending Scraper | 14 videos/sec | ≈ 1 min 11 s |
| YouTube Channel Videos Scraper | 13 videos/sec | ≈ 1 min 17 s |
| YouTube Playlist Scraper | 13 videos/sec | ≈ 1 min 17 s |
| YouTube Transcript Scraper | Not stated in its README | None |

Every rate is the figure its own listing publishes, and the transcript row says so rather than borrowing a neighbour’s number. The bars compare the four query types of one actor, because those share a unit; the table mixes videos, comments and channels, which do not. Real throughput moves with query type, region, time of day and how many deleted or private videos get skipped.

**30.2K** users on YouTube Scraper

**6.5M** YouTube Scraper runs, all time

**4.4 / 5** across 63 reviews, seven scrapers

**99.6%** run success, 30 days

The 4.4 is weighted by review count across all seven, which pulls it down rather than up: YouTube Scraper’s own rating is 3.3 over 22 reviews, the lowest in the catalogue, while the six single-job scrapers sit between 4.8 and 5.0. Publishing the blend rather than the siblings’ average is the point, the rating you see includes the scraper this page leads with.

## What can you build with YouTube Scraper data?

YouTube Scraper data powers 6 workflows: timestamped transcript search, launch-video comment mining, creator shortlisting, per-country trending reports, Shorts-versus-long-form analysis and course audits. Four of the six chain two scrapers together.

-   ### Timestamped transcript search

    `keywords → video URLs → Transcript Scraper`

    **transcript[].text, startTime, url** Fields

-   ### Launch-video comment mining

    `Comments Scraper · sort Latest · includeReplies`

    **text, likeCount, replyCount** Fields

-   ### Creator shortlisting

    `Channel Info Scraper · keywords · gl`

    **subscriberCount, videosCount, availableCountries, tags** Fields

-   ### Per-country trending reports

    `Trending Scraper · one run per gl, daily`

    **title, views, channel** Fields

-   ### Shorts versus long-form

    `YouTube Scraper · @handle · includeShorts`

    **duration, views, publishDate** Fields

-   ### Course and series audits

    `Playlist Scraper · playlist URL`

    **duration, views, likes per video** Fields

## What are the limits of YouTube Scraper?

YouTube Scraper operates under 6 documented limits. Each one below states what triggers it and how to work within it.

-   ### At least 10 videos per input

    Each keyword, handle or start URL must fetch 10 videos or more. Smaller requests are too costly to serve and can trip the rate limiter.

    Set maxItems to 10 or more and group small inputs into one run.

-   ### Single video URLs are not supported

    The README states this directly, and it follows from the 10-video minimum. The input schema still accepts the watch-URL format, so a single-video run fails rather than being rejected up front.

    Batch at least ten videos, or use Comments Scraper or Transcript Scraper, both of which take one watch URL.

-   ### Five inputs per run, one run at a time

    The README asks for no more than 5 keywords, handles or URLs in a run, at most one concurrent run, and a couple of minutes between runs.

    Queue runs on a schedule rather than firing them in parallel.

-   ### uploadDate and sort are search-only

    Both are YouTube search parameters, so they are ignored on channel, playlist and URL runs.

    Search the channel name as a keyword, or filter on publishDate after the run.

-   ### No caption text, and no comment counts

    This scraper returns the caption track list, not the transcript, and its output carries no comment count. Both come from sibling actors.

    Transcript Scraper for the text at $0.001 a video; Comments Scraper for comments at $0.001 a video.

-   ### Private, member-only and restricted videos

    Private, member-only and deleted videos are not returned at all. Age-restricted videos usually come back without streamingData, and geo-blocked videos depend on where the run executes.

    Open the URL in a logged-out browser first, and plan for empty media fields on restricted content.

## Is it legal to scrape YouTube?

Collecting publicly visible YouTube data without logging in is generally lawful in the United States. US courts have held that scraping public pages does not breach the Computer Fraud and Abuse Act, in hiQ Labs v. LinkedIn (9th Cir., 2022). Personal data in comments and channel profiles remains subject to GDPR and CCPA.

-   ### What the scrapers read

    Public, logged-out content only: videos, channels, playlists, trending lists, comments and published captions. No authentication is bypassed and no private content is reached.

-   ### Commenters are people

    A comment author’s name and channel ID identify someone under GDPR. Processing them needs a lawful basis, a stated purpose and a retention period, the same as any personal data.

-   ### Videos and transcripts are creators’ work

    streamingData links to the video files themselves, and a transcript reproduces what was said. Analysing either is one thing; republishing needs the rights holder’s permission.

This is general information, not legal advice. The actor’s own README asks that results be used in accordance with applicable law and YouTube’s Terms of Service.

## YouTube Scraper frequently asked questions

### Everything else people ask

Fifteen questions about this scraper and its family. Anything about the wider catalogue is answered on the scrapers hub.

[All 26 scrapers](/scrapers/)

### Does YouTube Scraper need a YouTube API key?

It needs no YouTube API key, Google Cloud project or OAuth consent screen. An Apify account is the only requirement.

### Can YouTube Scraper get video transcripts?

YouTube Scraper returns each video’s caption track list, not the words. The transcript text comes from YouTube Transcript Scraper at $0.001 a video, as timed lines with startTime and dur.

### Does YouTube Scraper scrape YouTube Shorts?

Yes. Paste a Shorts URL or a channel’s /shorts page, or switch includeShorts on for a channel or keyword run.

### Can I filter YouTube search results by upload date?

Set uploadDate on a keyword search: l last hour, t today, w this week, m this month, y this year. It is ignored on channel, playlist and URL runs.

### Can I scrape YouTube results for another country or language?

Yes. gl sets the country and hl the language, using the codes YouTube itself uses. The defaults are us and en.

### How do I get YouTube trending videos for a country?

Switch getTrending on and set gl to the country, or run YouTube Trending Scraper, which costs $0.025 a query with around 50 videos included.

### How is this different from the YouTube Data API quota?

The Data API gives a project 10,000 units a day for most endpoints and a separate bucket of 100 search.list calls. YouTube Scraper has no daily quota, you pay $0.50 per 1,000 videos returned.

### Can YouTube Scraper scrape one specific video?

Not on its own: each input has to fetch at least 10 videos, and the README says single video URLs are not supported. For one video, use Comments Scraper or Transcript Scraper, both of which take a single watch URL.

### Does YouTube Scraper return subscriber counts?

Its channel object carries the channel ID, name and URL. Subscriber and video counts come from YouTube Channel Info Scraper, which returns them as display strings such as "244M subscribers".

### Can I scrape YouTube comments with replies?

YouTube Comments Scraper returns replies when includeReplies is on. Each reply thread is billed as its own query on top of the $0.001 per video.

### Can YouTube Scraper access private or member-only videos?

No. Private, member-only and deleted videos are never returned. Age-restricted videos usually come back without streamingData, and geo-blocked videos depend on where the run executes.

### Why did my YouTube run return no videos?

Empty runs usually come from an input asking for fewer than 10 videos, a single video URL, or a private or deleted page. Test the URL logged out, then retry with a known public channel.

### How much does it cost to scrape 100,000 YouTube videos?

It costs $50.00 at $0.50 per 1,000 videos, with no query fee on top.

### Is there a free YouTube Scraper plan?

Yes. The free Apify plan runs it in demo mode: 5 runs a month, 10 items per run, no credit card.

### Does YouTube Scraper work with n8n and AI agents?

Yes. It runs in n8n, Make and Zapier through the Apify app, and in Claude, Cursor and other MCP clients through the Apify MCP server.

## Other Apidojo scrapers

YouTube is one of six sources in the catalogue. Every scraper publishes its inputs, its output fields and its price the same way this one does.

-   [TikTok Scraper Videos, sounds, comments](/scrapers/tiktok-scraper/)
-   [Instagram Scraper Posts, reels, profiles](/scrapers/instagram-scraper/)
-   [Twitter Scraper Tweets, users, replies](/scrapers/twitter-scraper/)
-   [Google Search Scraper Organic SERP results](/scrapers/google-search-scraper/)

[Browse all 26 scrapers](/scrapers/)

Apidojo

## Run YouTube Scraper on your first channel

Type an @handle or paste a channel, playlist or search URL. The free Apify plan runs it in demo mode with no credit card, and the output shape is the one documented on this page.

[Run your first channel](https://apify.com/apidojo/youtube-scraper)

-   `youtubeHandles: ["@kurzgesagt"] · includeShorts` A channel’s long-form videos and Shorts in one run
-   `keywords: ["machine learning tutorial"] · this week · by views` What the topic published this week, best first
-   `getTrending: true · gl: "gb"` One country’s trending list, for $0.025 a day

All three run on YouTube Scraper at $0.50 per 1,000 videos.

Apidojo is not affiliated with YouTube or Google LLC.
