Instagram Transcript Scraper avatar

Instagram Transcript Scraper

Pricing

Pay per event

Go to Apify Store
Instagram Transcript Scraper

Instagram Transcript Scraper

Turn public Instagram Reels and video posts into transcript text, detected language, timestamped segments, and source metadata.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Categories

Share

Turn supplied public Instagram Reels and video posts into structured Instagram transcript records. Each successful record includes clean transcript text, detected language, timestamped segments, duration, author, caption, media provenance, and the original source URL.

The Actor is designed for recurring content monitoring, hook research, editorial review, accessibility work, and data pipelines that need speech as text rather than only post metadata. It does not require an Instagram login and does not scrape private content.

What does Instagram Transcript Scraper do?

The Actor accepts known public Instagram video URLs and:

  1. validates and normalizes each Reel or video-post URL;
  2. resolves public media metadata from Instagram's embed surface;
  3. checks duration before downloading the video;
  4. runs local AI speech recognition;
  5. returns one typed dataset record per successful video;
  6. charges the transcript event only when non-empty transcript text is produced.

It supports these public URL shapes:

  • https://www.instagram.com/reel/SHORTCODE/
  • https://www.instagram.com/p/SHORTCODE/ when the post is a video
  • https://www.instagram.com/tv/SHORTCODE/

Who is it for?

Social media analysts

Archive the spoken claims, hooks, and calls to action in a saved list of public videos. Schedule the same input to compare content records over time.

Marketing and creative teams

Turn competitor or campaign Reels into searchable text for qualitative review. Use timestamps to jump from a quote back to the relevant point in a video.

Newsrooms and researchers

Create source-linked transcript datasets from known public posts. Retain the author, caption, shortcode, duration, and extraction time with the transcript.

Developers and data teams

Feed normalized records into spreadsheets, warehouses, vector databases, LLM workflows, or alerting systems. Use the stable shortcode and canonical URL as join keys.

Why use this Actor?

  • Timestamped output: ordered segments include start time, end time, and spoken text.
  • Source provenance: every result keeps the supplied URL, canonical URL, shortcode, media ID, author, and caption when available.
  • Language control: detect speech automatically or provide a language code.
  • No external transcription API: speech recognition runs inside the Actor container.
  • Bounded processing: a duration limit is checked before transcription and videos run sequentially for predictable memory use.
  • Success-based item charging: failed, private, image-only, silent, or unavailable URLs do not emit a transcript charge.

What data can I extract?

FieldMeaning
sourceUrlURL supplied in the Actor input
canonicalUrlNormalized Instagram content URL
shortcodeStable Instagram content shortcode
mediaIdPublic media identifier when exposed
authorUsernamePublic author username when exposed
authorIdPublic author identifier when exposed
captionAuthor-published caption when exposed
durationSecondsVideo duration reported by Instagram
thumbnailUrlTemporary public thumbnail URL
transcriptNormalized spoken transcript text
languageDetected or requested language code
languageProbabilityDetection confidence from zero to one
segmentsOrdered { startSeconds, endSeconds, text } entries
segmentCountNumber of timestamped segments
wordCountApproximate whitespace-delimited word count
extractionMethodMedia resolution and transcription method
transcriptionModelSpeech recognition model identifier
transcribedAtISO 8601 completion timestamp

Temporary Instagram CDN links can expire. Use canonicalUrl and shortcode as durable provenance instead of treating thumbnailUrl as permanent storage.

How to get started

  1. Open the Actor input page.
  2. Add one or more public Instagram Reel or video-post URLs.
  3. Keep language set to auto, or enter a language such as en or es.
  4. Set maxVideoDurationSeconds to the longest video you want to accept.
  5. Start the run.
  6. Open the default dataset and use the Instagram transcripts view.
  7. Export results as JSON, CSV, Excel, XML, or RSS, or consume them through the API.

Start with one known public video. After confirming the output fits your workflow, add up to five URLs per run or schedule the saved Actor task.

Input parameters

startUrls

