Instagram Reels Transcript Scraper (No Login) avatar

Instagram Reels Transcript Scraper (No Login)

Pricing

from $3.00 / 1,000 reel scrapeds

Go to Apify Store
Instagram Reels Transcript Scraper (No Login)

Instagram Reels Transcript Scraper (No Login)

Scrape Instagram reels from any public profile and get AI transcripts — no login, no cookies. HTTP-pure via mirror + Groq Whisper.

Pricing

from $3.00 / 1,000 reel scrapeds

Rating

0.0

(0)

Developer

deusex machine

deusex machine

Maintained by Community

Actor stats

3

Bookmarked

370

Total users

25

Monthly active users

8 days ago

Last modified

Share

Instagram Reels Transcript Scraper — Captions, AI Transcripts, Video URLs & Metadata (No Login)

⭐ Useful? Leave a review — it takes 10 seconds and is the single biggest thing that helps other content researchers, social media marketers, agencies and short-form video tool builders find this Instagram reels transcript scraper.

A fast, production-grade Instagram reels scraper with built-in AI transcription. Give it any public Instagram username and it pulls the profile's newest reels and videos, then transcribes the spoken audio of each one into clean text. For every reel you get the post URL, direct MP4 video URL, thumbnail, caption, like and comment counts, post date — and a full AI-generated transcript with automatic language detection.

No login, no cookies, no Instagram account, no password. The scraper never touches your account, so there is zero risk of a ban or a lockout. Pass an array of usernames like ["natgeo", "nasa"] and get back clean JSON, CSV or Excel ready to drop into a content dashboard, a repurposing pipeline, a brand-monitoring tool or a research dataset.

Built for content researchers, social media marketers, agencies repurposing short-form video into blogs and newsletters, accessibility teams generating captions, competitive-intelligence analysts, creator-economy tools and anyone doing Instagram reels research at scale.

✨ Why use this scraper

Most Instagram scrapers require your session cookies or a logged-in account — which puts your real Instagram profile at risk of rate-limits, checkpoints and bans. This actor works only with public data, never logs in, and runs each reel's audio through a Whisper speech model for a real transcript.

That means:

  • Zero account risk — nothing is ever logged in. Your Instagram profile is never used, so it can't be flagged.
  • Spoken-word transcripts, not just captions — the post caption is rarely the same as what's actually said in the reel. This actor gives you both.
  • Automatic language detection — Whisper detects the spoken language per reel, or you can force a language code.
  • Fast, browser-free listing: no headless browser and no login, so runs are quick and cheap. Reels come newest first, after any pinned reels.
  • Direct CDN downloads — video bytes come straight from Instagram's CDN (no proxy bottleneck), so transcription stays fast.
  • Metadata-only mode — turn transcription off to get reels + video URLs + captions + engagement at a fraction of the cost.

Non-speech reels (pure music, ambient nature footage) are detected and returned with an empty transcript — and you are not charged for transcribing them.

📤 Output fields

One item per reel, flat JSON. Maps cleanly to a BigQuery schema, a Postgres table or a Google Sheet.

Reel metadata

FieldTypeDescription
usernamestringThe profile the reel belongs to
shortcodestringInstagram post identifier
urlstringDirect link to the post on instagram.com
typestringMedia type reported by Instagram
isVideobooleantrue for reels / videos
videoUrlstringDirect MP4 URL on Instagram's CDN
thumbnailUrlstringCover image URL
captionstringPost caption (emojis preserved)
takenAtstringPost date in ISO 8601 UTC (e.g. "2026-08-18T19:37:40Z")
timestampintegerUnix timestamp of the post
videoDurationnumberReel length in seconds (null for photos)

Engagement metrics

FieldTypeDescription
likesintegerLike count
commentsintegerComment count
playCountintegerPlay count (null when Instagram does not report it)

Transcript

FieldTypeDescription
transcriptstringAI transcript of the spoken audio (null if the reel has no speech)
transcriptLanguagestringDetected language, e.g. "English" (null when no speech)
transcriptErrorstringPopulated only if a reel failed to download or transcribe

🎯 Use cases

  • Content repurposing — turn a creator's reels into blog posts, newsletters, X threads or LinkedIn carousels. The transcript is your raw script.
  • Competitive research — pull a competitor's reels weekly, read what they actually say, and benchmark caption vs spoken messaging.
  • Accessibility & subtitles — generate transcripts and captions for reels that ship without them.
  • SEO & content mining — extract spoken keywords and topics from a niche's top reels to inform your own content calendar.
  • Sentiment & trend analysis — feed transcripts into OpenAI, Claude or a local Llama to cluster themes, hooks and messaging across a category.
  • Training data — short-form spoken-language transcripts in many languages are valuable fine-tuning and search data.
  • Brand monitoring — track what sponsored creators say about your brand in video, not just in the caption.
  • Lead research for agencies — audit a prospect's Instagram presence (posting cadence, engagement, messaging) before a pitch.

