Instagram AI Transcript Scraper avatar

Instagram AI Transcript Scraper

Pricing

from $0.60 / 1,000 video seconds

Go to Apify Store
Instagram AI Transcript Scraper

Instagram AI Transcript Scraper

Transcribe audio and video from Instagram into accurate, speaker-labeled text. Uses world's best AI Models with automatic language detection, multilingual support, and smart formatting.

Pricing

from $0.60 / 1,000 video seconds

Rating

0.0

(0)

Developer

Harish Garg

Harish Garg

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

What does Instagram AI Transcript Scraper do?

Instagram AI Transcript Scraper turns any public Instagram Reel, video post, or carousel with a video slide into accurate, formatted text. Paste one or more Instagram post URLs, and the Actor resolves each video, extracts the audio, and returns a full transcript with speaker labels (who said what) and smart formatting for dates, numbers, and punctuation. It auto-detects the spoken language across dozens of languages, so Hindi, Spanish, Portuguese, or Arabic reels work out of the box — no settings to change.

Alongside the transcript you get the post's caption, creator, upload date, view count, thumbnail, and duration, so each run is a complete, ready-to-use record of the reel.

Powered by the Apify platform, you get API access, scheduling, webhook integrations, and data export in JSON, CSV, or Excel — with no infrastructure to manage and no AI API key of your own.

Why use Instagram AI Transcript Scraper?

  • Content repurposing — Turn reels into blog posts, newsletters, LinkedIn posts, or scripts for other platforms
  • Creator and competitor research — Read what creators actually say, not just their captions and hashtags, across hundreds of reels
  • Ad and brand monitoring — Capture the spoken claims in branded reels for compliance, legal review, or competitive tracking
  • Accessibility — Generate transcripts and caption source text for hearing-impaired audiences and translation workflows
  • SEO and search — Make your own Instagram video content searchable and indexable as text
  • Social listening at scale — Feed reel transcripts into an LLM or analytics pipeline to extract topics, sentiment, products, and claims
  • Pipeline transcription step — Already scraping Instagram with another Actor? Chain this one downstream and hand it the post URLs you already collected (see Use it in your Instagram scraping pipeline)

What Instagram content can it transcribe?

Instagram contentWorks?Notes
Reels (/reel/...)The main use case. Caption, creator, views, thumbnail, and duration are returned with the transcript.
Video posts (/p/...)Any feed post with a video track.
Carousels with a video slideThe first video slide in the carousel is transcribed.
Share and short links (instagram.com/share/..., instagr.am/..., ig.me/...)Paste the link as-is; it is resolved to the underlying post.
Photo posts and image-only carouselsNo audio track exists, so there is nothing to transcribe. The run reports no_media.
Private, deleted, or audience-restricted postsThe Actor downloads without logging in, so it can only see public posts.
StoriesStories require an authenticated session.
Non-Instagram links (YouTube, TikTok, Facebook, a raw cdninstagram.com file link)Rejected up front with a clear message. This Actor accepts instagram.com URLs only — the Actor resolves the video file itself, so you never need the CDN link.

How to transcribe an Instagram Reel

  1. Open the Actor — Click "Try for free" on the Actor's page
  2. Paste the Instagram URLs — Put one or more reel or post links in the Instagram Post URLs field
  3. Configure options (optional) — Turn speaker labels on or off, or lower the maximum audio length
  4. Run the Actor — Click "Start" and wait; a typical reel finishes in well under a minute
  5. Get your results — Read each post's transcript in the Output tab. For a single-post run you can also download transcript.txt / transcript.json from the Storage tab

No external API keys are required. AI transcription is included in the per-second price.

Run it via API or on a schedule

Most production usage drives this Actor through the Apify API, not the Console. Start a run with a single POST:

curl -X POST "https://api.apify.com/v2/acts/hgservices~instagram-ai-transcript-scraper/runs?token=<APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://www.instagram.com/reel/DAbc123XyZ/"]}'

Or from the Apify client (the Actor slug is hgservices/instagram-ai-transcript-scraper):

run = client.actor("hgservices/instagram-ai-transcript-scraper").call(
run_input={"urls": ["https://www.instagram.com/reel/DAbc123XyZ/"]}
)

Pass several links in urls to transcribe a batch in one run — every post gets its own dataset item. For very large batches you can also start one run per URL and let them execute in parallel. To run it unattended, point a Schedule at it, or fire it from your Instagram scraper's success event with webhooks.

Input

Paste your links into urls — every entry must be an instagram.com URL. Any other link — YouTube, TikTok, Facebook, or a raw CDN file URL — is rejected with a message telling you what the Actor accepts. Everything else is optional.

FieldTypeDescription
urlsarrayRequired. One or more Instagram post, reel, or share URLs. instagr.am and ig.me short links are accepted too
maxAudioMinutesintegerMaximum source length in minutes. Longer posts fail before any cost is incurred. Default: 600 (10 h). Max: 600
diarizebooleanLabel different speakers in the transcript (default: true)
smartFormatbooleanFormat dates, times, numbers, and punctuation (default: true)

