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.

  • transcript is the whole thing as one block of text.
  • segments is an array of lines, each with a start and end time in seconds.
  • srt and vtt are ready-made subtitle files as strings.
  • timestamped is a human-readable version with [mm:ss] in front of each line.
  • language is 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.