YouTube Transcript API reference
The full spoken transcript of a public YouTube video, with timed segments. 2 credits for a live read, 0 credits from cache.
This named API keeps YouTube fields in YouTube's own vocabulary. For a higher-level product page, seeYouTube Transcript API.
Endpoint
GET /v1/youtube/transcript
Authorization: Bearer sv_live_...`POST` is also accepted with the same parameters in the request body. Use the `Authorization` header rather than putting a key in the query string.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
url | string | yes | Public YouTube URL matching this API's input. |
cache | boolean | no | `true` by default. Send `false` to force a live read. |
Sample Request
This is a copyable request shape. Replace the sample URL with your own public YouTube URL.
curl -G 'https://api.sourcevine.io/v1/youtube/transcript' \
-H 'Authorization: Bearer sv_live_...' \
--data-urlencode 'url=https://www.youtube.com/watch?v=dQw4w9WgXcQ'Sample Response
The response below is illustrative. Live values depend on the public resource, platform availability and cache state.
{
"success": true,
"available": true,
"data": {
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"videoId": "dQw4w9WgXcQ",
"language": "en",
"autoGenerated": false,
"transcript": "We tested the launch flow, measured every drop-off point, and turned the winning clips into reusable notes.",
"transcriptSegments": [
{
"text": "We tested the launch flow",
"start": 0,
"duration": 2.4
},
{
"text": "measured every drop-off point",
"start": 2.4,
"duration": 3.1
},
{
"text": "and turned the winning clips into reusable notes.",
"start": 5.5,
"duration": 4.2
}
],
"wordCount": 1284,
"segments": 214,
"fetchedAt": "2026-08-28T09:41:44Z",
"sourceTimestamp": "2026-08-27T18:04:12Z",
"cached": true,
"cacheAgeSeconds": 312
}
}Fields
| Field | Type | Notes |
|---|---|---|
videoId | string | The YouTube video id. |
language | string | null | Language code reported by the subtitle track. |
autoGenerated | boolean | null | Whether YouTube marks the track as generated. |
transcript | string | Joined text, with contact details scrubbed before return. |
transcriptSegments | array | Timed text cues with text, start and duration. |
wordCount | integer | Count calculated after scrubbing. |
fetchedAt | ISO datetime | When Sourcevine read the public page. |
sourceTimestamp | ISO datetime | null | The platform timestamp when it is available. |
cached | boolean | True when the response was served from cache and cost 0 credits. |
cacheAgeSeconds | integer | Age of the cached reading, or 0 for a live read. |
Availability States
| Status | Charged | Client behavior |
|---|---|---|
available | yes for live reads | Use data. |
not_found | no | Store the state and stop polling. |
private | no | Store the state and stop polling. |
unsupported | no | Fix the URL or call the matching API. |
upstream_unavailable | no | Retry later with backoff. |
Unavailable resources return `success: true`, `available: false`, `availability`, and `data: null`. API or authentication failures return `success: false` with an `error` object.
Caching And Billing
A live read costs 2 credits. A cache hit costs 0 credits. The `X-Credits-Charged` response header is the source of truth for what happened on that request.
Successful responses include `cached`, `cacheAgeSeconds` and `fetchedAt`. Send `cache=false` only when you need a live read; the default uses cache so repeated checks of the same public URL do not bill twice.
What This API Does Not Return
- No contact or bio fields: Bios, email addresses, phone numbers, postal addresses and messenger handles are outside the response contract.
- No private data: Private accounts, login-walled pages and unavailable resources return typed availability instead of guessed data.
- No generated summary: This endpoint returns transcript text and timed segments. Summaries and translations should be separate operations.
Related
- YouTube API hub
- YouTube Transcript API product page
- Quickstart
- Freshness and caching
- Credits and billing
- YouTube Video Stats API reference
- YouTube Channel API reference
- YouTube Channel Videos API reference
Last updated 28 August 2026