Instagram AI Transcript Extractor avatar

Instagram AI Transcript Extractor

Pricing

from $1.20 / 1,000 item extracteds

Go to Apify Store
Instagram AI Transcript Extractor

Instagram AI Transcript Extractor

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

Pricing

from $1.20 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

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

KeyTypeDescription
startUrlsarrayPublic Instagram Reel/video/post URLs to transcribe.
maxItemsintegerMaximum unique URLs to process from the input list.
languagestringen for English baseline transcription or auto for auto-detect mode.
includeSegmentsbooleanKeeps timestamped segment objects in the dataset output.
proxyConfigurationobjectApify 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 }
}

Output fields

FieldDescription
inputUrl, canonicalUrl, shortcodeOriginal URL, normalized Instagram URL, and shortcode.
statussucceeded or failed for each input URL.
errorType, errorMessageFailure classification and explanation when a URL cannot be transcribed.
transcriptTextFull transcript text when speech is detected and ASR succeeds.
segmentsTimestamped transcript segments with start/end seconds.
language, requestedLanguageOutput language and requested transcription language.
transcriptionSource, asrModelSource/method label and local ASR model used.
durationSecondsMedia duration measured from the downloaded video.
ownerUsername, ownerId, caption, mediaType, mediaIdPublic media metadata when available in the Instagram page payload.
videoUrlFound, videoContentLengthMedia extraction/download diagnostics.
scrapedAt, metadataISO scrape time and additional public route diagnostics.

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.

Pricing

This Actor uses pay-per-event pricing: a small start event and one per-item event for each successful transcript row. Check the live Apify Pricing tab for current rates before running large batches.

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."

FAQ

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.

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.