Instagram Reel Transcripts in 5 Lines — and Word-Level Timestamps Are Free
Source: Dev.to
The pricing trap for Instagram transcription at scale
If you’ve ever priced Instagram transcription at scale, you already know the trap: per‑video pricing on the SaaS tier, plus an up‑charge for word‑level timestamps. Running the math on 500 reels quickly makes the cost prohibitive.
I’m not trying to dissuade you from building your own pipeline—I’m just showing the five lines I run when I don’t want to pay extra.
Typical API pricing in 2026
- A base rate per processed video.
- Sometimes a separate rate per minute of audio.
- An additional fee to expose word‑level timestamps (essential for captions, search, or clip editors).
This model works for a single creator’s library but breaks down for agencies handling hundreds or thousands of reels across multiple clients.
A free, unlimited solution with Apify
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"])
The three input fields you actually need
| Field | Type | Description |
|---|---|---|
instagramUrl | string | Single reel or video post. Pattern enforced; /reels/ auto‑corrects to /reel/. |
bulkUrls | array | Paste 1 URL, 1 000 URLs, upload a .txt file, or provide a manual list. Same shape regardless of volume. |
wordLevelTimestamps | boolean (default true) | Returns a per‑word timestamp on every transcript. Free—no extra charge. |
The third field is the point of this post: it’s enabled by default, whereas most tools hide it behind a paywall.
Constraints you need to handle
- Image carousels – no audio, nothing to transcribe.
- Music‑only videos – no spoken audio, the transcript will be empty.
- Private profiles – Instagram blocks scraping of private content; the actor only handles public reels and posts.
If you’re building a “scrape any Instagram URL” feature, you’ll encounter these edges. The actor returns a clear error per URL, which you can handle client‑side and skip silently.
Pricing model of the Apify actor
- No charge per validated URL.
- Charges are based on compute time per run.
- Processing 1 000 reels in one batch counts as a single run.
Batching therefore reduces cost and speeds up processing because the runtime queue stays warm.
Real‑world cost comparison
| Setup | Cost per 500 reels |
|---|---|
| Old per‑video API ($0.05 + $0.02 for timestamps) | $35 |
| New bulk run (Apify) | ≈ $8–$9 (about 1/4 the cost) |
The dataset shape remains identical, but the new approach is far more predictable and affordable.
Try it yourself
- Single‑URL test – costs less than a coffee.
- Bulk run – unlimited.
If you spot a public reel format that the URL pattern misses, drop it in the comments; the maintainer will ship a fix in the next build.