Instagram hub

Instagram transcript API

Pass a public `/p/`, `/reel/`, or `/tv/` URL and get per-media plain-text rows — including multiple rows when a carousel has more than one video clip.

GET /v1/instagram/posts/transcript

1 credit per successful request.

About this endpoint

`GET /v1/instagram/posts/transcript` is the single transcript route for Instagram media. Pass a public `url` (`/p/…`, `/reel/…`, or `/tv/…`). There is no separate Reel-only transcript path. On a completed call, branch on `data.lookupStatus` (`found` / `not_found`), then iterate `data.transcripts` — each row has `id`, `shortcode`, and `text` (plain string or null). `found` means the media resolved; it does not mean every row has non-null text.

Carousel albums can return more than one transcript row when multiple video children expose text. Clips that exceed the supported length fail with HTTP 400 `video_too_long_for_transcription` instead of a null row on 200. This route has no `useAiFallback` — missing speech stays null. Pricing is on the credit badge; bill from `meta.creditsCharged`.

Instagram transcript API FAQ

How do I get an Instagram post or Reel transcript via API?

Call `GET /v1/instagram/posts/transcript` with your Social Fetch API key (`x-api-key`) and a public post, Reel, or IGTV `url`. Read `data.lookupStatus`, then iterate `data.transcripts`. See the API docs for parameters and examples.

How much does the Instagram transcript endpoint cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth.

Is there a separate Instagram Reel transcript endpoint?

No. Reels use the same `GET /v1/instagram/posts/transcript` route as `/p/…` and `/tv/…` links. Pass the Reel URL as `url`; do not look for a `/reels/transcript` path.

What format is the Instagram transcript response?

An array of plain-text rows in `data.transcripts` (`id`, `shortcode`, `text`). `text` is a string or null — not WebVTT and not timed segments. Always check `lookupStatus` and each row's `text` before writing speech into your store.

Does found mean every Instagram transcript row has text?

No. `found` means the post or Reel resolved. Individual `transcripts[].text` values can still be null when Instagram exposes no spoken text for that media item. You still pay for a completed lookup. Persist `meta.requestId` when a row looks wrong.

Can carousel Instagram posts return multiple transcripts?

Yes. When a carousel has more than one video item with transcript data, `data.transcripts` can contain multiple rows. Iterate the array; do not assume a single object.

What happens if an Instagram Reel is too long to transcribe?

The API returns HTTP 400 with `video_too_long_for_transcription`. That is not the same as a 200 with `text: null`. Persist `meta.requestId` / `error.requestId` if you need support on a rejected clip.