Instagram Reel Transcript Extractor avatar

Instagram Reel Transcript Extractor

Pricing

from $18.00 / 1,000 audio minute transcribeds

Go to Apify Store
Instagram Reel Transcript Extractor

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

Stable

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

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

inputwhat 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 postrefused, free, with the reason in the row

Three things worth knowing

  • Every row explains its cost. minutesCharged is exactly what was billed: one unit per started minute of audio, so a reel under a minute is one unit. fetchSeconds, decodeSeconds and transcribeSeconds show 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: 0 and 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: refused with 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.

columnwhat it holds
statusok, refused or unsupported
urlthe link, normalised
sourceTypeinstagram or tiktok
titlethe first line of the caption (Instagram has no separate title); TikTok's title
author, authorHandlethe creator's display name and username
publisheddate the video was posted, YYYY-MM-DD
captionthe full caption text, hashtags included
viewCount, likeCount, commentCountas 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
durationSecondsaudio actually transcribed
minutesChargedwhat was billed — started minutes, or 0
truncatedtrue when the video ran past Maximum minutes per video
language, languageProbabilitydetected language and the model's confidence
method, modelwhisper-base, whisper-small or whisper-tiny
textthe transcript as one string
wordCount, segmentCountsize of the transcript
segments[{start, end, text}] in seconds — switch off for a lighter table
srt, vtt, srtFileUrl, vttFileUrlsubtitles, when Include SRT and VTT is on: the text in the row and the same as downloadable files
fetchSeconds, decodeSeconds, transcribeSeconds, bytesFetchedwhere the time and bytes went
videoIdInstagram shortcode or TikTok video id
errorwhy a row was refused, or why it was free
scrapedAtwhen the row was written, UTC

Models

modelwhenspeedaccuracy
base — defaultclear speech, any of 90+ languages~5× realtimegood
smallaccents, background music, technical vocabulary~2× realtimebest of the three
tinydrafts, keyword checks, very long batches~9× realtimerough

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.