Instagram API

Instagram Reel transcript API

Transcribe any public Instagram reel or video post: the full speech transcript, speaker labels, and word-level timestamps, from a reel URL or an Instagram CDN media URL you already hold. Transcription runs on MAI-Transcribe-2, chosen for its accuracy and its speaker labels. Turn on hostVideo to also get the MP4 on a hosted link that plays without an Instagram session. If you only want the text, instagram.media_transcript is the cheaper transcript-only option; if you only want the file, instagram.post is where you go.

POST/v1/run/instagram.reel_transcript
Uptime
98.99%
30d · 99 calls
Requests
99
30d · weekly, last 12 wks
Response
32.6s
median · 30d

Try it

Make your first request

Open in
Get a free key
Sample response
Free runs return only the first 3 results. Fund a key to get the full response.
{
  "data": {
    "items": [
      {
        "bytes": 42,
        "durationSeconds": 12.5,
        "expiresUtc": 12.5,
        "hostedUrl": "https://example.com/page",
        "id": "a1b2c3d4",
        "language": "en",
        "likeCount": 12500,
        "mediaType": "general",
        "ownerUsername": "alex_rivera",
        "segments": [
          {
            "end": 12.5,
            "speaker": "example",
            "start": 12.5,
            "text": "A short example description of this item.",
            "words": [
              null
            ]
          }
        ],
        "shortcode": "a1b2c3d4",
        "text": "A short example description of this item.",
        "thumbnailUrl": "https://example.com/image.jpg",
        "url": "https://example.com/page"
      }
    ]
  },
  "found": true
}
Response interface
interface InstagramReelTranscriptResponse {
  data: {
    items: {
      bytes?: number;
      durationSeconds?: number;
      expiresUtc?: number;
      hostedUrl?: string;
      id: string;
      language?: string;
      likeCount?: number;
      mediaType?: string;
      ownerUsername?: string;
      segments?: {
        end?: number;
        speaker?: string;
        start?: number;
        text?: string;
        words?: {
          end?: number;
          start?: number;
          text?: string;
        }[];
      }[];
      shortcode?: string;
      text: string;
      thumbnailUrl?: string;
      url: string;
    }[];
  } | null;
  found: boolean;
}

Full parameter and response reference - every field, type, and example for this endpoint.

Reference

Request, response, and price

Last verified 2026-09-14 · uptime and latency measured over 30d
POST /v1/run/instagram.reel_transcript
curl -X POST https://api.getanyapi.com/v1/run/instagram.reel_transcript \
  -H "Authorization: Bearer $ANYAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hostVideo":true,"url":"https://www.instagram.com/reel/CfY6jCIgH-P/","wordTimestamps":false}'
