DEV Community

Cover image for Instagram Reel Transcripts in 5 Lines — and Word-Level Timestamps Are Free
SIÁN Agency
SIÁN Agency

Posted on • Originally published at apify.com

Instagram Reel Transcripts in 5 Lines — and Word-Level Timestamps Are Free

If you've ever priced Instagram transcription at scale, you already know the trap: per-video pricing on the SaaS tier, plus an upcharge for word-level timestamps. Run the math on 500 reels and you'll close the tab.

I'm not going to talk you out of building your own pipeline. I'm just going to show you the five lines I run when I don't want to.

The trap: per-URL pricing on transcript metadata

Most Instagram transcription APIs in 2026 charge:

  • A base rate per processed video.
  • Sometimes a separate rate per minute of audio.
  • An additional fee to expose word-level timestamps (the thing you actually need if you're building captions, search, or any kind of clip editor).

That works for a single creator's library. It does not work for an agency processing client A's 200 reels, then client B's 1,000.

The five-line replacement

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("sian.agency/instagram-ai-transcript-unlimited").call(run_input={
    "bulkUrls": ["https://www.instagram.com/reel/DG06PnPT9aT/"],
    "wordLevelTimestamps": True,
})
print(next(client.dataset(run["defaultDatasetId"]).iterate_items())["transcript"])
Enter fullscreen mode Exit fullscreen mode

Three input fields you actually need:

  • instagramUrl (string) — single reel or video post. Pattern enforced; /reels/ auto-corrects to /reel/.
  • bulkUrls (array) — paste 1, paste 1,000. Bulk edit, .txt upload, manual list. Same input shape regardless of volume.
  • wordLevelTimestamps (boolean, default true) — get a per-word timestamp on every transcript. Free. You don't pay extra for it.

That third one is the point of this post. It's on by default. Most tools hide it behind a paywall. This one doesn't.

What you can't transcribe

Be honest about the constraints up front:

  1. Image carousels — no audio, nothing to transcribe.
  2. Music-only videos — no spoken audio, the transcript will be empty.
  3. Private profiles — Instagram blocks scraping public-side, so the actor only handles public reels and posts.

If you're building a "scrape any Instagram URL" feature, you'll hit those edges. The actor returns a clear error per URL — handle it client-side and skip silently.

Why "unlimited" is a real claim, not marketing

The actor doesn't charge per validated URL. It charges for compute time per run. If you're processing 1,000 reels in one batch, that's one run. The pricing model rewards batching, which is what you want anyway — bulk is faster than serial because the runtime queue stays warm.

I migrated an agency client's Instagram audit workflow last week. Old setup: a per-video API at $0.05 + $0.02 word-timestamp upcharge — $35 for 500 reels per audit. New setup: one bulk run, predictable monthly compute. Roughly 1/4 the cost at their volume, and the dataset shape is identical.

What to do next

If you want to see what 30+ data points + word-level transcripts look like for your own client list, run it once: Instagram AI Transcript Unlimited.

Single-URL test costs less than a coffee. Bulk run is unlimited.


Tell me where this breaks. If you've found a public reel format the URL pattern misses, drop it in the comments. I'll get the maintainer to ship a fix in the next build.


Written by **Nova Chen, Automation Dev Advocate at SIÁN Agency. Find more from Nova on dev.to. For custom scraping or automation work, hire SIÁN Agency.

Top comments (0)