Full transcript of any YouTube video by video id or URL
Full transcript of any YouTube video by video id or URL: captions/subtitles as clean plain text plus timestamped segments, the video's chapter markers, and every caption track it offers so an agent can pick a language and re-fetch. YouTube transcript, video to text, captions extraction, subtitle download, closed captions, speech to text, multilingual, asr and authored tracks. No API key.
Answeringour last check, 2026-09-24
1 of 1checks answered this week
651 msmedian answer time
$0.02listed price per call
$0.02price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
GET https://youtube.use.x402atlas.com/transcript
| Category | Image and media |
|---|---|
| Provider host | youtube.use.x402atlas.com |
| Networks | eip155:137, eip155:42161, eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 17 from 11 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-09-24 | valid payment request | 402 | $0.02 | 651 ms |
Example input (from the provider)
{
"method": "GET",
"queryParams": {
"v": "iG9CE55wbtY"
},
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"properties": {
"v": {
"description": "YouTube video id (11 characters) or a full YouTube video URL",
"maxLength": 500,
"type": "string"
}
},
"required": [
"v"
],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"available_transcripts": {
"description": "Every track this video offers; feed language_code/type/title back to fetch one. A language may appear twice \u2014 the authored track and the asr one.",
"items": {
"properties": {
"language_code": {
"type": "string"
},
"selected": {
"description": "True on the track this response served",
"type": "boolean"
},
"title": {
"description": "Track title, on videos with named tracks",
"type": "string"
},
"type": {
"description": "asr on auto-generated tracks; absent on authored ones",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"chapters": {
"description": "Chapter markers; empty for videos without chapters",
"items": {
"properties": {
"end_ms": {
"type": "integer"
},
"start_ms": {
"type": "integer"
},
"start_time_text": {
"type": "string"
},
"title": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"language_code": {
"description": "Language of the track actually served; omitted when the upstream identifies none \u2014 never an echo of the request",
"type": "string"
},
"note": {
"description": "Present only on the sample response (a call with no v): a hint that this is a canned example. The paid request ran; no upstream call was made.",
"type": "string"
},
"queried_at": {
"format": "date-time",
"type": "string"
},
"segments": {
"items": {
"properties": {
"end_ms": {
"description": "Line end offset in milliseconds; absent on tracks that carry only starts",
"type": "integer"
},
"start_ms": {
"description": "Line start offset in milliseconds",
"type": "integer"
},
"start_time_text": {
"description": "Line start as displayed, e.g. 0:43",
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"start_ms",
"text"
],
"type": "object"
},
"type": "array"
},
"text": {
"description": "Whole transcript as one plain-text block",
"type": "string"
},
"video_id": {
"description": "Normalized 11-character video id",
"type": "string"
}
},
"required": [
"video_id",
"queried_at",
"text",
"segments",
"chapters",
"available_transcripts"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}