Required array of public Instagram Reel, video post, or Instagram TV URLs. Duplicate shortcodes are processed once. Private profiles, Stories, profile pages, image-only posts, and login-only URLs are outside the product scope.

maxItems

Maximum number of unique supplied URLs to process. The accepted range is 1–5 and the default is 3. This is a bounded batch control, not search or profile discovery.

language

Use auto for language detection. Alternatively, provide a two- or three-letter language code such as en, es, fr, or deu. A correct language hint can improve recognition for short clips.

maxVideoDurationSeconds

Reject videos longer than this limit before transcription. The accepted range is 10–1800 seconds and the default is 600 seconds. Lower it for fast monitoring jobs with short-form videos.

Example input

{
"startUrls": [
{ "url": "https://www.instagram.com/reel/DV29mBcMQwp/" }
],
"maxItems": 1,
"language": "auto",
"maxVideoDurationSeconds": 120
}

For recurring monitoring, save the same URL list as an Apify task and attach a schedule. Each run produces a new dataset with current source metadata and a fresh transcription timestamp.

Example output

The following shortened example reflects the current output shape:

{
"sourceUrl": "https://www.instagram.com/reel/DV29mBcMQwp/",
"canonicalUrl": "https://www.instagram.com/reel/DV29mBcMQwp/",
"shortcode": "DV29mBcMQwp",
"mediaId": "3852537424986049577",
"authorUsername": "bbcnews",
"durationSeconds": 68.22,
"language": "en",
"languageProbability": 0.992381,
"transcript": "On Friday, US President Donald Trump claimed...",
"segments": [
{
"startSeconds": 0,
"endSeconds": 4.48,
"text": "On Friday, US President Donald Trump claimed..."
}
],
"segmentCount": 22,
"wordCount": 226,
"extractionMethod": "instagram-embed-ai-speech-to-text",
"transcriptionModel": "faster-whisper-tiny",
"transcribedAt": "2026-08-14T20:00:00.000Z"
}

Transcript accuracy varies with music, overlapping speakers, background noise, accents, compression, and recording quality. Always review quotations before publishing them.

How much does it cost to transcribe Instagram videos?

Pricing has two events:

  • Run started: $0.005 once per run.
  • Instagram transcript extracted: tiered per successful non-empty transcript.

At the Bronze tier, the current transcript event is $0.016 per successful video. A run with one successful video is approximately $0.021. A run with five successful videos is approximately $0.085. Failed URLs do not receive the transcript event, although the one-time start event still applies.

Higher Apify subscription tiers receive lower per-transcript event prices. The Console shows the active tier before a run starts. Runtime and platform usage are covered by the Actor's pay-per-event price rather than billed as a separate transcript field.

Monitoring and automation patterns

Recurring creator or campaign review

Save a stable list of known public URLs as an Apify task. Schedule it daily or weekly, export each dataset, and compare records by shortcode.

Editorial quote review

Search transcript for a phrase, then use segments to identify its approximate video time. Keep canonicalUrl beside downstream notes so reviewers can inspect the source.

Spreadsheet pipeline

Use an Apify integration to send authorUsername, canonicalUrl, language, durationSeconds, and transcript to Google Sheets. Long segments arrays are usually easier to keep as JSON.

Chunk transcript segments, retain the shortcode and timestamps as metadata, and load them into a vector database. The Actor performs transcription only; summarization, translation, classification, and embeddings belong in downstream steps.

Run with the Apify API

Replace YOUR_TOKEN with an Apify API token. The examples start a run and wait for its default dataset response.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~instagram-reel-video-transcripts/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": [{"url":"https://www.instagram.com/reel/DV29mBcMQwp/"}],
"maxItems": 1,
"language": "auto",
"maxVideoDurationSeconds": 120
}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/instagram-reel-video-transcripts').call({
startUrls: [{ url: 'https://www.instagram.com/reel/DV29mBcMQwp/' }],
maxItems: 1,
language: 'auto',
maxVideoDurationSeconds: 120,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].transcript);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/instagram-reel-video-transcripts").call(run_input={
"startUrls": [{"url": "https://www.instagram.com/reel/DV29mBcMQwp/"}],
"maxItems": 1,
"language": "auto",
"maxVideoDurationSeconds": 120,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items[0]["transcript"])

