Instagram Reel Transcript & Script Extractor
Pricing
from $6.00 / 1,000 reel transcripts
Instagram Reel Transcript & Script Extractor
Turn Instagram Reels into text by link or username, in many languages. Optional AI script breakdown: hook, on-screen text, beats, CTA, format and topics. Reels without speech are not billed as transcripts.
Pricing
from $6.00 / 1,000 reel transcripts
Rating
0.0
(0)
Developer
Firsthand
Maintained by CommunityActor stats
0
Bookmarked
37
Total users
18
Monthly active users
5 days ago
Last modified
Categories
Share
Turn Instagram Reels into text. Paste reel links or usernames and get what was said in each reel, in its own language. Turn on Analyze reels to also get the script behind it: the hook, on-screen text with timestamps, beat-by-beat structure, call to action, format and topics.
Use it to study what works for a creator or a niche, to repurpose reels into posts and newsletters, to research competitors' content, or to feed reel scripts into your AI workflow.
Why use it
- Links or usernames. Transcribe single reels, or a creator's video posts in one go.
- Many languages. Whisper large-v3 turbo, about 100 languages. Tested on English and Hindi.
- No charge for reels without speech. Music-only reels come back with
speech: falseand are not billed as transcripts. Speech models like to invent a "Thank you." on music; the Actor double-checks before it says "no speech". - Script analysis that also reads the screen. Works on music-only reels too, where the on-screen text is the whole script.
- No login, no cookies, no proxies to set up.
What you get
One row per reel.
Transcript: transcript, speech, language, duration, wordsPerMinute, and with
Include timestamps also segments.
Reel data: url, username, postedAt, caption, hashtags, mentions, likes,
comments. In username mode also likesVsCreatorMedian and isOutlier (3x the creator's median
likes or more), and the sound: original audio or licensed music.
Analysis (with Analyze reels): hookSpoken, hookOnScreen, hookType, onScreenText,
beats, cta, ctaType, contentFormat, topics, summary, takeaways, entities.
{"url": "https://www.instagram.com/reel/DdVSJYSuZoc/","username": "recipeincaption","postedAt": "2026-09-16T03:10:40Z","duration": 30.4,"language": "en","transcript": "Dinners You'll Actually Make, episode 57, Hot Honey Chicken Tenders with Buttermilk Ranch.","likes": 213478,"hookSpoken": "Dinners you'll actually make, episode 57: Hot honey chicken tenders with buttermilk ranch.","hookType": "bold_claim","onScreenText": [{"t": 0.5, "text": "dinners you'll actually make"},{"t": 29, "text": "try the osta app :)"}],"beats": [{"start": 0, "end": 4.8, "label": "Hook", "summary": "The creator introduces hot honey chicken tenders with buttermilk ranch."},{"start": 17.8, "end": 30, "label": "App Promotion", "summary": "The creator demonstrates how to save the recipe from social media into the Osta app."}],"cta": "try the osta app :)","contentFormat": "product_demo","topics": ["recipe", "fried chicken", "hot honey", "recipe organizer", "mobile app"]}
A real row from a test run, shortened.
How to use it
- Paste reel links (
instagram.com/reel/…orinstagram.com/p/…) into Reel links, or usernames (natgeoorinstagram.com/natgeo/) into Usernames and set Max reels per username. One per line. Paste links and usernames only, not captions or post texts: the actor reads the reel itself. - Turn on Analyze reels if you need the script breakdown.
- Run, then export to JSON, CSV or Excel, or connect via API, Make, Zapier or n8n.
Tip: sort a creator's reels by likesVsCreatorMedian to find the scripts that outperformed.
Chain it after an Instagram scraper
Put the dataset ID of a finished apify/instagram-scraper or instagram-reel-scraper run into
Dataset ID, or pass its rows as datasetItems. Every video post is transcribed straight from
its video file, with the scraper's caption, likes and date kept. Video file links expire in 1 to 3
days; an expired one is fetched again by its reel link. With the "Connect actor" integration put
{{resource.defaultDatasetId}} into datasetId. One run reads up to 10,000 reels from a dataset.
Input fields of other reel transcript actors are read too
If your API calls or integrations were built for another Instagram transcript actor, you can send the same input fields. The output fields are this actor's own (see above).
| Field | Read as |
|---|---|
startUrls | reel and post links, usernames, @handles, profile links and Instagram video file links, as strings or {"url": ...} objects, mixed in one list |
handles | usernames, @handles or profile links |
videoUrls | Instagram video file links (.mp4 on cdninstagram.com or fbcdn.net), the videoUrl / audioUrl of a scraper row |
datasetId, datasetItems | rows of an Instagram scraper run |
maxReelsPerHandle, resultsLimit | max reels per username |
videoUrl, bulkUrls | reel and post links |
A bare reel code (the shortCode column, like DdVSJYSuZoc) is read as its reel link. Fields
this actor does not use are ignored.
Pricing
| Event | Price |
|---|---|
| Transcript, per reel with speech | $0.006 |
| Analysis, per reel up to 2 minutes | $0.04 on paid Apify plans, $0.06 on the Free plan (up to 5 reels per run) |
| Run start | $0.00005 per run |
Not charged: reels without speech (as transcripts), failed reels, duplicates. Set Max reels in total for a hard cap; the Actor also stops before your maximum cost per run.
Good to know
- Public reels and profiles only. Private and age-restricted reels return an error row.
- Video file links are read from Instagram's own servers only (https on
cdninstagram.comorfbcdn.net). A file on any other host is not processed and not charged. - Videos longer than 10 minutes are not transcribed and not charged.
- No view counts; outliers are measured by likes.
- Username mode reads the profile's video posts in Instagram's order (pinned posts may come first), not the separate Reels tab. Tested up to 120 reels per profile.
- On the Apify Free plan, analysis is limited to 5 reels per run; the other reels in the run get
transcripts as usual, are marked
analysisStatus: skippedand are not charged for analysis. Transcripts have no such limit. Any paid Apify plan removes it. - Reels longer than 2 minutes get a transcript but no analysis. From a carousel post, only the first video is processed.
- Every row has a
status:ok,errorwith the reason,emptyfor a profile with no videos, orskippedwhen a limit was reached. - Audio and video are processed by third-party AI models through OpenRouter (Whisper, OpenAI, Google Gemini). The Actor keeps nothing after the run except your dataset.
- If a run fails or times out, Apify sends the run record to the developer (it has no input and no results). Only the status, error type and place in the code, memory use, run settings and input counts are kept (how many links and usernames, not the links or usernames themselves). They are used only to find and fix the cause.
FAQ
Is it legal? The Actor reads only public content without logging in. Instagram's terms restrict automated collection, what creators say is their copyrighted content, and GDPR applies if you store personal data. You are responsible for how you use the data.
How fast is it? About 2 minutes for 8 reels with analysis in our tests.
Something missing or wrong? Open an issue with the reel link. We read every issue.
Instagram is a trademark of Meta Platforms, Inc. This Actor is not affiliated with Meta.