There is no proxy setting to configure — the Actor manages all network routing automatically, and that bandwidth is included in the per-second price.

Example input:

{
"urls": ["https://www.instagram.com/reel/DAbc123XyZ/"],
"diarize": true,
"smartFormat": true
}

Output

Every post — one or many — pushes its own record to the Dataset, visible in the Output tab and via the dataset API. A single-post run also stores two files in the Key-Value Store:

  • transcript.txt — Formatted transcript with speaker labels and paragraphs
  • transcript.json — Raw transcription response with word-level timings and full metadata

Dataset record example:

{
"sourceType": "platform",
"videoUrl": "https://www.instagram.com/reel/DAbc123XyZ/",
"videoId": "3512345678901234567",
"title": "3 things I wish I knew before starting a coffee business ☕️",
"channel": "Maya Chen",
"channelUrl": "https://www.instagram.com/mayabrews",
"uploadDate": "2026-03-04",
"viewCount": 812443,
"thumbnail": "https://scontent.cdninstagram.com/v/.../display.jpg",
"model": "nova-3",
"language": "en",
"diarize": true,
"durationSeconds": 58.4,
"transcript": "[Speaker 0] Three things I wish I knew before I opened my first coffee shop...",
"transcriptLength": 1180,
"speakerCount": 1,
"transcriptStatus": "ok",
"statusMessage": null
}

Example transcript output for a two-person reel:

[Speaker 0] Welcome back. Today we are testing five espresso machines under 500 dollars.
[Speaker 1] And I am the one who has to drink all of them.
[Speaker 0] Let's start with the one everybody keeps asking about.

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Output data fields

FieldTypeDescription
sourceTypestringAlways "platform"
videoUrlstringThe Instagram URL you submitted
videoIdstringInstagram post ID
titlestringThe post caption
channelstringCreator's display name, or username when no display name is set
channelUrlstringURL of the creator's Instagram profile
uploadDatestringDate the post was published
viewCountintegerVideo view count at the time of transcription
thumbnailstringURL of the post's display image
modelstringAI model used for transcription
languagestringAuto-detected spoken-language code
diarizebooleanWhether speaker labelling was applied
durationSecondsnumberAudio duration in seconds
transcriptstringFull formatted transcript with speaker labels
transcriptLengthintegerCharacter count of the transcript
speakerCountintegerNumber of distinct speakers detected (1 if diarization is off)
transcriptStatusstring"ok", or a short reason code when no transcript could be produced
statusMessagestringPlain-English explanation when transcriptStatus is not "ok"

Use it in your Instagram scraping pipeline

If you already scrape Instagram — with apify/instagram-scraper, another Store Actor, or your own tool — you do not need this Actor to find the reels. It becomes the transcription stage at the end of your pipeline.

Feed the post urls your scraper collected into urls:

// POST https://api.apify.com/v2/acts/hgservices~instagram-ai-transcript-scraper/runs?token=<APIFY_TOKEN>
{
"urls": ["https://www.instagram.com/reel/DAbc123XyZ/"]
}

Pass the post URL, not the video file URL. Even when your scraper already returned a cdninstagram.com link, hand over the post URL. Instagram's media links are signed and expire within hours, so a saved file link has usually failed by transcription time — the post URL always works.

You can wire this together without code using Apify webhooks — fire this Actor on your scraper's SUCCEEDED event and map each scraped URL into urls.

Languages

The spoken language is detected automatically on every run — useful on Instagram, where a creator's audio language often differs from their profile or caption language. There is nothing to set: a wrong language code can never silently empty your transcripts.

Difficult audio is retried automatically. If a first pass returns an empty transcript, the Actor retries once on a broader multilingual model before giving up — recovering non-English or low-quality audio without any setting change. If a transcript is still empty after that retry, the reel almost certainly has no transcribable speech — it is music, singing, or ambient sound.

Pricing / cost estimation

Two events: a flat per-video fee, then per-second transcription. Every post that enters processing bills a small flat fee; when the transcript is delivered, you also pay for the length of the video. There is no per-run fee, and no Apify compute units, proxy bandwidth, or AI API charges to track separately.

EventPrice (USD)When charged
Video processed$0.005Once per video, when its processing starts — before the download. Billed even if the post later cannot be downloaded or exceeds your maxAudioMinutes cap
Second of video transcribed$0.00025Per second of the video's length, rounded up, with a 30-second minimum per post. Charged only after the transcript is delivered

That works out to $0.015 per minute plus the flat fee, and $0.0125 all-in for anything up to 30 seconds. Because most reels run well under a minute, per-second billing costs less than the per-minute rounding it replaces.

What is free. A missing or non-Instagram URL is rejected before any charge — it costs nothing. A post that cannot be downloaded, a private or deleted post, and a video that exceeds your maxAudioMinutes cap pay only the $0.005 flat fee, with no per-second charge. A photo or image-only carousel bills the flat fee plus the 30-second minimum, because the Actor still had to fetch and inspect the post to discover there was no video.