FieldTypeExample value
Request body
urlstring"https://www.instagram.com/reel/CfY6jCIgH-P/"The URL of a public Instagram reel or video post (e.g. https://www.instagram.com/reel/C8yKXdRxKqK/), or an Instagram CDN media URL you already hold.
hostVideobooleantrueSet true to also get the reel's MP4 on a hosted link you can play without an Instagram session. Charged as an extra on top of the transcript (e.g. true).
wordTimestampsbooleanfalseSet true to include a precise timestamp for every word in the transcript (e.g. true).
Response
dataobject
data.itemsobject[]Record for the requested reel (one item), with the full transcript text, timed segments, source video metadata, and the hosted video link when hostVideo was asked for. Populated whenever the provider has data for the entity.
data.items[].bytesintegerSize of the hosted MP4 in bytes. Present only when hostVideo was true.
data.items[].durationSecondsnumberVideo duration in seconds. Absent when there is no transcript, which is what measures it.
data.items[].expiresUtcnumberUTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. After this moment the hosted MP4 is deleted. Present only when hostVideo was true.
data.items[].hostedUrlstringA direct link to the downloaded MP4, hosted by AnyAPI and playable without an Instagram session. Present only when hostVideo was true.
data.items[].idstringThe reel's numeric Instagram media ID, as a string. Empty when the request supplied a CDN media URL, which carries no post record. Populated whenever the provider has data for the entity.
data.items[].languagestringDetected spoken language (ISO 639-1 code, e.g. "en"). Absent when there is no transcript.
data.items[].likeCountintegerNumber of likes on the reel. Absent when the lane that served the lookup does not carry a like count.
data.items[].mediaTypestringWhat kind of media this is, as Instagram labels it (for example a video or an image post).
data.items[].ownerUsernamestringUsername of the reel's owner, without the @ prefix. Empty when the request supplied a CDN media URL.
data.items[].segmentsobject[]Time-aligned transcript segments in playback order, one per sentence, each with its text, speaker label, and start/end offsets in seconds. A segment starts when its first word is spoken and ends when its last one finishes. Empty when the reel has no detectable spoken audio.
data.items[].segments[].endnumberSegment end offset in seconds from the start of the video.
data.items[].segments[].speakerstringWhich speaker said this segment, as a stable label within this transcript (e.g. "0", "1").
data.items[].segments[].startnumberSegment start offset in seconds from the start of the video.
data.items[].segments[].textstringThe segment's transcribed text.
data.items[].segments[].wordsobject[]Every word in the segment with its own timing. Present only when wordTimestamps was true.
data.items[].segments[].words[].endnumberWord end offset in seconds from the start of the video.
data.items[].segments[].words[].startnumberWord start offset in seconds from the start of the video.
data.items[].segments[].words[].textstringThe word as spoken.
data.items[].shortcodestringThe reel's short code, the part of its instagram.com URL after /reel/. Empty when the request supplied a CDN media URL.
data.items[].textstringThe full speech transcript. Empty when the reel has no detectable spoken audio. Populated whenever the provider has data for the entity.
data.items[].thumbnailUrlstringA link to the reel's cover image on Instagram. This link is signed by Instagram and stops working after a short time.
data.items[].urlstringThe reel URL the request asked for, returned as sent. Populated whenever the provider has data for the entity.
foundbooleanWhether the reel was found and transcribed.
Price
Price per request (ceiling)USD$0.095
Price /1k audio minutesUSD$5.94

FAQ

About the Instagram Reel transcript API

The AnyAPI Instagram Reel transcript API returns Instagram reel transcript data as normalized JSON from one POST call to /v1/run/instagram.reel_transcript. Transcribe any public Instagram reel or video post: the full speech transcript, speaker labels, and word-level timestamps, from a reel URL or an Instagram CDN media URL you already hold. Transcription runs on MAI-Transcribe-2, chosen for its accuracy and its speaker labels. Turn on hostVideo to also get the MP4 on a hosted link that plays without an Instagram session. If you only want the text, instagram.media_transcript is the cheaper transcript-only option; if you only want the file, instagram.post is where you go. AnyAPI returns one normalized schema whichever source serves it. It costs $5.94 per 1,000 audio minutes, and never more than $0.095 for a single request, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 99.0% of Instagram reel transcript calls through AnyAPI succeeded, with a median response time of 32.6 seconds across 99 measured calls.

It costs $5.94 per 1,000 audio minutes, and never more than $0.095 for a single request, in US dollars with no subscription and no monthly minimum. You fund one USD wallet, each call draws it down, and a failed request costs $0.

Transcribe any public Instagram reel or video post: the full speech transcript, speaker labels, and word-level timestamps, from a reel URL or an Instagram CDN media URL you already hold. Transcription runs on MAI-Transcribe-2, chosen for its accuracy and its speaker labels. Turn on hostVideo to also get the MP4 on a hosted link that plays without an Instagram session. If you only want the text, instagram.media_transcript is the cheaper transcript-only option; if you only want the file, instagram.post is where you go. The response is normalized JSON with the same envelope every AnyAPI endpoint returns, so parsing a second endpoint is a change of URL and nothing else.

Over the last 30 days, 99.0% of Instagram reel transcript calls through AnyAPI succeeded, with a median response time of 32.6 seconds across 99 measured calls. These are AnyAPI's own measurements of traffic through the gateway, recomputed continuously, not a published service-level target.