yt-dlp "Sign in to confirm you're not a bot" on a server? Get YouTube transcripts without cookies

yt-dlp shows "Sign in to confirm you're not a bot" when YouTube distrusts the request, most often from datacenter and VPN IPs. The usual fixes are to update yt-dlp, add a JavaScript runtime for YouTube's proof-of-origin token, and pass cookies from a signed-in Google account, which ties your scraping to that account. If you only need subtitles or transcripts, YouTube Transcript Scraper on Apify returns them from any server without cookies. Send video, channel or playlist URLs and get the full text with timestamps, at $1.50 per 1,000 transcripts.

Open YouTube Transcript Scraper on Apify $1.50 per 1,000 transcripts ($1.20 on Gold and above)

Step by step

  1. Create a free Apify account. Sign up at apify.com. The free plan includes $5 of monthly credit, about 3,300 transcripts, and needs no credit card.
  2. Send your videos. Start the Actor with videos (URLs or IDs, including Shorts, channel and playlist URLs) and language. Python users can use the open-source youtube-transcript-cloud package, which keeps youtube-transcript-api's interface.
  3. Get timestamps or subtitle files. Set includeTimestamps to true for segments with start time, duration and text. youtube-transcript-cloud's SRTFormatter and WebVTTFormatter turn them into .srt or .vtt.
  4. Pick a language. Manual captions in your language come first, then auto-generated ones; translateTo asks YouTube for a machine translation (best effort).
  5. Run it from your server. Call the Actor from your backend with your Apify token. No cookies, proxies or Google account are involved.
  6. Automate it. Add a schedule with a channel URL to collect the transcripts of new uploads, or give an AI assistant the MCP server URL below.

Try it now in a free notebook: open the Colab notebook (runs in your browser; add your Apify token as a Colab secret).

Do it from code

Python

# pip install apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automationnation/youtube-transcript-scraper").call(run_input={
  "videos": [
    "https://www.youtube.com/watch?v=UF8uR6Z6KLc"
  ],
  "language": "en"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item.get("title"), item.get("channel"), item.get("wordCount"), item.get("transcriptLanguage"))

REST API (cURL)

curl -X POST "https://api.apify.com/v2/acts/automationnation~youtube-transcript-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"videos": ["https://www.youtube.com/watch?v=UF8uR6Z6KLc"], "language": "en"}'

From an AI assistant (MCP)

Add this MCP server URL to Claude, ChatGPT or Cursor and ask in plain English:

https://mcp.apify.com?tools=automationnation/youtube-transcript-scraper

Alternatives

Other options: keep yt-dlp and update it (yt-dlp -U), install Deno or Node for the proof-of-origin token, and pass --cookies with a cookies.txt from a signed-in browser (the account can be flagged); use residential proxies; or use the official YouTube Data API, whose captions.download only works for videos you own or manage. See the side-by-side comparison of YouTube transcript scrapers. See the side-by-side comparison.

FAQ

Why does yt-dlp hit the bot check on a server but not at home?

YouTube trusts residential connections more than datacenter and VPN IPs, so requests from AWS, Google Cloud, Azure and similar hosts are challenged far more often.

Do I need cookies or a Google account with the Actor?

No. It runs on Apify's infrastructure and handles YouTube's blocks itself; you only need your Apify token.

Does it download the video?

No. It returns the transcript, timestamps and video metadata (title, channel, duration, views), not the video or audio file.

What does it cost?

$1.50 per 1,000 transcripts ($1.20 on Apify's Gold plan and above); videos without captions are free.

Can an AI assistant use it?

Yes. Add the MCP server URL below to Claude, ChatGPT or Cursor and ask, for example, "summarise the latest video on this channel".

Written by AutomationNation, the developer of YouTube Transcript Scraper. Prices checked October 2026.