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

NameTypeRequiredNotes
urlstringyesPublic YouTube URL matching this API's input.
cachebooleanno`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

FieldTypeNotes
videoIdstringThe YouTube video id.
languagestring | nullLanguage code reported by the subtitle track.
autoGeneratedboolean | nullWhether YouTube marks the track as generated.
transcriptstringJoined text, with contact details scrubbed before return.
transcriptSegmentsarrayTimed text cues with text, start and duration.
wordCountintegerCount calculated after scrubbing.
fetchedAtISO datetimeWhen Sourcevine read the public page.
sourceTimestampISO datetime | nullThe platform timestamp when it is available.
cachedbooleanTrue when the response was served from cache and cost 0 credits.
cacheAgeSecondsintegerAge of the cached reading, or 0 for a live read.

Availability States

StatusChargedClient behavior
availableyes for live readsUse data.
not_foundnoStore the state and stop polling.
privatenoStore the state and stop polling.
unsupportednoFix the URL or call the matching API.
upstream_unavailablenoRetry 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

Related

Last updated 28 August 2026