Instagram Transcript Scraper
Pricing
from $10.00 / 1,000 transcript extracteds
Instagram Transcript Scraper
AI transcript extractor for Instagram Reels and video posts. No cookies, no login. MCP/API-ready.
Pricing
from $10.00 / 1,000 transcript extracteds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
4
Monthly active users
2 days ago
Last modified
Categories
Share
Instagram Transcript Scraper is an Apify Actor for turning specific Instagram Reels and video posts into AI-generated text. It accepts Instagram Reel or video-post URLs, or bare shortcodes, and returns one dataset record per input record with the transcript, shortcode, canonical URL, carousel flag, language hint, source provider, status, note, and scrape timestamp. The output is suited for search, review, and downstream AI workflows, and the Actor is available through Apify MCP as well as the Apify API.
Best fit and connected workflows
This Actor fits workflows that start with a specific Instagram post and end with structured spoken-audio text. It is a practical choice when you already know the post URLs and want clean transcript records for:
- content review and editorial workflows,
- transcript-based research or knowledge bases,
- LLM and RAG pipelines that need Instagram video text,
- accessibility or internal archiving use cases,
- Use follow-up engagement workflows paired with Instagram Comments Scraper, when the next step is to collect comments around the same Instagram content.
The Actor is built for specific video posts, not profile-wide discovery. That makes the input and output contract straightforward: one requested post becomes one output record, with carousel posts represented as one record containing multiple transcript items.
Practical scenario
Maya, a researcher, has a short list of Instagram Reel URLs from a creator's campaign. She sends those URLs in instagramUrls. The Actor returns fields like transcript, status, source, and scrapedAt. Maya sees which videos produced ok transcripts, which ones had no_transcribable_audio, and which provider handled each record. Her next step is to copy the transcript dataset into a note-taking workflow and use the transcript text as source material for analysis.
Input fields
| Field | Type | Description |
|---|---|---|
instagramUrls | array | Instagram Reel or video-post URLs, or bare shortcodes, to transcribe. This is the main input. |
startUrls | array | Alternative request-object form, useful for chaining from another Actor output. |
maxTranscripts | integer | Hard cap on how many videos are transcribed and billed in one run. Default: 100. |
language | string | Optional language hint stored on each output record. Default: auto. |
Focused input example
{"instagramUrls": ["https://www.instagram.com/reel/DZpQwxqimz2/","https://www.instagram.com/p/C9wYv3kSxJ-/"],"maxTranscripts": 25,"language": "en"}
Output fields
| Field | Type | Description |
|---|---|---|
shortcode | string or null | Instagram post or reel shortcode. |
url | string | Canonical Instagram URL transcribed. |
transcript | string or null | Full AI-generated spoken-audio transcript. |
transcriptItems | array | Per-media transcript parts. |
isCarousel | boolean | True when the post contained multiple videos. |
language | string or null | Language hint label from input. |
source | string or null | Provider that produced the transcript. |
status | string | Record status such as ok, no_transcribable_audio, or provider_error. |
note | string or null | Human-readable explanation for non-ok records. |
scrapedAt | string | ISO 8601 timestamp of extraction. |
Illustrative output record
{"shortcode": "DZpQwxqimz2","url": "https://www.instagram.com/reel/DZpQwxqimz2/","transcript": "We all know the story of Pompeii, right? This is the story I want to tell.","transcriptItems": [{"shortcode": "DZpQwxqimz2","text": "We all know the story of Pompeii, right? This is the story I want to tell."}],"isCarousel": false,"language": "auto","source": "sociavault","status": "ok","note": null,"scrapedAt": "2026-06-26T03:10:00.000Z"}
How it works
This Actor follows a simple transcript workflow:
- It normalizes each Instagram target from
instagramUrlsorstartUrls. - It sends the target to ScrapeCreators first, then uses SociaVault as a fallback provider.
- It stores a transcript record in the dataset for each input post.
- It writes a run summary to the
OUTPUTkey-value store record.
The live contract also shows that the Actor is carousel-aware and that transcript records include a status field, source provider, and extraction timestamp.
Pricing
This Actor uses Pay per event pricing plus standard Apify platform usage. The live Pricing tab in the Apify console shows the current cost details for your account and execution configuration.
The billed event types in the contract are:
- Actor start: charged once per run.
- Transcript extracted: charged once per Instagram video successfully transcribed.
Example in words: if a run starts once and extracts twelve transcripts, the execution includes one actor-start event and twelve transcript-extracted events. Carousel posts share one transcript-extracted charge per post. Review the live Pricing tab for the current amount before running.
Use with AI agents (MCP)
This Actor is usable through Apify MCP. It exposes a tool for transcript extraction from Instagram Reel and video-post URLs, with structured input and output that works well in agent pipelines.
Exact Actor identity: khadinakbar/instagram-transcript-scraper
Tool description:
- Accepts Instagram Reel or video-post URLs, or request objects through
startUrls - Returns dataset records with transcript text, status, source provider, and timestamp
- Supports a language hint field for metadata labeling
- Uses a hard cap with
maxTranscriptsto bound the number of transcripted posts in one run
Extract transcripts from these Instagram Reels and video posts: https://www.instagram.com/reel/DZpQwxqimz2/ https://www.instagram.com/p/C9wYv3kSxJ-/ Return the dataset records with transcript text, status, source, and scrapedAt. Use
language: "auto"and cap the run withmaxTranscripts: 25.
Output interpretation:
transcriptcontains the spoken audio text for the post.status: "ok"indicates a transcript record.status: "no_transcribable_audio"indicates a record with no spoken audio detected.status: "provider_error"indicates a provider-side issue captured in the record.sourceidentifies which transcript provider produced the record.
Provenance and scope:
- The Actor works from Instagram post URLs or shortcodes.
- It is designed for Reels and video posts.
- It writes dataset records and a run summary for downstream agent use.
Pagination and cost guidance:
- Results are stored in the default dataset and can be read back in pages through the dataset items API.
- Set
maxTranscriptsto control how many posts are transcribed and billed in one run. - Carousel posts count as one transcript-extracted event per post.
JavaScript API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const input = {instagramUrls: ['https://www.instagram.com/reel/DZpQwxqimz2/'],maxTranscripts: 10,language: 'auto',};const run = await client.actor('khadinakbar/instagram-transcript-scraper').call(input);const datasetId = run.defaultDatasetId;const { items } = await client.dataset(datasetId).listItems({ clean: true });console.log('Transcripts:', items);
Best results and outcome guidance
Start with direct Instagram Reel or video-post URLs when you already have the targets. Use instagramUrls for manual runs and startUrls when another Actor or agent emits URL objects. Keep maxTranscripts aligned with the number of posts you want processed in the run, and use language as a metadata label when you want to tag expected spoken language in the output records.
For carousel posts, expect one record with isCarousel: true and multiple transcriptItems. For posts with no spoken audio, review status and note together. If you are chaining this Actor into another workflow, the transcript field is usually the primary text field, while source, status, and scrapedAt help with provenance and auditability.
Design note
I found that the live contract exposes both instagramUrls and startUrls, with startUrls described as a chaining-friendly request-object form. That is a useful contract detail for agent pipelines because it makes the Actor work in both manual and programmatic workflows.
FAQ
Can I send usernames or hashtags instead of post URLs?
This Actor is designed for specific Instagram Reel or video-post URLs, or bare shortcodes. Its input contract centers on individual posts.
What happens with carousel posts?
Carousel posts are represented as one output record with isCarousel: true, and the transcript text is joined from the per-media transcript items.
Can I use this in an Apify workflow with another Instagram Actor?
Use Yes. A natural pairing is Instagram Comments Scraper when you want to move from transcript analysis to comments on the same content.
How do I control run size?
Use maxTranscripts to set a hard cap on how many posts are transcribed and billed in one run.
Is this usable through Apify MCP?
Yes. The Actor is MCP-ready and can be called as khadinakbar/instagram-transcript-scraper with structured inputs and dataset readback.
Responsible use
Use this Actor only for content you are permitted to access and process. It works on publicly available Instagram video content and does not use cookies or login credentials. Follow Instagram's Terms of Service and the applicable copyright and data-protection rules for your use case.