Instagram Transcript Scraper
Pricing
from $0.93 / 1,000 reels
Instagram Transcript Scraper
Instagram transcript scraper: the transcript of Instagram reels and videos from Instagram's own captions: text, timed segments, SRT and VTT, language and the first three seconds, with each reel's views, likes and creator. Paste reel links, or read a profile's latest reels or a search.
Pricing
from $0.93 / 1,000 reels
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
0
Monthly active users
5 hours ago
Last modified
Categories
Security
Limited permissionsShare
Get the transcript of Instagram reels from Instagram's own captions: paste reel links, or name profiles, search words or hashtags, and get one row per reel with the transcript, timed segments, SRT and WebVTT, the language and what is said in the first three seconds, next to the reel's plays, likes, comments and creator.
The transcript is the captions track Instagram itself shows on the reel, read as text. A reel without one comes back with its details and hasTranscript: false, and you pay only the reel's price for it.
| Input | Reel or post links, profiles, search words, hashtags, or another run's dataset |
| Output | One row per reel: transcript, segments with start and end times, SRT, WebVTT, language, first three seconds, word count, plays, likes, comments, shares, creator, sound, posting time |
| Ceiling | 2,000 reels per run, 1,000 links, 50 profiles, 20 searches and 20 hashtags |
| Account needed | None from you |
| Price | $0.93 per 1,000 reels plus $1.85 per 1,000 transcripts, the same on every plan. The free plan's $5 a month covers about 5,300 reels, or about 1,790 that all have a transcript |
| Using an AI agent? | |
|---|---|
| Actor | dami_studio/instagram-transcript-scraper |
| Set one field | reelUrls, labelled "Reel links" in the Console |
| Cap the bill | maxTotalChargeUsd on the run, for example 0.10: it never charges past that |
| MCP, one link | https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/instagram-transcript-scraper |
| How often | Daily on a creator's profile with "Only reels not delivered before" on |
🔍 What Instagram Transcript Scraper does
It takes reels from four places: links you paste, the latest reels of profiles you name, the reels Instagram's search returns for a word or a hashtag, and the reel links in another run's dataset. Each reel becomes one row.
When Instagram has captions for the reel, the row carries them as plain text, as timed segments, and as ready-made SRT and WebVTT subtitle files. hook is what is said in the first three seconds, and wordsPerMinute is the speaking pace over the whole reel.
Nothing is downloaded: no video, no audio. A reel two of your inputs found arrives once.
📋 What data you get from each Instagram reel
| What you get | Field |
|---|---|
| Transcript and whether there is one | transcript, hasTranscript, transcriptSource |
| Timed segments | segments (each start, end in seconds, text) |
| Subtitle files | srt, vtt |
| Language of the captions | transcriptLanguage |
| First three seconds, length, pace | hook, wordCount, wordsPerMinute |
| Reel link, shortcode, media id | url, shortcode, id |
| Caption, hashtags, handles | caption, hashtags, mentions |
| Plays, likes, comments, shares | playCount, igPlayCount, fbPlayCount, likeCount, commentCount, shareCount |
| Length and posting time | durationSeconds, postedAt |
| Creator | authorUsername, authorFullName, authorId, authorIsVerified |
| Sound | audioTitle, audioArtist, audioId, isOriginalAudio |
| Collaborators, tagged accounts, place | coauthors, taggedUsers, locationName |
| Pinned and paid partnership flags | isPinned, isPaidPartnership |
| Cover and video links | thumbnailUrl, videoUrl |
| Where the reel came from | sourceType, sourceInput |
▶️ How to scrape Instagram reel transcripts
- Open the actor and go to the Input tab.
- Paste reel links into Reel links, one per line, or fill Profiles, Search words or Hashtags.
- Set Maximum reels in all to what you need. Keep it small on a first try.
- Press Start, then open the Output tab. The Transcripts view shows the text first.
💰 How much does it cost to scrape Instagram reel transcripts?
$0.93 per 1,000 reels, plus $1.85 per 1,000 transcripts, on every plan. A reel with a transcript costs $0.00278; one without costs $0.00093. The free plan's $5 a month covers about 5,300 reels, or about 1,790 that all have a transcript.
Not charged: note rows (a dead link, a photo post, a private account, a search with nothing), reels an earlier run already delivered when "Only reels not delivered before" is on, and duplicates inside a run.
📥 What you give it
| Field | What it does | Default |
|---|---|---|
reelUrls | Reel or post links, bare shortcodes or share links. Up to 1,000 | none |
usernames | Profiles whose latest reels you want: nasa, @nasa or a profile link. Up to 50 | none |
maxReelsPerProfile | Reels read from each profile, newest first | 10 |
searchQueries | Words or phrases searched on Instagram's reels search. Up to 20 | none |
hashtags | Hashtags searched the same way. Up to 20 | none |
maxReelsPerSearch | Reels read for each search word and hashtag | 10 |
datasetId | Another run's dataset to take reel links from (url, reelUrl, postUrl, inputUrl, shortCode, code) | none |
maxItems | The most reels a run delivers, across everything | 50 |
postedAfter, postedBefore | Date window for profiles, searches and hashtags: 2026-03-01 or a span like 3 weeks | none |
minViews | Least plays a reel needs, for profiles, searches and hashtags | none |
skipPinnedReels | Leave out a profile's pinned reels | false |
onlyNewReels | Skip reels an earlier run with the same watchlist delivered | false |
watchlistName | Name of the store in your account that remembers delivered reels | instagram-transcripts-seen |
Dates take YYYY-MM-DD, a full timestamp, or a number with day, week, month or year. Anything else stops the run before it looks anything up, with a free note saying which field to fix.
{"reelUrls": ["https://www.instagram.com/reel/DeSM5CYPDfd/"],"usernames": ["nasa"],"maxReelsPerProfile": 5,"maxItems": 20}
📤 What you get back
A real row from a run on 7 November 2026, trimmed:
{"recordType": "reel","ok": true,"charged": true,"shortcode": "DeSM5CYPDfd","url": "https://www.instagram.com/reel/DeSM5CYPDfd/","hasTranscript": true,"transcript": "For splash down. Space Flight is a beautiful symbol of humanity. Then it was time to step outside. A short time later, t ...","transcriptLanguage": "en_US","transcriptSource": "instagram_captions","segments": [{ "start": 0, "end": 5.421, "text": "For splash down. Space Flight is a beautiful symbol of" },{ "start": 5.421, "end": 11.381, "text": "humanity. Then it was time to step outside. A short time" }],"srt": "1\n00:00:00,000 --> 00:00:05,421\nFor splash down. Space Flight is a beautiful symbol of\n...","hook": "For splash down. Space Flight is a beautiful symbol of","wordCount": 80,"wordsPerMinute": 43,"durationSeconds": 110.766,"postedAt": "2026-10-09T19:02:56.000Z","playCount": 3899187,"igPlayCount": 3746370,"fbPlayCount": 152817,"likeCount": 66849,"commentCount": 1011,"shareCount": 2677,"authorUsername": "nasajohnson","authorFullName": "NASA’s Johnson Space Center","authorIsVerified": true,"audioTitle": "Original audio","isOriginalAudio": true,"coauthors": ["soph_astro", "iss", "astro_jessica", "nasa"],"sourceType": "profile","sourceInput": "nasa"}
| Field | Worth knowing |
|---|---|
transcript, segments, srt, vtt | Empty when hasTranscript is false |
hook | Null when nobody speaks in the first three seconds |
wordsPerMinute | Words over the whole length, so a reel with long silent stretches reads slow |
transcriptLanguage | The captions' language, such as en_US |
playCount | Plays on Instagram and Facebook together; the split is igPlayCount and fbPlayCount |
thumbnailUrl, videoUrl | Links on Instagram's servers that expire after a few days |
🧾 Reading the output
Real rows carry recordType: "reel", ok: true and charged: true. Every one is billed as a reel, and the ones with hasTranscript: true are billed a transcript as well, so the dataset is its own invoice.
Note rows carry recordType: "note", ok: false and an errorCode, and are never billed:
| Code | Meaning |
|---|---|
BAD_INPUT | A field couldn't be read, or some entries were left out (listed in details) |
NOT_FOUND | The reel or account isn't on Instagram |
NOT_A_VIDEO | The link is a photo or carousel |
PRIVATE_ACCOUNT | The profile is private |
NO_RESULTS | A profile, search or hashtag gave no reels that match your filters |
NOT_SERVED | Instagram didn't serve this one in this run; re-run it later |
ALREADY_SEEN | How many reels the watchlist skipped |
MAX_ITEMS, COST_LIMIT, TIME_LIMIT | The run stopped at your reel limit, spending limit or time limit |
FREE_PLAN_LIMIT | A free-plan run stopped early; a paid plan runs the whole input |
UNEXPECTED_ERROR | The run stopped on an error on our side; rows before it are kept |
To keep only transcripts, filter on hasTranscript == true.
💡 What people use it for
- Content teams studying what top creators in their niche actually say: a profile's last 50 reels, sorted by
playCount, read throughhook. - Turning a brand's own reels into blog drafts or newsletter text without retyping them.
- Subtitles for reposting a reel elsewhere: take
srtorvttas they are. - Feeding reel text to a language model for topic or sentiment tagging, with
segmentswhen timing matters.
A recipe that chains our actors: find reels with Instagram Reels Search Scraper, pass its dataset ID to datasetId here, and run Instagram Comments Scraper on the reels whose hook you liked.
🚧 What it does not do
- No transcript for a reel Instagram has no captions for. For those, give the row's
videoUrlto Video Audio Transcriber, which works from the audio. - No translation of the transcript.
- No private accounts, stories or direct messages.
- No downloads of the video or the audio.
- It is not an official Instagram tool. Dami's Studio is independent and is not affiliated with or endorsed by Instagram or Meta, or by any other company named on this page.
🧭 Which Instagram scraper do you need?
| If you want | Use |
|---|---|
| Transcripts of reels, with their numbers | This one, Instagram Transcript Scraper |
| Reels for a keyword or hashtag, without transcripts | Instagram Reels Search Scraper |
| Comments under a reel or post | Instagram Comments Scraper |
| Bio, follower counts and contact details of the creators | Instagram Profile Scraper |
| A transcript from the audio of any video link | Video Audio Transcriber |
| Transcripts of TikTok videos | TikTok Transcript Scraper |
❓ Questions people ask
Do I need an Instagram account to get reel transcripts?
No, you don't need one, and there's no cookie to paste.
Why does a reel have no transcript?
Instagram makes captions for many reels, not all of them. The row still comes with the reel's details. To check a reel by hand, open it in the Instagram app and look for the captions button.
Why are the numbers different from what I see in the app?
Plays, likes and comments keep moving, and the app rounds them ("1.2M"). The row has the exact count at the moment it was read.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab on the actor page has ready code. For an assistant, use the MCP link https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/instagram-transcript-scraper.
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("dami_studio/instagram-transcript-scraper").call(run_input={"reelUrls": ["https://www.instagram.com/reel/DeSM5CYPDfd/"], "maxItems": 10},max_total_charge_usd=0.10,)for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row.get("ok") is False:continueprint(row["url"], row["transcript"])
Is scraping Instagram legal?
This reads public reels only, never private accounts or messages, and you need no account. Results can still contain personal data, which GDPR and similar laws cover, so keep only what you need. Instagram's own terms still apply to what you do with the data. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Include the run ID and one of the links or names you used.