Content repurposing
Turn public videos into notes, summaries, clips and content calendars.
YouTube transcript API
Get the full public transcript for a YouTube video, including timed segments, language metadata and fetch timestamps.
Input: Public YouTube post URL. Returns: one object, in YouTube's own field names. Price: 2 credits per call; failed reads are free.
GET /v1/youtube/transcript
See it in action
The snippets use the production endpoint. Replace the sample URL with your own public target before running them.
Start from a valid shape, then replace the sample value with your public target.
Selected NASA Nancy Grace Roman Space Telescope Launch https://www.youtube.com/watch?v=9wq3VHsL_bE
Open
Use a server-side key and send parameters as query values.
https://api.sourcevine.io/v1/youtube/transcript curl -G 'https://api.sourcevine.io/v1/youtube/transcript' \
-H 'Authorization: Bearer sv_live_...' \
--data-urlencode 'url=https://www.youtube.com/watch?v=9wq3VHsL_bE' const params = new URLSearchParams({
"url": "https://www.youtube.com/watch?v=9wq3VHsL_bE",
});
const res = await fetch('https://api.sourcevine.io/v1/youtube/transcript?' + params, {
headers: { Authorization: 'Bearer sv_live_...' },
});
const body = await res.json();
console.log(body.data); import requests
r = requests.get(
"https://api.sourcevine.io/v1/youtube/transcript",
params={"url": "https://www.youtube.com/watch?v=9wq3VHsL_bE"},
headers={"Authorization": "Bearer sv_live_..."},
)
body = r.json()
print(body["data"]) Every success includes availability, a fetch timestamp and billing context.
Hit Show sample response to see the response.
A real YouTube Transcript API response, recorded against the public target above.
Shortened to fit. transcript 480 of 106,983 characters · transcriptSegments 3 of 3,817. A live call returns all of it.
Shortened to fit. transcript 480 of 51,923 characters · transcriptSegments 3 of 1,820. A live call returns all of it.
Shortened to fit. transcript 480 of 1,601 characters · transcriptSegments 3 of 55. A live call returns all of it.
{
"data": {
"url": "https://www.youtube.com/watch?v=9wq3VHsL_bE",
"cached": false,
"videoId": "9wq3VHsL_bE",
"language": "en",
"segments": 3817,
"fetchedAt": "2026-09-02T16:27:43Z",
"wordCount": 19460,
"transcript": ">> Our universe is a very dynamic place that puts on. Spectacular cosmic displays every second. [MUSIC] With Roman's panoramic vision, we'll not only catch these events, but we'll see many at once. And use this to uncover the. Distribution of dark matter in our universe. Most of the sky remains to be explored. We're likely to not confirm current models, but to get to. >> Explore entirely new phenomena for the first time. >> I think when you build an observatory that has. Prof…",
"autoGenerated": true,
"cacheAgeSeconds": null,
"sourceTimestamp": null,
"transcriptSegments": [
{
"text": ">> Our universe is a very",
"start": 80.18,
"duration": 3.136
},
{
"text": "dynamic place that puts on.",
"start": 81.614,
"duration": 2.836
},
{
"text": "Spectacular cosmic displays",
"start": 83.383,
"duration": 4.304
}
]
},
"success": true,
"available": true
} Ship it anywhere
We build and maintain theseFirst-party surfaces, versioned with the API.
Works anywhere that can make an HTTP requestNo plugin to install, and none to wait for.
Response
Each response includes typed availability, a fetch timestamp, and only the public fields this API promises.
| Field | Type | Meaning |
|---|---|---|
| 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 this answer repeats an identical request made moments earlier. |
| cacheAgeSeconds | integer | Seconds since the reading was taken. |
| url | string | |
| segments | integer |
Request flow
Send a public YouTube video URL. Sourcevine resolves ids, validates the resource type and returns a typed response.
A URL of the wrong kind or platform is refused with a 400 before any fetch, and not charged.
The public data is read when you call. An identical request moments earlier is answered again, free.
Deleted, private and unsupported resources return explicit statuses, so clients can stop retrying facts about the world.
YouTube names stay intact, so your code reads subscriberCount instead of reverse-engineering a generic schema.
fetchedAtcreditsChargedavailableEvery response carries fetchedAt and the platform timestamp, so you know how old a reading is before you act on it. YouTube Transcript API fits recurring transcript checks in dashboards, spreadsheets, workflows and agents.
Boundaries
Bios, email addresses, phone numbers, postal addresses and messenger handles are outside the response contract.
Private accounts, restricted content and unavailable resources return typed availability instead of guessed data.
This endpoint returns transcript text and timed segments. Summaries and translations should be separate operations.
Use cases
Turn public videos into notes, summaries, clips and content calendars.
Index spoken words with timestamps so a team can find the exact moment later.
Give analysts and agents clean text without scraping YouTube HTML.
Archive public statements with timing metadata and a repeatable API trail.
Pricing
The response and X-Credits-Charged header tell you what
happened, including when it is zero.
Charged2 credits
Not charged0 credits
FAQ
The full spoken transcript of a public YouTube video, with timed segments.
A call costs 2 credits, including an empty result. Retrieval failures are not charged.
The request returns available=false with a typed availability status. Not-found and private results are charged like any lookup; unsupported URLs and retrieval failures are not.
No. Bios, emails, phone numbers, postal addresses and private or restricted content are outside the public response contract.
No. Your integration authenticates with a Sourcevine API key. You do not need to supply YouTube credentials or a session.