Instagram AI Transcript Extractor

Extract transcript-ready text, public captions, shortcodes, hashtags, mentions, and status rows from public Instagram Reels and videos.

Data fields

FieldTypeDescription
inputUrlstringValue exported as inputUrl.
canonicalUrlstring | nullValue exported as canonicalUrl.
shortcodestring | nullValue exported as shortcode.
statusstringValue exported as status.
errorTypestring | nullValue exported as errorType.
errorMessagestring | nullValue exported as errorMessage.
transcriptTextstring | nullValue exported as transcriptText.
segmentsarrayValue exported as segments.

Input preview

startUrlsPublic Reel or video URLs *
maxItemsMaximum URLs to process
languageSpeech language
includeSegmentsInclude timestamped segments
proxyConfigurationProxy configuration

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Extract AI transcripts from public Instagram Reels and video posts. Add Reel URLs, run the Actor, and export transcript text, timestamped segments, media metadata, and per-URL status rows for research, repurposing, accessibility, compliance review, and content analysis workflows.

What it does

  • Transcribes public Instagram Reels/videos into readable text
  • Includes timestamped transcript segments when ASR returns segment timing
  • Preserves one dataset row per input URL, including classified failures
  • Normalizes Instagram URLs and deduplicates repeated inputs
  • Reports duration, media bytes, model/source, and scrape timestamp for QA and cost tracking

Who is it for

  • Social media teams turning Reels into blog posts, captions, summaries, and briefs
  • Researchers reviewing creator messaging, public campaigns, or trends
  • Accessibility and compliance teams that need text from public video content
  • Developers and AI agents that need transcript text as structured data

Input example

{
  "startUrls": [
    { "url": "https://www.instagram.com/reel/DPR-1mcCAqa/" }
  ],
  "maxItems": 1,
  "language": "en",
  "includeSegments": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}

Input settings

Key Type Description
startUrls array Public Instagram Reel/video/post URLs to transcribe.
maxItems integer Maximum unique URLs to process from the input list.
language string en for English baseline transcription or auto for auto-detect mode.
includeSegments boolean Keeps timestamped segment objects in the dataset output.
proxyConfiguration object Apify Proxy settings. Residential proxy is recommended for Instagram.

Output example

{
  "inputUrl": "https://www.instagram.com/reel/DPR-1mcCAqa/",
  "canonicalUrl": "https://www.instagram.com/reel/DPR-1mcCAqa/",
  "shortcode": "DPR-1mcCAqa",
  "status": "succeeded",
  "errorType": null,
  "errorMessage": null,
  "transcriptText": "When you wake up with all the dreams... You might have a thousand problems until you have one.",
  "segments": [
    { "id": 1, "startSeconds": 0, "endSeconds": 5.12, "text": "When you wake up with all the dreams..." }
  ],
  "language": "en",
  "requestedLanguage": "en",
  "transcriptionSource": "logged-out Instagram browser payload + MP4 download + whisper.cpp",
  "asrModel": "ggml-base.en.bin",
  "durationSeconds": 47.188,
  "ownerUsername": null,
  "ownerId": null,
  "caption": null,
  "mediaType": "clips/reel",
  "mediaId": null,
  "videoUrlFound": true,
  "videoContentLength": 5596476,
  "scrapedAt": "2026-08-02T18:58:12.560Z",
  "metadata": { "httpStatus": 200, "htmlBytes": 733429 }
}

Input recipes

  • Single Reel transcript: set one public Reel URL and maxItems to 1.
  • Small batch review: provide 3-10 public Reel URLs and keep language as en for English speech.
  • Failure audit: include known private/deleted/unsupported URLs to receive classified failure rows without losing successful transcripts from the same run.

Limits and troubleshooting

  • Only public Instagram Reel/video URLs are supported. Private, deleted, unavailable, or unsupported URLs return failure rows.
  • Transcript quality depends on audio clarity, speech language, background music, and speaker overlap.
  • Very long videos take longer because audio must be downloaded and transcribed.
  • Instagram may temporarily throttle anonymous access; retry later or keep Apify Proxy enabled.
  • No native Instagram transcript is required; the Actor transcribes public media audio.

API usage

JavaScript:

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/instagram-ai-transcript-extractor').call({
  startUrls: [{ url: 'https://www.instagram.com/reel/DPR-1mcCAqa/' }],
  maxItems: 1,
  language: 'en',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].transcriptText);

Python:

from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/instagram-ai-transcript-extractor').call(run_input={
    'startUrls': [{ 'url': 'https://www.instagram.com/reel/DPR-1mcCAqa/' }],
    'maxItems': 1,
    'language': 'en',
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items[0]['transcriptText'])

cURL:

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~instagram-ai-transcript-extractor/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"startUrls":[{"url":"https://www.instagram.com/reel/DPR-1mcCAqa/"}],"maxItems":1,"language":"en"}'

MCP and agent usage

Use this Actor from agents through Apify MCP with:

https://mcp.apify.com/?tools=fetch_cat/instagram-ai-transcript-extractor

Claude CLI example:

claude mcp add apify-instagram-transcripts https://mcp.apify.com/?tools=fetch_cat/instagram-ai-transcript-extractor

MCP JSON config example:

{
  "mcpServers": {
    "apify-instagram-transcripts": {
      "url": "https://mcp.apify.com/?tools=fetch_cat/instagram-ai-transcript-extractor"
    }
  }
}

Example prompts:

  • "Transcribe these three public Instagram Reel URLs and return transcript text plus timestamps."
  • "Run the Instagram AI Transcript Extractor and summarize only rows where status is succeeded."
  • "Check failed rows and group them by errorType."

Support

Questions or issues? Open an issue on the Actor page in Apify Console and include the run ID plus a sample URL that reproduces the behavior.

Common questions

Questions and answers reused from the canonical actor README.

Can it transcribe private Reels?

No. It only processes public Instagram media available to anonymous visitors.

Does it use Instagram captions as transcripts?

No. It produces a transcript from the public media audio and also attempts to preserve caption/media metadata separately.

Why is ownerUsername sometimes null?

Instagram page payloads vary. The Actor emits truthful public metadata when present and leaves unavailable fields as null.

Can I use it in automation workflows?

Yes. Use the API or MCP endpoint and read rows from the default dataset.

How should I handle failed rows?

Check errorType and errorMessage. Mixed batches preserve successes even when one URL fails.