Instagram Transcript Scraper โ Reels to Text, No Login
Pricing
from $4.00 / 1,000 transcripts
Instagram Transcript Scraper โ Reels to Text, No Login
Instagram Reel transcripts in bulk, no login: paste Reel links or whole profiles and get each Reel as text with timestamps, the spoken language, the caption, hashtags and engagement. Transcription included, no API key needed; Reels without speech aren't charged. Export JSON or CSV, or call the API.
Pricing
from $4.00 / 1,000 transcripts
Rating
0.0
(0)
Developer
Richard Feng
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
๐๏ธ Instagram Transcript Scraper โ Reels to Text ยท No Login
This Instagram transcript scraper turns any public Reel or Instagram video into text โ no Instagram account, no login, no browser.
Point it at an account and get one clean row per Reel: the transcript, its timestamps, the language, plus the caption, hashtags and the Reel's engagement โ ready to analyse, search or feed to an LLM.
| ๐๏ธ Reels โ text | ๐ No login, no account |
| โฑ๏ธ Timestamps per passage | ๐ Language detection |
| ๐ Caption, hashtags, plays, likes | ๐งพ Clean JSON, ready for AI |
๐ Table of contents
- What can this Actor do?
- Quick start
- Input reference
- Output reference
- Output example
- Why choose this Actor?
- How much does it cost?
- Use cases
- Automation & AI agents
- FAQ
- Notes and limitations
- Other Actors by autofacts
โจ What can this Actor do?
| ๐งฒ Collect | โ๏ธ Built in |
|---|---|
| ๐๏ธ Transcripts โ the spoken words of every Reel, as one string | ๐ฏ Per-account caps, so a run's size is predictable |
โฑ๏ธ Timestamped segments โ start, end, text per passage | ๐ Language detection, or give it a hint |
| ๐ค Creator context โ username, full name, verified | ๐ Canonical public Reel URL on every row |
| ๐ Engagement โ plays, likes, comments | ๐ The Reel's date and caption |
| ๐ท๏ธ Hashtags & mentions โ parsed out of the caption | ๐ฆ Hard request cap and concurrency control |
| ๐ฌ The audio track itself โ the URL that was transcribed | ๐ Apify Proxy residential by default |
Point it at a profile or a Reel link. That's the whole interface.
๐ Quick start
- Create a free Apify account ๐
- Open this Actor and paste a profile or a Reel link ๐
- Set Max Reels per profile to how many you want
- Save & Start, then download the dataset as JSON, CSV or Excel ๐ฆ
{"startUrls": [{ "url": "https://www.instagram.com/natgeo/" }],"maxReelsPerProfile": 10}
๐ What links can I paste?
| Paste this | And you get |
|---|---|
instagram.com/natgeo/ | That profile's Reels, transcribed |
instagram.com/reel/DeeUUHNAqQj/ | That one Reel, transcribed |
@natgeo or natgeo | Same as the profile link |
The account can also sit in front of a Reel (instagram.com/natgeo/reel/<code>/), and instagr.am links work
the same way. A share link (instagram.com/share/โฆ or instagram.com/s/โฆ) carries a code that is not the
Reel's own: open it and paste the address it leads to. The run log names every link it could not use, and why.
๐ก Add Include the timeline to also pick up videos from the posts grid, not only the Reels tab.
โฌ๏ธ Input reference
| Field | Type | Default | Description |
|---|---|---|---|
| Start URLs | array | โ | Profile or Reel addresses. |
| Usernames | array | โ | Extra accounts, with or without @. |
| Max Reels per profile | integer | 10 | How many of each profile's videos to transcribe. Each one is a download plus a transcription, so this is also the main cost control. |
| Include the timeline | boolean | false | Also transcribe videos from the posts grid, not only the Reels tab. |
| Include timestamps | boolean | true | Keep segments[]. Turn off for a smaller record with just the full transcript. |
| Language | string | (detect) | Optional hint, e.g. en, es, pt. |
| Max concurrency | integer | 3 | How many Reels to transcribe at once. |
| Max requests per run | integer | (API only) | Hard stop after this many requests. |
| Proxy configuration | object | Residential | Apify Proxy's RESIDENTIAL group, selected in the form and used when the field is left out: Instagram answers logged-out readers far more readily from residential addresses. Audio files are downloaded without it unless a download fails. |
โฌ๏ธ Output reference
One record per Reel. (See the limitations for the two cases where a row can be duplicated or missing.)
| Field | Type | Notes |
|---|---|---|
type | string | transcript |
url | string | The public Reel page โ what to join on |
source | object | {id, canonicalUrl, crawlUrl?, username} |
id / shortcode | string | Instagram's media id and the short code in the URL |
owner | object | {id, username, fullName, isVerified} |
takenAt | string | ISO 8601 |
caption | string | The Reel's caption |
hashtags / mentions | array | Parsed from the caption, without # / @ |
transcript | string | The whole transcript. Empty for a Reel without speech |
segments | array | {start, end, text} โ seconds from the start of the audio |
language | string | As detected by the engine |
wordCount | integer | |
hasSpeech | boolean | false for a Reel without speech โ its audio held only music, or it was posted without sound. Beside a transcriptError it means the transcription did not happen |
durationSeconds | number | The Reel's length |
playCount / likeCount / commentCount / viewCount | integer | Engagement at the time of the run |
audioUrl | string | Instagram's audio-only track of the Reel (a signed link that expires) |
audioBytes | integer | Size of the audio that was transcribed โ a few hundred KB for a short Reel, about 1 MB for two minutes. 0 for a Reel posted without sound |
transcriptModel | string | The model that produced the text. none for a Reel posted without sound: there was nothing to send to one |
transcriptError | string | Set only when the Reel was read but could not be transcribed. A failure worth retrying is retried by the Actor first; what lands here is final |
scrapedAt | string | ISO 8601 |
๐ฆ Output example
{"type": "transcript","source": {"id": "instagram","canonicalUrl": "https://www.instagram.com/reel/DcozHIETCd9/","username": "nasaadmin"},"id": "3974651461224900477","shortcode": "DcozHIETCd9","url": "https://www.instagram.com/reel/DcozHIETCd9/","owner": { "id": "79712351002", "username": "nasaadmin", "fullName": "NASA Administrator Jared Isaacman", "isVerified": true },"takenAt": "2026-08-29T20:31:28.000Z","caption": "An unforgettable day at @nasajohnson. โฆ","hashtags": [],"mentions": ["nasajohnson", "potus"],"durationSeconds": 114.566,"likeCount": 51113,"commentCount": 409,"audioUrl": "https://โฆmp4","audioBytes": 1019785,"transcript": "โฆ 250,000 miles from Earth. Please join me in congratulating Commander Reed Weissman, Pilot Victor Glover, Mission Specialist Christina Koch, and Mission Specialist Jeremy Hansen. โฆ","segments": [{ "start": 30.12, "end": 32.7, "text": "250,000 miles from Earth." },{ "start": 32.7, "end": 44.64, "text": "Please join me in congratulating Commander Reed Weissman, Pilot Victor Glover, Mission Specialist Christina Koch, and Mission Specialist" },{ "start": 44.64, "end": 45.98, "text": "Jeremy Hansen." }],"language": "en","wordCount": 204,"hasSpeech": true,"transcriptModel": "whisper-large-v3-turbo","scrapedAt": "2026-10-20T01:52:23.613Z"}
โญ Why choose this Actor?
| ๐๏ธ It only fetches the audio | A Reel's sound is well under a megabyte, against several megabytes for the video. That is ~10ร less to move and transcribe โ cheaper and faster than tools that pull whole videos. |
| โฑ๏ธ Timestamps, not just text | segments[] gives you start/end per passage, so you can clip, align or subtitle. |
| ๐ Language detected | No need to tell it what it is listening to. |
| ๐ No login, no account | Public Reels only. Nothing to rotate, nothing to leak, no account to get banned. |
| ๐ Engagement alongside the text | Plays, likes, comments and the caption on the same row โ join performance to content without a second Actor. |
| ๐ค LLM-ready | Plain JSON with stable field names; feed transcript straight into your model. |
| ๐งน Honest about silence | A Reel with only music, or posted without sound, produces a row with hasSpeech: false rather than being silently dropped โ and this Actor does not charge for it. A transcription that failed says so in transcriptError. |
๐ฐ How much does it cost?
You pay per transcript, pay-per-event. A Reel that turns out to have no speech is stored and not charged.
| Event | Free | Starter | Scale | Business and up |
|---|---|---|---|---|
| ๐๏ธ Transcript, per 1,000 Reels that produced text | $5.00 | $4.50 | $4.00 | $4.00 |
| โถ๏ธ Actor start, per run | $0.00005 | $0.00005 | $0.00005 | $0.00005 |
The event price includes the platform usage this Actor generates โ compute and proxy. Apify bills usage on top only if the publisher has switched to "pay per event + usage"; the Actor's page shows which applies.
๐ก A worked example. 100 Reels transcribed โ $0.50 on the Free plan, $0.40 from Scale up. The same 100 Reels as full videos would move roughly 10ร the data before transcription even starts.
Cost levers: โฌ๏ธ lower Max Reels per profile (the only real one โ one Reel is one charge), ๐ฆ set Max requests per run, and use Apify's own maximum cost per run โ the Actor stops starting new work when it is reached; a download already in flight finishes. Turning timestamps off makes the record smaller but not cheaper: the timings come back from the same transcription call.
๐ก Use cases
- ๐ Content research at scale โ search what creators actually say, not just what they caption
- ๐ Keyword & topic monitoring โ find every Reel in a niche that mentions your brand, your competitors or a trend
- ๐ค LLM & RAG pipelines โ turn Reels into a text corpus for summarising, clustering or Q&A
- ๐ฌ Subtitling & repurposing โ segments with start/end times, straight into an editor
- ๐ Creator analytics โ does talking about a topic correlate with plays? The engagement is on the same row
- ๐ฃ๏ธ Multilingual monitoring โ language detection tells you what you are looking at
๐ค Automation & AI agents
- ๐ Apify API โ start a run and read the dataset from any language
- ๐งฉ No-code โ Make, n8n, Zapier and the Apify integrations
- ๐ค MCP / LLM agents โ callable as an MCP tool from Claude, ChatGPT or any agent that speaks MCP
- ๐ค Exports โ JSON, CSV, Excel and XML straight from the dataset
Connect over MCP
https://mcp.apify.com?tools=autofacts/instagram-transcript-scraper
In a client that reads an mcpServers configuration block:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=autofacts/instagram-transcript-scraper","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
The agent reads this Actor's parameters and their descriptions straight from the input schema, and the hosted server infers the result field types from the dataset schema โ so a model knows what to send and what comes back before it ever calls anything.
Or call the API directly
curl -X POST "https://api.apify.com/v2/acts/autofacts~instagram-transcript-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"startUrls": [{"url": "https://www.instagram.com/reel/DeeUUHNAqQj/"}]}'
The response body is the dataset records described above: one row for that Reel, with its transcript.
โ FAQ
How do I get the transcript of an Instagram Reel? ๐ Paste the Reel's link
(https://www.instagram.com/reel/<code>/) into Start URLs and start the run. The text is in
transcript, and its timed passages in segments[]. A video post (/p/<code>/) or an old IGTV link
(/tv/<code>/) works the same way.
Can I transcribe Instagram Reels in bulk? ๐ฆ Yes. Give it as many Reel links as you like, or profiles: each profile's Reels tab is transcribed up to Max Reels per profile, plus its timeline if you turn that on. Every Reel is one row.
Is there an Instagram transcript API? ๐ This is one. Start a run through the Apify API, or call it from an AI agent over MCP, and read the transcripts back as JSON; see Automation & AI agents above.
Do I need an Instagram or an AI account? ๐ Neither. Nothing is logged in, and the transcription engine is provided by the Actor โ you do not need your own API key.
Which Reels get transcribed? ๐๏ธ The videos of the accounts you give it: the Reels tab (the one page it serves) up to Max Reels per profile, plus the timeline โ paged until the cap is reached โ if you turn that on. Images have no speech and are skipped; a carousel contributes the first of its videos that has sound.
What about Reels that are only music, or have no sound? ๐ต They produce a row with hasSpeech: false,
an empty transcript, and no charge from this Actor. A Reel posted without sound is recognised before
anything is downloaded; its row has audioBytes: 0 and transcriptModel: "none". A Reel whose transcription
failed has a transcriptError instead, and is not charged either.
How accurate is the transcript? ๐ฏ It is Whisper-class speech recognition on the original audio. Music,
heavy accents, overlapping speakers and very noisy scenes are where any engine struggles; segments[]
lets you spot and trim those. The filler such engines are known to invent over music or silence (a lone "Thank you.")
is recognised and dropped, and so are words guessed into sound the engine could not make out, such as a
stadium crowd, which it reports with very low confidence. A Reel with nothing else in it is reported as having
no speech โ and not charged.
Which languages does it transcribe, and can it translate? ๐ The speech model covers about 100
languages, Hindi, Spanish, Portuguese and Arabic among them. It returns the text in the language spoken
and names that language in language; it does not translate. If you know the language, set
Language to skip the guess.
How long can a Reel be? โฑ๏ธ Reels are short by nature; the Actor handles them as they come.
Can it read Stories or followers? โ No. Instagram only serves those to logged-in users, and this Actor deliberately stays logged out.
The record says transcriptError โ what happened? โ ๏ธ The Reel was read but the transcription failed for
that one item. Anything that could have been a passing glitch โ a rate limit, a server error, a timeout โ is
retried by the Actor before the row is written, so what you see here is final for that Reel. Everything else
in the run is unaffected.
A run returned 0 items โ why? ๐ค Usually the account is private, the link is wrong, or it has no videos.
โ ๏ธ Notes and limitations
- ๐ Reads publicly visible Instagram Reels only, without logging in.
- ๐ซ Not available without a login, and therefore not implemented: Stories, highlights, followers, following, hashtag pages, keyword search.
- ๐ต A Reel with only music, or without sound, has no transcript โ that is a property of the Reel, not a failure.
- ๐ผ๏ธ
audioUrlis a signed link that expires. If you want the audio yourself, download it soon after the run. - ๐ฃ๏ธ One transcript per Reel: the whole audio, no speaker separation.
- ๐ A retried request can leave a duplicate row. If Instagram's answer to a record write is lost in transit and the request is retried, the same Reel can appear twice โ the Actor cannot tell a lost acknowledgement from a lost write. Rare, but possible on a flaky connection.
- ๐ณ A charge is per stored record, and this Actor's "not charged" for a silent Reel assumes the account's own per-item charging is off. If the platform's default per-result event is priced on the account, every stored row is charged for it whatever this Actor's own events say.
- โณ Instagram changes its surface from time to time. The Actor runs a start-up check and fails loudly rather than returning empty results.
๐งฐ Other Actors by autofacts
Apify only auto-recommends Actors in the same category, so here are the ones that actually pair with this scraper:
| Actor | What it's for |
|---|---|
| Instagram Scraper | Profiles, posts and comments of the same accounts โ tagged users, co-authors, topics and engagement, without transcription |
| TikTok Subtitle & Transcript Scraper | TikTok captions and transcripts |
| YouTube Subtitle & Transcript Scraper | Video captions as clean text |
| Google Trends Trending Now | What is trending on Google right now, in 125 countries, to find the Reels worth transcribing |
All of them: apify.com/autofacts
๐ฌ Feedback and support
Found a bug, or a Reel that transcribed badly? Open an issue on the Actor's page โ it's read, and it's what decides what gets built next.