Instagram AI Transcript Extractor
Pricing
from $1.20 / 1,000 item extracteds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
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
| 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 }}
Output fields
| Field | Description |
|---|---|
inputUrl, canonicalUrl, shortcode | Original URL, normalized Instagram URL, and shortcode. |
status | succeeded or failed for each input URL. |
errorType, errorMessage | Failure classification and explanation when a URL cannot be transcribed. |
transcriptText | Full transcript text when speech is detected and ASR succeeds. |
segments | Timestamped transcript segments with start/end seconds. |
language, requestedLanguage | Output language and requested transcription language. |
transcriptionSource, asrModel | Source/method label and local ASR model used. |
durationSeconds | Media duration measured from the downloaded video. |
ownerUsername, ownerId, caption, mediaType, mediaId | Public media metadata when available in the Instagram page payload. |
videoUrlFound, videoContentLength | Media extraction/download diagnostics. |
scrapedAt, metadata | ISO scrape time and additional public route diagnostics. |
Input recipes
- Single Reel transcript: set one public Reel URL and
maxItemsto1. - Small batch review: provide 3-10 public Reel URLs and keep
languageasenfor 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 ApifyClientclient = 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().itemsprint(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
statusissucceeded." - "Check failed rows and group them by
errorType."
Related actors
- Instagram Search Scraper
- Instagram Profile Scraper
- Instagram Post Scraper
- Best TikTok AI Transcript Extractor
- TikTok Scraper
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.