No third-party charges. The two events above are the entire bill — downloads, network routing, and AI transcription are all included, and nothing is billed by any other Actor or service.

Example costs (flat fee + per-second charge):

Reel lengthBilled asTotal cost
0–30 s30 s (minimum)$0.0125
45 s45 s$0.016
1 min60 s$0.02
3 min180 s$0.05
10 min600 s$0.155
60 min (long video)3,600 s$0.905

At $0.0125 per short reel, $1 transcribes roughly 80 of them.

The default maxAudioMinutes cap of 600 minutes (10 h) is also the transcription engine's per-request ceiling, so it is the longest video one run can handle. Lower it if you want tighter cost control. Videos over the cap stop before the per-second charge — only the flat per-video fee is billed.

Trying it for free — New Apify accounts include free monthly platform credits, enough to transcribe several hundred reels before any out-of-pocket cost.

Tips

  • Paste the post URL — the Actor resolves the video file itself, so a CDN link is never needed (and is rejected)
  • Batch with urls — one run can transcribe many posts, each with its own dataset row
  • Turn off diarize for single-creator talking-head reels to shave a little processing time
  • Lower maxAudioMinutes when running on a schedule to cap worst-case cost per run
  • Check transcriptStatus in the dataset, not just the run status — a run that could not deliver a transcript still finishes as Succeeded and explains why in statusMessage

Troubleshooting: common errors and what to do

First, where to look. A run that cannot produce a transcript still finishes as Succeeded, so it never counts as a platform failure. The reason is written to the run's status message and to the statusMessage / transcriptStatus fields of the dataset record, with an empty transcript. If you got no text, open the run and read the status message — it names the cause and the fix.

Message you'll seeWhat it meansWhat to do
"This post contains no video or audio to transcribe…"The post is a photo or an image-only carousel. There is no audio track.Submit a reel or a post that contains a video. The run bills the 30-second minimum, because the Actor still fetched and inspected the post.
"Instagram couldn't return this post — it may be private, removed, or age/region restricted"Instagram refused the post.Use a public post. The Actor downloads without logging in and cannot see private, deleted, or restricted content.
"This content requires a logged-in account…"A login or audience wall — including "close friends" and audience-restricted posts, which look public to some accounts only.Use a fully public post.
"This Actor transcribes Instagram posts only — … is not an Instagram address"You submitted a link that is not on instagram.com.Submit an Instagram post URL. For YouTube, TikTok, Facebook, podcasts, or a direct media file, use the general Speech-to-Text Transcription Actor.
"Instagram returned HTTP 403 for this CDN link"The video link the Actor resolved from the post expired or was rejected mid-download.Retry the run. A fresh link is minted each time.
"Couldn't extract audio from this Instagram CDN file"Instagram returned a fragmented (DASH) stream carrying only part of the media.Retry the run; if it persists on one specific post, report it via the Issues tab.
"Transcription returned no text…"No speech was recognized. The multilingual retry already ran.The audio is almost certainly music, singing, or ambient sound.
"Source duration … exceeds the configured maxAudioMinutes cap"The video is longer than your cap. Only the flat per-video fee is billed — no per-second charge.Raise maxAudioMinutes (up to 600).
"Missing input"No URL was provided.Paste one or more Instagram post URLs into urls.

Still stuck? If this guide does not resolve your problem, contact the creator directly at harish@harishgarg.com. Include the Instagram link you tried and the status message you saw.

FAQ, disclaimers, and support

Does it work on private Instagram accounts? No. The Actor downloads anonymously and cannot log in, so it sees only public posts. Posts limited to "close friends" or specific audiences also fail, even though they look public to some viewers.

Can it transcribe Instagram Stories? No. Stories require an authenticated session.

What about photo posts and carousels? A carousel is transcribed if any slide contains a video. Photo-only posts and image carousels have no audio track, so the run reports no_media with a clear message.

Can I transcribe many reels at once? Yes — pass them all in the urls array of a single run and each post writes its own dataset item. For very large batches, start one run per URL through the API or a Schedule; runs execute in parallel.

How accurate is it? Transcription uses a top-tier commercial speech model with speaker diarization and smart formatting. Clear talking-head reels transcribe near-verbatim. Heavy background music, crosstalk, and strong audio effects reduce accuracy, as they do for any speech model.

Why is my transcript empty? No speech was recognized. The Actor already retries on a broader multilingual model before reporting empty, so a persistently empty result almost always means music, singing, or silence.

Is this Actor legal to use? You are responsible for complying with Instagram's Terms of Service and with applicable copyright and privacy law. Only transcribe content that is publicly available and that you have the right to use. Transcripts of public content are generally used for research, accessibility, and analysis — how you use them is your responsibility.

For issues, feature requests, or feedback, use the Issues tab on this Actor's page. For custom solutions or enterprise needs, contact the creator at harish@harishgarg.com.