Use with Apify MCP

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/instagram-reel-video-transcripts"

Claude Desktop

Add this JSON under mcpServers in Claude Desktop's MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/instagram-reel-video-transcripts"
}
}
}

Cursor

Add the same apify HTTP server to Cursor's MCP settings, then enable the Actor tool for the workspace.

VS Code

Add the same endpoint to the MCP server configuration used by your VS Code AI extension. The endpoint is Actor-specific, so it exposes this transcript workflow rather than the full Apify catalog.

Example prompts showing the intended MCP tool usage include:

  • "Transcribe this public Instagram Reel and return the timestamps for every mention of the product name."
  • "Run my saved Instagram transcript task and summarize only the new dataset records."
  • "Export the author, source URL, language, duration, and transcript to a table."

Limits and expected behavior

  • Only supplied public video URLs are supported; the Actor does not search profiles, hashtags, or keywords.
  • A run accepts up to five unique videos and processes them sequentially.
  • Videos longer than the configured duration limit fail before transcription.
  • Private, deleted, login-only, age-restricted, image-only, and silent videos do not produce transcript records.
  • Instagram can change its public embed or temporary media delivery at any time.
  • Temporary thumbnail and media URLs can expire.
  • Automatic speech recognition is probabilistic and should not be treated as a certified verbatim record.
  • The Actor does not provide speaker diarization, word-level timestamps, translation, summaries, or sentiment analysis.

If one URL in a batch fails, successful records already written remain in the dataset and are charged. The run ends as failed so automation does not silently treat a partial batch as complete.

Troubleshooting

The run says no public video data was returned

Confirm the URL opens publicly in a logged-out browser and points to a Reel or video post, not an image carousel or profile. Remove tracking parameters if the copied link is unusual, then retry the canonical post URL.

No speech was detected

The clip may contain only music, ambient sound, or speech too quiet for the model. No transcript event is charged when no non-empty transcript is produced.

The language is wrong

Set language to the expected code instead of auto. Short clips with few spoken words provide less evidence for automatic language detection.

The video exceeds the duration limit

Increase maxVideoDurationSeconds up to 1800 only when the extra processing time is intentional. For monitoring, keeping the limit close to the expected Reel length prevents accidental long jobs.

A scheduled task started failing

Test one current public URL, inspect the Actor log, and verify the source is still public. Instagram media availability and temporary CDN URLs can change independently of your task schedule.

Responsible use and legality

Use the Actor only for public content you are permitted to process. Follow Instagram's terms, applicable copyright rules, privacy and data-protection laws, and your organization's retention policy. Do not use transcript output to bypass access controls, profile individuals unlawfully, or misrepresent machine-generated text as a certified quotation.

Public availability does not remove copyright or personality rights. Minimize collected personal data, retain source provenance, secure exported datasets, and delete records when they are no longer needed.

Use this Actor when the buyer job is speech-to-text from known URLs. Use the related Actors when the job is discovery or metadata enrichment.

FAQ

Does it require an Instagram account?

No. It processes public Reel and video-post surfaces without user credentials. Private or permissioned content is not supported.

Can it transcribe an entire profile?

No. Supply known video URLs. Use a related profile-post Actor for discovery, then pass selected public video URLs to this Actor.

Are timestamps word-level?

No. segments contains phrase-level start and end timestamps. The Actor intentionally avoids claiming word-level precision.

Does it translate transcripts?

No. The Actor returns speech in the detected or requested source language. Connect the dataset to a translation step if your workflow needs another language.

Are failed URLs charged?

The one-time start event applies when processing begins. The per-transcript event applies only after a non-empty transcript is produced.

Can I export CSV or Excel?

Yes. Use the dataset export controls or API. Nested segments are most faithfully represented in JSON; spreadsheet exports may serialize the array.

How accurate is the transcript?

Accuracy depends on audio quality, language, speakers, music, and background noise. The output is useful for monitoring and analysis, but important quotations require human review.