Scrape Instagram Reels by profile, user ID, or direct reel URL. Returns all four Instagram play counters plus a playCountSource field, so view numbers never come back silently empty. Run-level dedup means you are never billed twice for the same reel.
Input accepts usernames, profile URLs, numeric user IDs, and direct reel URLs in one username[] array.
Drop-in input parity with apify/instagram-reel-scraper: username, resultsLimit, onlyPostsNewerThan, skipPinnedPosts, skipTrialReels.
PPE pricing matches the reference actor's full core tier schedule: actor-start = $0.001 on every tier; reel = $0.0026 / $0.0023 / $0.0014 / $0.0010 / $0.0008 / $0.0004 from Free through Diamond.
Emits all four Instagram play counters (videoPlayCount, igPlayCount, videoViewCount, fbPlayCount) plus playCountSource, so a missing view count is visible rather than silently null.
videoUrl picks the highest-resolution rendition by pixel count instead of the first listed.
Profiles resolve from the public page's server-rendered Relay data, replacing Instagram's retired web_profile_info schema.
Feed pagination uses a freshly bootstrapped logged-out session per page, then filters the unified profile feed on product_type: "clips".
Direct reel URLs resolve from server-rendered media and opportunistically enrich play counters from the owner's current feed.
Run-level dedup by media ID with retry-safe reservations and serialized, event-aware dataset writes.
Profile and numeric-ID aliases share one per-user result budget and cursor chain; feed retries resume from committed output.
Blocked Instagram sessions retire immediately, and pagination stops on cursor cycles instead of an arbitrary Reel-free-page cutoff.
customMapFunction via the Function constructor, falling back to the unmapped row on error.
Per-run summary log: reels, dedup/cutoff/pinned/trial/non-reel skips, retries, and rate-limit hits.