YouTube video data API
A YouTube video data API that returns one row per video from the watch page itself: title, channel with its id and URL, the exact view and like counts, length in seconds, publish and upload dates, category, keywords, description, thumbnail, the live flag and which caption languages the video carries. Pass video ids or watch, Shorts or youtu.be URLs — up to twenty at a time.
$0.001 per delivered video · $2 free every month · Failed runs never billed
$ curl $QD/youtube_video/run \
-H "Authorization: Bearer $QD_API_KEY" \
-d '{"videos": ["dQw4w9WgXcQ"], "max_results": 1}'
{ "status": "done", "count": 1,
"results": [
{
"video_id": "…",
"url": "…",
"title": "…",
"channel": "…" } ],
"cost": 0.001 }
# 1 video × $0.001 · nothing delivered, nothing charged
What a YouTube video data API does
The public watch page shows you "1.2M views"; the number underneath it is exact, and so is the like count. This collector reads the player payload the page ships with and returns those exact integers, along with the channel id, the category, the keyword tags and the list of caption languages — the structured record most people reach for the YouTube Data API to get.
The difference is the quota. The Data API meters every call against a daily unit budget that a few thousand videos will exhaust; this reads the page directly, so there is no key to register and no quota to ration — you size a run by how many videos you pass, not by how many units you have left. Videos that are private or removed come back under failed and are never billed.
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 |
|---|---|---|
video_id | string | 11-char video id. |
url | string | Canonical watch URL. |
title | string | Video title. |
channel | string · nullable | Channel name. |
channel_id | string · nullable | Channel id (UC…). |
channel_url | string · nullable | Channel URL. |
views | integer · nullable | Exact view count. |
likes | integer · nullable | Exact like count (when public). |
length_seconds | integer · nullable | Duration in seconds. |
publish_date | string · nullable | Publish date. |
upload_date | string · nullable | Upload date. |
category | string · nullable | YouTube category. |
keywords | string[] | Video keywords/tags. |
description | string · nullable | Description (first 1500 chars). |
thumbnail | string · nullable | Largest thumbnail URL. |
is_live | boolean | Live content flag. |
family_safe | boolean | Family-safe flag. |
captions_available | boolean | Whether captions exist. |
caption_languages | string[] | Caption language codes. |
Inputs
The whole request. Anything you leave out falls back to the default shown in the catalog.
| Input | Type | Required | What it does |
|---|---|---|---|
videos | array | yes | Video ids or watch/shorts/youtu.be URLs. |
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–20). You pay only for delivered videos. |
Pricing
YouTube video data API pricing
$0.001 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,000 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_video/run \
-H "Authorization: Bearer $QD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"videos":["dQw4w9WgXcQ"],"max_results":1}'
What people build with the YouTube video data API
Three shapes of work this endpoint was designed around.
Creator and competitor analytics
Pull exact views and likes for a set of videos on a schedule and you have the real engagement curve, not the rounded figure the page prints, for every title you track.
Content metadata enrichment
Resolve a list of video ids to title, channel, category, length and keyword tags in one pass, filling the columns a media dataset needs without a per-video visit.
Caption-language discovery
Read which caption languages each video declares to find what is already subtitled and what is missing, before you commission transcription or localization.
YouTube video data API versus rolling your own
The differences that actually cost time when you build this in-house.
| DIY scraper | This collector | |
|---|---|---|
| Quota | Daily Data API unit budget | None — pay per video returned |
| View count | Rounded on the page ("1.2M") | Exact integer from the player payload |
| Auth | API key and a Google project | No key, ids or URLs straight in |
How is this different from the YouTube Data API?
It returns much of the same per-video record — title, channel, exact views and likes, length, category, keywords, captions — but reads it from the watch page's player payload instead of the API. So there is no API key and no daily unit quota to manage; a large batch is a question of how many ids you send, not how much quota is left.
Are the view and like counts exact?
Yes. The visible page rounds to "1.2M", but the payload behind it carries the precise numbers, and that is what lands in views and likes — the like count whenever the creator keeps it public.
Do I get the transcript or just the languages?
Just the caption languages the video declares, in caption_languages, plus a captions_available flag. The collector reports which subtitle tracks exist; it does not return the transcript text itself.
Can I pass full URLs, or only video ids?
Either. It accepts bare eleven-character ids and watch, Shorts and youtu.be URLs, up to twenty per run, and normalizes them to the canonical watch URL on the way out.
Is there a free YouTube video data API?
Every account gets $2 of credit every month with no card, which is about 2,000 delivered videos on this endpoint at $0.001 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.001. A run capped at 20 videos — the maximum for this collector — costs $0.02 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.
Run the YouTube video data API now
$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.