YouTube channel scraper API
A YouTube channel scraper API: pass a handle, a channel id or a URL and get the channel's uploads — title, video id, views, publish age, duration and thumbnail — with the channel's own name, subscriber count and video total stamped on every row.
$0.0008 per delivered video · $2 free every month · Failed runs never billed
$ curl $QD/youtube_channel/run \
-H "Authorization: Bearer $QD_API_KEY" \
-d '{"channel": "@NASA", "tab": "videos", "max_results": 30}'
{ "status": "done", "count": 30,
"results": [
{
"channel": "…",
"channel_id": "…",
"channel_url": "…",
"channel_description": "…" } ],
"cost": 0.024 }
# 30 videos × $0.0008 · nothing delivered, nothing charged
What a YouTube channel scraper API does
Monitoring a creator means reading the uploads tab, not the search page. That tab has already migrated to YouTube's newer card format, where the old video renderer object simply does not exist — which is why search-based scrapers return zero rows on a channel page that visibly has thirty videos.
This collector reads the new format directly, expands abbreviated counts (15.1M subscribers becomes a number) and covers the videos, shorts and streams tabs. One page per run, and the response says so rather than looking truncated.
What one video looks like
Every delivered video carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.
| Field | Type | What it holds |
|---|---|---|
rank | integer | 1-based position on the tab. |
channel | string · nullable | Channel name. |
channel_id | string · nullable | Channel id (UC…). |
channel_url | string · nullable | Canonical channel URL. |
channel_description | string · nullable | Channel description (trimmed). |
channel_subscribers | integer · nullable | Subscribers (15.1M → 15100000). |
channel_videos | integer · nullable | Total videos on the channel. |
video_id | string | Video id. |
title | string | Video title. |
url | string | Watch URL. |
views | string · nullable | Views as shown. |
views_value | integer · nullable | Views as a number. |
published | string · nullable | Publish age. |
duration | string · nullable | Duration (m:ss). |
live | boolean | True for live/premiere items. |
thumbnail | string · nullable | Thumbnail URL. |
Inputs
The whole request. Anything you leave out falls back to the default shown in the catalog.
| Input | Type | Required | What it does |
|---|---|---|---|
channel | string | yes | Handle (@NASA), channel id (UC…) or channel URL. |
tab | string | no | Which uploads tab to read. One of: videos, shorts, streams. |
country | string | no | ISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool. |
max_results | integer | no | How many videos to deliver at most (1–60). You pay only for delivered videos. |
Pricing
YouTube channel scraper API pricing
$0.0008 per delivered video. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 2,500 videos before you spend anything.
Pay as you go
- $2 free credit / month
- 60 requests / min
- List unit prices
Starter
- $15 free credit / month
- 300 requests / min
- 10% off unit prices
Growth
- $50 free credit / month
- 600 requests / min
- 20% off unit prices
Scale
- $250 free credit / month
- 1,200 requests / min
- 30% off unit prices
Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.
Integration
One POST, typed rows
Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/.
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/youtube_channel/run \
-H "Authorization: Bearer $QD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"channel":"@NASA","tab":"videos","max_results":30}'
What people build with the YouTube channel scraper API
Three shapes of work this endpoint was designed around.
Competitor content audit
Pull a rival channel's recent uploads with views and duration in one call.
Influencer vetting
Check publishing cadence and view distribution before a partnership.
Content datasets
Collect a channel corpus for topic modelling or transcription pipelines.
YouTube channel scraper API versus rolling your own
The differences that actually cost time when you build this in-house.
| DIY scraper | This collector | |
|---|---|---|
| Card format | Search parser returns zero rows here | Reads the current uploads format |
| Channel stats | A second call | On every row |
Three calls, or one row shape
Reading a channel through the Data API means resolving the handle, fetching the uploads playlist, then making a separate statistics call because playlist items do not carry view counts. Three resources, three responses to join, and a quota bill that returns once you do it across a few hundred channels.
The other gap is structural: the Data API does not model shorts and streams as distinct catalogues, so separating a creator's short-form output from their long-form means inferring it from duration. Here it is an input, and channel-level stats are stamped onto every video row so one flat table answers both the channel and the video question without a join.
Limits, tabs and the legal bit
One grid page per run, roughly 30 videos and up to 60; the back catalogue sits behind continuation tokens and is out of scope. Pick the tab deliberately — averaging shorts and long-form together misrepresents any channel that posts both. Throughput is your plan's rate limit rather than anything about the collector: 60 requests/minute on pay-as-you-go, up to 1,200 on the top tier.
Collecting publicly visible data is generally lawful in most jurisdictions, and courts have repeatedly declined to treat reading a public page as unauthorised access. YouTube's terms restrict automated access. Creator names and channel descriptions can be personal data. None of this is legal advice — get some for your actual use case.
Can I read shorts or live streams?
Yes — tab accepts videos, shorts and streams.
How far back does it go?
One page of the tab, around 30 videos. Older uploads sit behind a continuation token this collector does not follow; the run notes exactly how many it returned.
Is there a free YouTube channel scraper API?
Every account gets $2 of credit every month with no card, which is about 2,500 delivered videos on this endpoint at $0.0008 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.
How much does one run cost?
Multiply the rows you actually receive by $0.0008. A run capped at 60 videos — the maximum for this collector — costs $0.048 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.
Why are channel stats repeated on every row?
So the output stays one flat table. Subscriber and video totals on each row mean per-video performance relative to audience size is a single expression, with no join and no second call — which is what makes the output usable directly as a dataset.
Can I get a channel's whole back catalogue?
No — one grid page per run, roughly 30 videos. Everything beyond that requires walking YouTube's continuation protocol, which this collector deliberately does not claim to do. The recent uploads are what it covers.
Run the YouTube channel scraper API now
$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.