🚀 How to use

Mode 1 — reels + transcripts from one profile

{
"profiles": ["natgeo"],
"maxPostsPerProfile": 30,
"transcribe": true
}

Mode 2 — metadata only (cheapest, no transcription)

{
"profiles": ["nasa"],
"maxPostsPerProfile": 50,
"transcribe": false
}

Mode 3 — multiple profiles in one run

{
"profiles": ["natgeo", "nasa", "bbcearth"],
"maxPostsPerProfile": 20,
"transcribe": true
}

Mode 4 — force a transcript language

{
"profiles": ["selena"],
"maxPostsPerProfile": 15,
"transcribe": true,
"language": "es"
}

Mode 5: latest reels only, to track new content

{
"profiles": ["mrbeast", "garyvee"],
"maxPostsPerProfile": 12,
"transcribe": true
}

The scraper picks the right proxy for each step automatically, so you don't need to configure one.

📥 Input

ParameterTypeDefaultDescription
profilesarray[]Public usernames or profile URLs (natgeo, @nasa, https://www.instagram.com/instagram/) — required
maxPostsPerProfileinteger30Max reels per profile, newest first after pinned reels. Up to about 130 per profile
onlyVideosbooleantrueSkip photo posts; only return videos (required for transcripts)
transcribebooleantrueGenerate an AI transcript per reel. Turn off for metadata-only (cheaper, faster)
languagestring—ISO-639-1 code (en, es, pt…) to force the transcript language. Empty = auto-detect
proxyGroupstringdatacenterKept for compatibility. The scraper now chooses the proxy for each step automatically

📋 Output example

{
"username": "natgeo",
"shortcode": "C8xKq2pN3aZ",
"url": "https://www.instagram.com/p/C8xKq2pN3aZ/",
"type": "clips",
"isVideo": true,
"videoUrl": "https://scontent.cdninstagram.com/o1/v/t2/.../reel.mp4",
"thumbnailUrl": "https://scontent.cdninstagram.com/.../cover.jpg",
"caption": "Keep exploring! ABC News and National Geographic are taking you...",
"likes": 15300,
"comments": 210,
"playCount": 812445,
"takenAt": "2026-08-18T19:37:40Z",
"timestamp": 1787081860,
"videoDuration": 50.2,
"transcript": "Can you guess where we are? We're about to unveil the seven natural wonders of America. From a geologist's standpoint, globally, this is geology in action...",
"transcriptLanguage": "English",
"transcriptError": null
}

Export the dataset as JSON, CSV, Excel, XML, JSONL or HTML table directly from the Apify console, or via the Apify API.

💻 Code examples

curl

curl -X POST 'https://api.apify.com/v2/acts/makework36~instagram-reels-transcript-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"profiles": ["natgeo"],
"maxPostsPerProfile": 30,
"transcribe": true
}'

Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("makework36/instagram-reels-transcript-scraper").call(run_input={
"profiles": ["natgeo", "nasa"],
"maxPostsPerProfile": 30,
"transcribe": True,
})
for reel in client.dataset(run["defaultDatasetId"]).iterate_items():
if reel.get("transcript"):
print(f"{reel['shortcode']} [{reel['transcriptLanguage']}] {reel['transcript'][:80]}")

Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('makework36/instagram-reels-transcript-scraper').call({
profiles: ['nasa'],
maxPostsPerProfile: 20,
transcribe: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.table(items.map((r) => ({
code: r.shortcode, likes: r.likes, lang: r.transcriptLanguage,
})));

Export to CSV

From the run page → Export → CSV. Or via API:

https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&token=YOUR_TOKEN

Repurpose a reel into a blog post

from apify_client import ApifyClient
import openai
client = ApifyClient("YOUR_APIFY_TOKEN")
oa = openai.OpenAI()
run = client.actor("makework36/instagram-reels-transcript-scraper").call(run_input={
"profiles": ["my_competitor"],
"maxPostsPerProfile": 10,
"transcribe": True,
})
for reel in client.dataset(run["defaultDatasetId"]).iterate_items():
if not reel.get("transcript"):
continue
resp = oa.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": f"Turn this reel transcript into a 200-word blog intro:\n{reel['transcript']}"}],
)
print(reel["url"], "\n", resp.choices[0].message.content, "\n")

Zapier / Make.com no-code

Both Zapier and Make have an official Apify integration. Trigger on a schedule, action "Run Apify Actor", pass this actor's name and your input JSON, then send the output into a Google Sheet, Airtable, Slack alert or Notion row.

⚡ Performance

  • ~1 second to download each reel's MP4 (direct from Instagram's CDN, no proxy)
  • ~5–8 seconds per reel end-to-end with transcription (download + audio extraction + Whisper)
  • Metadata-only mode lists ~12 reels per profile page in a single request — near-instant
  • Up to about 130 reels per profile: the most recent ones
  • Non-speech reels are detected and skipped for transcription automatically

