# What does TranscriptsDisabled mean, and can I still get the YouTube transcript?

> Why youtube-transcript-api raises TranscriptsDisabled, how to tell a YouTube video with no captions from a blocked request, and what to do with captionless videos.

Canonical page: https://okdata.online/answers/youtube-transcripts-disabled/

**Short answer: **TranscriptsDisabled means the library found no caption track it could read for that video. Ask a second source to tell a truly captionless video from a blocked request: the YouTube transcript endpoint returns the text for $0.004, or not_found at no charge when the video really has no captions.

You run a batch of 200 videos and 30 of them come back with `TranscriptsDisabled`. Some of those videos really have no captions. Others show a CC button in the browser, and people in the youtube-transcript-api tracker report exactly that case. You need to know which is which before you decide what to do with them.

## Two different causes

1. **The video has no caption track.** The creator turned captions off, YouTube has not generated automatic captions yet (new uploads can take a while), or the audio is music with no speech. No tool can return a transcript that does not exist.
2. **The request was answered differently.** When YouTube treats your IP as suspicious, the page your code receives can look like a video without captions. The error says disabled, but the cause is the request.

## A cheap second opinion

Send the same video to [YouTube video transcript](/apis/youtube/videos/transcript/get/). The fetch does not come from your IP, so the answer reflects the video itself:

```bash
curl -s -G "https://api.okdata.online/v1/youtube/videos/transcript/get" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  -d id=VIDEO_ID -d fields=lang,text
```

A video without captions answers like this, and the `charged: false` is real:

```json
{ "code": "not_found", "message": "No YouTube transcript with that ID was found.", "request_id": "…", "charged": false, "retry": "no" }
```

| Outcome | What you pay |
|---|---|
| Transcript returned | $0.004 |
| `not_found`, no captions | nothing |
| Any error (rate limit, timeout, upstream) | nothing |

So re-checking 30 failed videos costs at most $0.12, and less for every one that truly has no captions.

## What to do with the truly captionless ones

- **Recent uploads:** try again in a day. Automatic captions often appear later.
- **Talks and podcasts:** run Whisper or another speech model on audio you are allowed to download. That is the only way to get words out of a video with no track.
- **Tutorials:** look at the description. Many creators paste a script or chapter list there; [YouTube video detail](/apis/youtube/videos/get/) returns it as `text` for $0.004.
- **Your own channel:** upload captions in YouTube Studio, then fetch them again.

## Keep the batch honest

Store the outcome per video: `ok`, `no_captions` or `error`. Retry the errors, schedule the new uploads for later, and send only the rest to speech-to-text. The response never says whether a track was typed by the creator or generated automatically, so treat automatic-caption accuracy with care when you quote.

Batch patterns and costs for whole lists are on the [video transcript solution page](/solutions/transcripts/); every error code is on [errors](/docs/errors/).

## Endpoints used

- [YouTube video transcript](https://okdata.online/apis/youtube/videos/transcript/get/) `youtube.videos.transcript.get`: $0.004 per call

Updated 2026-11-12
