Getting started
Instagram transcript API
A single endpoint that takes a public Instagram link and returns the spoken words with timings. Access is by request.
The API does one job. You send a public Instagram link. It sends back the speech as text, with a timestamp on every line, plus subtitle files.
It is the same pipeline behind the free tool on this site. The difference is that you call it from your own code, you get a much higher rate limit, and you can run it across many links at once.
Who this is for
Agencies and research teams pulling transcripts across a set of accounts on a schedule.
Content tools that let their own users paste an Instagram link.
Agents. If you are building with an assistant that needs to read short video, there is an MCP server that wraps the same endpoint.
Getting access
The API is in private beta. There is no self-serve signup yet.
Email hi@instagramtotranscript.com with a rough idea of your volume and what you are building. You get a key back, along with a rate limit that fits.
Tell us the monthly request count you expect. That is the only number we need to size it.
What you get back
Every successful call returns the same object.
transcriptis the whole thing as one block of text.segmentsis an array of lines, each with a start and end time in seconds.srtandvttare ready-made subtitle files as strings.timestampedis a human-readable version with[mm:ss]in front of each line.languageis the detected language as a two-letter code.
You almost always want transcript or srt. The rest are there so you do not have to build them yourself.
What it will not do
Private posts. The endpoint reads what is publicly readable. A post behind a login returns PRIVATE. No key changes that.
Stories. Reels, ordinary video posts and IGTV links only.
Long video. There is a duration cap. It is three minutes on the free tool and higher on a key, but it is not unlimited.
Video hosting. Nothing is stored. The audio lives in a temporary folder for the length of the request and is deleted when it ends. If you need the transcript later, save it on your side.
Rate limits
Every response carries the usual headers.
| Header | Meaning |
|---|---|
x-ratelimit-limit |
Requests allowed in the current window |
x-ratelimit-remaining |
Requests left |
retry-after |
Seconds to wait, sent with a 429 |
Back off when you see a 429. Retrying immediately will not work and it counts against you.
Next
Start with the quickstart. It is one request.