Scrapers
Instagram reels
Scrape a public Instagram profile's reels (clip-type posts) with metadata plus direct video URLs. Two modes: unauth path returns the first ~12 reels via web_profile_info, auth path paginates beyond that via user-feed when a sessionid cookie is supplied.
Updated today
Overview
At a glance
- Worker
ultron-instagram-reels- Runtime
- Python + httpx, no browser
- Targets
- Public Instagram usernames, reels-only
- Cap (unauth)
- ~12 reels (endpoint cap)
- Cap (auth)
- 500 reels per username
- Proxy
- Residential US
- Default delay
- 2000 ms, +50% jitter
Sibling to the Instagram trends and Instagram carousels scrapers. Same dataset row shape, different capturedFrom tag so downstream consumers know which surface yielded the row. Reels-mode rows include direct video URLs, which the other two scrapers do not.
Input schema
.actor/INPUT_SCHEMA.jsonjson
Auth vs unauth path
| Path | Endpoint | Cap |
|---|---|---|
| Unauth | GET /api/v1/users/web_profile_info/?username=<u> | ~12 reels. Hard limit from Instagram. |
| Auth (cookies) | GET /api/v1/feed/user/<userId>/?max_id=<cursor>&only_fetch_first_carousel_media=false | Up to 500 reels per username, paginated. |
Note
The unauth path is rate-limited per-IP at roughly 30 requests per hour. With pagination disabled by Instagram, the only way to backfill a full reels archive is via the authenticated path.
Crawl flow
src/__main__.pypy
Output shape
dataset-row.jsonjson
Webhook contract
actor.jsonjson
File map
actors/instagram-reels
.actor
actor.json
INPUT_SCHEMA.json
src
__main__.py
Dockerfile
requirements.txt
README.md