YouTube transcripts via third-party transcript APIs (AssemblyAI / Supadata)

2026-03-10 · tools-infrastructure knowledge-management rag-retrieval · medium · source → · wiki →
key claims
  1. Supadata's transcript API fully insulates the GitHub Actions runner from YouTube's IP block because the runner contacts only `api.supadata.ai` via HTTPS while Supadata's own infrastructure handles all downstream YouTube requests
  2. Supadata returns verbatim or near-verbatim transcript output: in Native mode it reproduces YouTube's own caption text word-for-word; in Auto/Generate fallback mode it uses ASR-class (automatic speech recognition) models equivalent to Whisper, not language-model paraphrase
  3. AssemblyAI does not bypass YouTube's cloud IP block, because its `audio_url` parameter requires a direct link to a downloadable audio file and explicitly does not support YouTube watch-page URLs, meaning the caller must first download audio via `yt-dlp` on the GitHub Actions runner
  4. The original item's assumption that AssemblyAI accepts YouTube URLs directly via `audio_url` is incorrect, as confirmed by AssemblyAI's official FAQ, which explicitly states that YouTube URLs are not supported and that the audio must be downloaded first
  5. Kagi's Universal Summarizer accepts YouTube URLs directly and processes them server-side, bypassing the IP block, but its output is a structured summary rather than a verbatim transcript, and YouTube URL support is marked "Experimental" in Kagi's documentation
  6. Supadata's free tier provides 100 credits per month with no credit card required, and at a research use case volume of a few videos per month, this free allocation is sufficient indefinitely without any paid upgrade
  7. Supadata's "Auto" mode is the recommended operational mode for the research workflow because it attempts to retrieve YouTube's native captions first and transparently falls back to AI (ASR-class) transcription when native captions are unavailable or blocked
  8. Integrating Supadata into the existing research tooling requires one new repository secret (`SUPADATA_API_KEY`) and one new fetcher function using the existing `httpx` client pattern; no additional Python dependency is required

Research Question

Can a third-party transcript API (AssemblyAI, Supadata, Kagi, or similar) retrieve YouTube transcripts from a GitHub Actions runner, bypassing YouTube's IP-based block on the internal transcript endpoint?

Findings

(Populated from §6 Synthesis above.)

Executive Summary

Supadata is the only third-party transcript API among the evaluated candidates that both bypasses YouTube's cloud IP block and returns verbatim transcript text, [inference] making it the correct implementation path for the research workflow. AssemblyAI does not bypass the IP block — it requires prior audio download via yt-dlp, which reintroduces the same cloud-IP restriction that blocks youtube-transcript-api — and the original premise that AssemblyAI accepts YouTube URLs directly is factually incorrect. Kagi's Universal Summarizer bypasses the IP block via server-side processing but produces summaries, not verbatim transcripts, making it a video-analysis tool rather than a transcript fetcher. Supadata's free tier (100 credits/month) covers the research volume comfortably, and integration requires only one new repository secret and one new fetcher function.

Key Findings

  1. Supadata's transcript API fully insulates the GitHub Actions runner from YouTube's IP block because the runner contacts only api.supadata.ai via HTTPS while Supadata's own infrastructure handles all downstream YouTube requests. [High confidence]

  2. Supadata returns verbatim or near-verbatim transcript output: in Native mode it reproduces YouTube's own caption text word-for-word; in Auto/Generate fallback mode it uses ASR-class (automatic speech recognition) models equivalent to Whisper, not language-model paraphrase. [High confidence]

  3. AssemblyAI does not bypass YouTube's cloud IP block, because its audio_url parameter requires a direct link to a downloadable audio file and explicitly does not support YouTube watch-page URLs, meaning the caller must first download audio via yt-dlp on the GitHub Actions runner. [High confidence]

  4. The original item's assumption that AssemblyAI accepts YouTube URLs directly via audio_url is incorrect, as confirmed by AssemblyAI's official FAQ, which explicitly states that YouTube URLs are not supported and that the audio must be downloaded first. [High confidence]

  5. Kagi's Universal Summarizer accepts YouTube URLs directly and processes them server-side, bypassing the IP block, but its output is a structured summary rather than a verbatim transcript, and YouTube URL support is marked "Experimental" in Kagi's documentation. [High confidence]

  6. Supadata's free tier provides 100 credits per month with no credit card required, and at a research use case volume of a few videos per month, [inference] this free allocation is sufficient indefinitely without any paid upgrade. [High confidence]

  7. Supadata's "Auto" mode is the recommended operational mode for the research workflow because it attempts to retrieve YouTube's native captions first and transparently falls back to AI (ASR-class) transcription when native captions are unavailable or blocked. [Medium confidence]

  8. Integrating Supadata into the existing research tooling requires one new repository secret (SUPADATA_API_KEY) and one new fetcher function using the existing httpx client pattern; no additional Python dependency is required. [High confidence]

Assumptions

Analysis

Supadata is the only candidate that satisfies both the IP-bypass requirement (runner never contacts YouTube) and the output-quality requirement (verbatim or ASR-class near-verbatim text). The two other candidates fail on one criterion each: AssemblyAI fails on IP-bypass (because it requires a prior yt-dlp step), and Kagi fails on output type (summary, not verbatim).

The AssemblyAI finding is worth noting explicitly: the original item's premise was that AssemblyAI "transcribes via their own AI models" from a YouTube URL passed as audio_url. This was incorrect — AssemblyAI's API cannot accept a YouTube watch-page URL. Opinion: This is not a minor detail; it means AssemblyAI provides no architectural advantage over the existing three-tier fallback when used from GitHub Actions.

Gemini (completed item) and Kagi (this item) share the same architectural pattern — server-side YouTube retrieval, language-model output — and the same limitation: the output is not verbatim text. Supadata differs from both by using ASR (not LLM) for its fallback, which preserves verbatim fidelity.

Risks, Gaps, and Uncertainties

Open Questions

  1. Supadata credential approval: SUPADATA_API_KEY is not in the approved credentials table in AGENTS.md. Should it be added? This is a hard stop before implementation — the credential must be approved by the owner before the fetcher is built. (This should become a new backlog item if the owner approves the addition.)

  2. Workflow integration approach: Should Supadata be integrated as a fourth tier in the existing fetch-transcript.yml workflow, or should a new dedicated workflow be created?

  3. yt-dlp + AssemblyAI revisit: If a future experiment confirms that yt-dlp CDN audio downloads succeed from GitHub Actions runners, AssemblyAI should be re-evaluated as a complement (higher ASR quality, paid) to Supadata (lower cost, free tier, comparable quality).


Open Questions


sources

Connected items

Loading…

View full knowledge graph →