TranscriptFox

API

Using an AI assistant? See the MCP server.

Use TranscriptFox from your scripts and apps. The HTTP API is free and needs no account or API key. It reads captions or transcripts already saved by the website. It never downloads audio or starts paid speech recognition.

What you can read

New lookups support YouTube, Vimeo and TED links. Other supported sites work when their transcript is already in our shared cache. Recordings without readable captions return an error. Use the website for audio transcription or file uploads.

Shared limits

Daily allowances reset at 00:00 UTC and survive restarts. Delivery means returning text in a response; we cannot confirm that your app displayed it. Polls, invalid inputs and failures still count toward traffic protection, and started lookups count toward the service-wide processing cap, but neither uses a transcript credit. Connection and processing limits can return a busy response while the service is at capacity. Limits can change; read the current limits.

Plus ($5/month, 100 transcripts a day) and Pro ($20/month, 500 a day) give full-length transcripts within the processing limits. The API and MCP have no API keys, so anonymous scripts and AI assistants get 1 transcript a day per connection. A request that carries a TranscriptFox sign-in uses that account's plan. API and MCP transcripts are never saved to your account, even on Pro. See plans.

HTTP API

Send a JSON POST to https://www.transcriptfox.com/api/v1/transcripts, with Content-Type: application/json. The body has a required url, an optional offset starting at 0 and an optional limit from 500 to 12,000, default 6,000. No other fields are accepted.

Windows PowerShell

Copy this whole command into PowerShell. It sends the request and prints the JSON response.

Invoke-RestMethod -Method Post -Uri 'https://www.transcriptfox.com/api/v1/transcripts' -ContentType 'application/json' -Body '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","limit":6000}' | ConvertTo-Json -Depth 6

macOS or Linux terminal

curl 'https://www.transcriptfox.com/api/v1/transcripts' -H 'Content-Type: application/json' -d '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","limit":6000}'

Each example is one command, even if it wraps on your screen. Bash uses a backslash to continue commands across lines; PowerShell does not. Opening the endpoint in a browser sends GET and returns 405 because transcript requests require POST.

A 200 response has ok: true and either a transcript page or choices for a page with several recordings. Choose a recording by submitting its link. A transcript page includes title, site, url, duration, language, kind, text, offset, next_offset and total_chars. kind says where the text came from: manual is a caption or transcript track the site publishes (sites do not always say whether a person or a machine wrote it), auto is the site's automatic captions, mixed is published captions with automatic caption additions and speech is TranscriptFox speech recognition. A limited result includes preview: {limited: true, seconds: 600, plan: "free", upgrade_url: "/pricing"}. Only the available preview text is sent; hidden full text is never included. Offsets count Unicode characters, not bytes or JavaScript string units. Keep requesting the same URL with next_offset until it is null; joining each text value in order gives the available text, limited to the first 10 minutes on Free.

A 202 response has pending: true, stage and poll_after. Wait five seconds, then repeat the same POST. Concurrent requests for the same recording share one public lookup. A 429 response means an allowance or edge limit was reached; when it is a daily allowance, resets_at gives the reset time (00:00 UTC). A 503 means busy or temporarily unavailable. Respect Retry-After and stop immediate retries. Other errors include ok: false, error and message. If a safe preview cannot be produced, preview_unavailable returns an error rather than full text. The OpenAPI schema describes these endpoints.

Fair use and privacy

Use public media you have the right to read. No crawling, bulk harvesting, attempts to evade limits, credentials in links, protected recordings, file uploads or playback downloads through the API. Availability and transcript accuracy depend on the source. A shared transcript can be older than the current recording.

We retain hashed connection buckets for usage checks for up to two days, removed during later requests. Delivery records also contain a hashed recording key and delivery time. These are usage records, not anonymous identities; existing technical access logs can contain addresses. Successful link transcripts enter the same persistent shared cache as website transcripts. Upload results are never exposed through the public API. See Privacy and Terms.