Instagram Reel Transcript Extractor
Pricing
from $18.00 / 1,000 audio minute transcribeds
Instagram Reel Transcript Extractor
Instagram reel transcript scraper: paste reel links or usernames and get each video's speech as text with timestamps, plus caption, creator, views, likes and comments in one row. TikTok videos too. $0.018 per audio minute; refused and silent videos are free.
Pricing
from $18.00 / 1,000 audio minute transcribeds
Rating
0.0
(0)
Developer
Stable
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Paste Instagram reel links, or usernames for their newest videos, and get one row per video: the spoken words as text with timestamps, plus the caption, creator, date, views, likes and comments from the same page. TikTok video links work the same way. Charged per audio minute; a video that could not be fetched — private, deleted, muted, a photo — costs nothing.
Unofficial. This Actor is not affiliated with, endorsed by or sponsored by Instagram, Meta or TikTok. It reads only publicly available videos, does not log in, does not use your account and does not bypass any access control. All product names and trademarks belong to their respective owners.
One row, from a real run
A 47-second news reel, reached through its creator's profile, run on
16 September 2026. Everything below came back in one row; nothing was edited
except the segments list, cut to the first two.
{"status": "ok","url": "https://www.instagram.com/reel/DdVDoFOHaqW/","sourceType": "instagram","title": "Are Ai companies overstating how dangerous their Ai's are? Would it increase their value?","author": "BBC News","authorHandle": "bbcnews","published": "2026-09-16","caption": "Are Ai companies overstating how dangerous their Ai's are? Would it increase their value?\n\nNewscast's James Cook asks Faisal Islam.\n\n#BBCNews","viewCount": 32526,"likeCount": 546,"commentCount": 101,"durationSeconds": 47,"minutesCharged": 1,"truncated": false,"language": "en","languageProbability": 0.977,"method": "whisper-base","model": "base","text": "It's absolutely in their interest to talk up their power and potency and threat. And some people might say, well, we've had tech companies talking about this before, and I look at the Millennium Bug, which was going to apparently end the world, and then actually nothing happened at all. I think the logic of that argument does mean that you would stress how powerful your models are, and then how your models would be the only sort of potential medicine for this ailment. But so frightening are some of the forecasts as to what might happen. They're inviting much bigger kind of intervention. I don't think it's straightforwardly like they're trying to boost their value ahead of an IPO. In many ways it might be easier ahead of a flotation to be slightly lesser bokehliptic.","wordCount": 136,"segmentCount": 10,"segments": [{ "start": 0, "end": 5.84, "text": "It's absolutely in their interest to talk up their power and potency and threat." },{ "start": 5.84, "end": 10.48, "text": "And some people might say, well, we've had tech companies talking about this before," }],"fetchSeconds": 1.04,"decodeSeconds": 0.18,"transcribeSeconds": 16.35,"bytesFetched": 340829,"videoId": "DdVDoFOHaqW","error": null,"scrapedAt": "2026-09-16T07:28:02+00:00"}
The same run took four usernames and transcribed their fifteen newest reels in four and a half minutes: 136–225 words on the ones with speech, a 9-second goal celebration with 3 words, and one where the creator's page answered with an error — that one came back as a row saying so, not charged.
What you can give it
| input | what happens |
|---|---|
Instagram reel or video post link — instagram.com/reel/…, /p/…, /tv/… | the video's audio is fetched and transcribed; caption, creator, date, views, likes and comments come along in the row |
Instagram username or profile link — nasa, @nasa, instagram.com/nasa/ | the profile's newest videos are transcribed, up to Videos per profile (see Limits) |
TikTok video link — tiktok.com/@user/video/…, vm.tiktok.com/… | same as a reel; the row carries the TikTok caption, creator and counts |
| a photo post, a carousel without video, a private account, a deleted post | refused, free, with the reason in the row |
Three things worth knowing
- Every row explains its cost.
minutesChargedis exactly what was billed: one unit per started minute of audio, so a reel under a minute is one unit.fetchSeconds,decodeSecondsandtranscribeSecondsshow where the time went. - No speech, no charge. A reel that turns out to be music with text on
screen comes back with an empty transcript,
minutesCharged: 0and a note saying so. You pay for words. - Refused is a row, not a mystery. A private account, a photo post, a reel
Instagram serves to visitors without its audio track (that happens when the
music is licensed) — each comes back as
status: refusedwith the reason, never charged, so a batch of fifty tells you which three to fix.
Fields
33 columns per row, the same header on every row so a CSV export is one table.
| column | what it holds |
|---|---|
status | ok, refused or unsupported |
url | the link, normalised |
sourceType | instagram or tiktok |
title | the first line of the caption (Instagram has no separate title); TikTok's title |
author, authorHandle | the creator's display name and username |
published | date the video was posted, YYYY-MM-DD |
caption | the full caption text, hashtags included |
viewCount, likeCount, commentCount | as shown at run time. viewCount comes from the profile listing; a reel pasted by link has null there, because Instagram shows no play count to a visitor on a single reel page |
durationSeconds | audio actually transcribed |
minutesCharged | what was billed — started minutes, or 0 |
truncated | true when the video ran past Maximum minutes per video |
language, languageProbability | detected language and the model's confidence |
method, model | whisper-base, whisper-small or whisper-tiny |
text | the transcript as one string |
wordCount, segmentCount | size of the transcript |
segments | [{start, end, text}] in seconds — switch off for a lighter table |
srt, vtt, srtFileUrl, vttFileUrl | subtitles, when Include SRT and VTT is on: the text in the row and the same as downloadable files |
fetchSeconds, decodeSeconds, transcribeSeconds, bytesFetched | where the time and bytes went |
videoId | Instagram shortcode or TikTok video id |
error | why a row was refused, or why it was free |
scrapedAt | when the row was written, UTC |
Models
| model | when | speed | accuracy |
|---|---|---|---|
base — default | clear speech, any of 90+ languages | ~5× realtime | good |
small | accents, background music, technical vocabulary | ~2× realtime | best of the three |
tiny | drafts, keyword checks, very long batches | ~9× realtime | rough |
All three are built into the Actor; nothing downloads at run time. Speed is measured on the 4 GB default; the memory setting changes how fast a run goes, not what it costs per minute.
Translate to English returns English text for speech in any language, same price. Language pins the language when you know it; Detect costs a moment on the first 30 seconds and can be fooled by a music intro.
Price
$0.018 per audio minute, one unit per started minute. A typical reel (under a minute) is one unit: 100 reels ≈ $1.80, plus a fraction of a cent for the run start. A refused video, a muted reel, a reel with no speech: $0.
Platform usage is included — there is no separate compute or proxy charge.
Limits
- Profiles: the newest 12 posts. Instagram shows a visitor a profile's twelve most recent posts; videos among them are what Profiles returns, so Videos per profile tops out at 12 and a text-heavy account may yield fewer. For older reels, paste their links.
- Some accounts refuse visitors. A share of business accounts answer a profile lookup with an error for anyone not logged in; their reels still work by link.
- Muted reels. When a reel's music is licensed, Instagram serves it to visitors without the audio track. The row says so and is free.
- Ceilings: 200 videos per run, 180 minutes per video (default 30). Past the
per-video ceiling the audio is cut, the row says
truncated: true, and only the minutes transcribed are charged. - Free plan: the Actor runs on Apify's free credit like any other; at $0.018 a minute that is roughly 270 reels a month before a paid plan is needed.
- No stories, no live videos, no comments, no DMs; nothing that needs a login.
Input
{"reelUrls": ["https://www.instagram.com/reel/DdVDoFOHaqW/","https://www.tiktok.com/@nasa/video/7679801381103865101"],"profiles": ["hubermanlab", "@garyvee"],"videosPerProfile": 5,"model": "base","language": "auto","translateToEnglish": false,"includeSegments": true,"includeSubtitles": false,"maxMinutesPerItem": 30,"maxItems": 50,"includeFailedItems": true}
Output views
The dataset opens with a Transcripts table (status, title, creator, length, language, words, minutes charged, text, link, reason); switch to Creator and engagement for caption, views, likes and comments, or Timing and billing for what each row cost and why. Export any view as JSON, CSV or Excel, or read it through the API.
Integrations and API
Run it from the Console, on a schedule (a profile's new reels every morning), from a webhook, or through the Apify API and its clients — the input above is the request body. Results arrive in the run's dataset as they are finished, so a long batch can be read while it runs.