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
- Free: 1 delivered transcript per day without signing in, or 10 per day when signed in, covering the first 10 minutes. The website, API and MCP share this allowance, per connection when anonymous and per account when signed in. Signing in raises the total to 10, including that guest transcript; signing out does not reset guest usage.
- A recording counts when a response first contains transcript text. Its remaining pages and repeat reads that day use no extra transcript credits. Cached transcripts count too.
- Failed requests, pending jobs, recording choices and empty responses use no transcript credits. A job that finishes without being retrieved uses none.
- No per-user minute or hourly transcript limit. Service-wide capacity safeguards still apply.
- One new public lookup running per connection and two across the service.
- Across the service: 200 new public lookups per day, 1,000 new jobs on all routes, 600 requests per minute and 20,000 per day.
- Anonymous IPv6 addresses in one /64 share an allowance. Anonymous people sharing one internet address also share it.
- Requests from ChatGPT's and Claude's published connector addresses share one daily allowance per assistant, 200 recordings for ChatGPT and 50 for Claude, and one new public lookup at a time; see the MCP guide. Limits show it as shared_allowance.
- 8 KB request bodies, 2,000-character links and 12,000 characters of transcript per response page.
- Caption transcripts have no recording length limit here. The 4-hour and 600 MB limits apply to audio transcription, which only the website and app start, within a service-wide 30-hour daily speech budget.
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.