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 Public YouTube post URL · One object

Try it with a sample URL.

The snippets use the production endpoint. Replace the sample URL with your own public target before running them.

Try this API live Try the free tool
1

Pick a sample input

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

2

Preview the request

Use a server-side key and send parameters as query values.

GET 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"])
Replays the recorded response. Nothing leaves your browser.
3

Read the response

Every success includes availability, a fetch timestamp and billing context.

GET /v1/youtube/transcript Not run

Hit Show sample response to see the response.

A real YouTube Transcript API response, recorded against the public target above.

available 2 credits recorded
Languageen
Words19,460
Segments3,817
Cost2 credits
1:20 >> Our universe is a very 3.14s
1:21 dynamic place that puts on. 2.84s
1:23 Spectacular cosmic displays 4.30s

Shortened to fit. transcript 480 of 106,983 characters · transcriptSegments 3 of 3,817. 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
}

Use this API from code, no-code tools, MCP clients and agents.

We build and maintain theseFirst-party surfaces, versioned with the API.

Response fields.

Each response includes typed availability, a fetch timestamp, and only the public fields this API promises.

FieldTypeMeaning
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

How a request is handled.

  1. 01 Send a public URL

    Send a public YouTube video URL. Sourcevine resolves ids, validates the resource type and returns a typed response.

  2. 02 Checked

    A URL of the wrong kind or platform is refused with a 400 before any fetch, and not charged.

  3. 03 Read

    The public data is read when you call. An identical request moments earlier is answered again, free.

  4. 04 Typed availability

    Deleted, private and unsupported resources return explicit statuses, so clients can stop retrying facts about the world.

  5. 05 JSON back

    YouTube names stay intact, so your code reads subscriberCount instead of reverse-engineering a generic schema.

    fetchedAtcreditsChargedavailable

Every 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.

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, restricted content 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.

Where teams use YouTube Transcript API.

Content repurposing

Turn public videos into notes, summaries, clips and content calendars.

Video search

Index spoken words with timestamps so a team can find the exact moment later.

Research workflows

Give analysts and agents clean text without scraping YouTube HTML.

Compliance review

Archive public statements with timing metadata and a repeatable API trail.

2 credits per call, and nothing for a failed read.

The response and X-Credits-Charged header tell you what happened, including when it is zero.

Estimate monthly usage

Charged2 credits

  • AnsweredThe public data came back.
  • Not found or privateThe lookup was made, and that is the answer. The response says which.
  • Empty resultThe lookup was made and found nothing to return, such as an account with no posts.

Not charged0 credits

  • Failure on our sideA timeout or a read we could not complete.
  • Unsupported URLThe wrong kind of URL: refused before any fetch.
  • Cache hitAn identical request moments earlier, answered again.

Common questions.

What does YouTube Transcript API return?

The full spoken transcript of a public YouTube video, with timed segments.

How is it billed?

A call costs 2 credits, including an empty result. Retrieval failures are not charged.

What happens when the resource is private or deleted?

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.

Does Sourcevine return contact data?

No. Bios, emails, phone numbers, postal addresses and private or restricted content are outside the public response contract.

Do I need to log in to YouTube?

No. Your integration authenticates with a Sourcevine API key. You do not need to supply YouTube credentials or a session.