📊 Comparison

Several Instagram scrapers live on the Apify Store. Here's how this one stacks up on what actually matters for short-form video research.

FeatureThis scraperAlternative AAlternative BAlternative C
Needs login / cookiesNoYesYesSometimes
Risk to your accountNoneHighHighMedium
AI transcript of spoken audioBuilt-in (Whisper)NoAdd-on ($)No
Auto language detectionYesNoPartialNo
Direct MP4 video URLYesYesNoYes
Caption + likes + commentsYesYesYesPartial
Metadata-only mode (cheaper)YesNoNoPartial
Multiple profiles per runYes (array)YesSingleYes
Max reels per profile~130 (most recent)200100500
Code examples in READMEPython / Node / curl / OpenAINoneNoneNone

The honest take: if you only need post URLs and never care about what's actually said in the video, a basic metadata scraper is fine. If you want the transcript — the real script of each reel — without ever logging in, this scraper bundles it all in one pass.

💵 Pricing

Pay-per-event — you only pay for what you pull, with no subscription and no monthly minimum.

EventPriceWhat you get
Actor start$0.005 per runCharged once, and only if the run delivers at least one reel
Reel scraped$0.003 per reelFull metadata: caption, likes, comments, video URL, thumbnail
AI transcript$0.012 per reelWhisper transcript — only charged when the reel actually has speech

A reel with a transcript = ~$0.015 all-in (scrape + transcript). Metadata-only (transcribe: false) = $0.003 per reel.

VolumeMetadata onlyWith transcripts
1,000 reels~$3~$15
10,000 reels~$30~$150

Apify gives every new user a $5 free trial credit — enough to transcribe ~330 reels while you evaluate. You're never charged for transcribing reels that have no speech (music-only / ambient).

❓ FAQ

Do I need an Instagram account or login? No. The scraper never logs in and never uses cookies, so your account is never at risk. It only works with public profiles.

Will this get my Instagram account banned? No — because your account is never used. Nothing about your real profile is touched.

How accurate are the transcripts? Transcription uses OpenAI's Whisper (large-v3-turbo), one of the best speech-to-text models available. Accuracy depends on audio clarity. Reels with background music over speech transcribe less cleanly than clear narration.

Why is transcript null on some reels? That reel has no spoken words — it's music-only or ambient footage. You are not charged for transcribing those.

Can I transcribe in a specific language? Yes. Set language to an ISO code like es, pt or fr to force it. Leave it empty for automatic detection.

Can I get reels without transcribing them? Yes. Set transcribe to false to get metadata, captions and video URLs only, at a much lower price.

Can I download the actual video files? Each item includes a direct videoUrl to the MP4 on Instagram's CDN, which you can download yourself.

A profile returns nothing — what do I do? Check that the profile is public and has reels in its Reels tab. Private profiles and profiles without reels return nothing, and a run that delivers no reels is not charged.

Why do older reels appear first for some profiles? Those are reels the creator pinned to the top of their profile. Instagram shows them first, and so does this scraper. The rest follow newest first.

Is scraping Instagram legal? Scraping publicly available data is generally permissible in most jurisdictions. Respect Instagram's Terms of Use and privacy regulations (GDPR, CCPA, LGPD). Consult legal counsel for your specific use case.

Can I run this on a schedule? Yes. Apify's scheduler supports daily, weekly and custom cron expressions. Every run writes to a fresh dataset you can pull over the Apify API.

📝 Changelog

  • v0.2.5 (2026-10-27): Updated after Instagram's October changes. Still no login and no cookies. Up to about 130 recent reels per profile. A run that delivers no reels is no longer charged the start fee.
  • v0.2 (2026-09-01): Data source updated (the previous one stopped working). Same output shape, plus new playCount and videoDuration fields; takenAt is now ISO 8601 UTC instead of a relative string, and likes / comments are always integers.
  • v0.1 (2026-06-07) — Initial release: no-login profile reel enumeration, direct-CDN MP4 download, Whisper transcription with auto language detection, metadata-only mode, datacenter / residential proxy support.