Pricing
from $0.99 / 1,000 results
Instagram Account Reels Scraper
Scrape Reels from any public Instagram account: video URLs, caption, plays, likes, audio metadata.
Pricing
from $0.99 / 1,000 results
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape every Reel from a public Instagram account in bulk β video URLs, view counts, likes, comments, captions, audio, and posted-at timestamp β in clean structured JSON.
Why use this actor
- No account / no login required β just give it an Instagram username or profile URL.
- No API key needed β Instagram has no public API for this; the actor returns the same vertical Reels feed the web app shows on a profile's Reels tab.
- Direct video URLs in multiple resolutions β every reel comes with downloadable MP4 URLs for the qualities Instagram serves, plus a poster image, so you can pull video files immediately.
- View counts and engagement β accurate
play_count(Instagram view counter),like_count, andcomment_countper reel. - Audio + caption metadata β full caption text, hashtags, mentions, audio attribution, and video duration in seconds.
- Bulk input β pass a list of usernames in one run; results stream into your dataset with one row per reel.
- Stable JSON output β every row carries
_input,_source,_scrapedAtenvelope fields so you can join results back to your input list, plus_userId(the stable numeric Instagram user ID that does not change when a creator renames their handle).
How it works
- You provide a list of Instagram usernames (e.g.
mrbeast) or full profile URLs. - The actor resolves each username to its numeric user ID, then pulls the Reels tab feed the same way Instagram's web app does, walking the paginated cursor until it reaches your
maxReelslimit (or the end of the account). - Results stream into your dataset, ready to download as JSON, CSV, or Excel.
You do not need to manage scrapers, browsers, or rotating IPs β all handled internally.
Input
{"usernames":["mrbeast","khaby.lame"],"maxReels":12,"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["DATACENTER"]}}
| Field | Type | Description |
|---|---|---|
usernames | array | Instagram usernames or full profile URLs whose Reels tab you want to scrape. Both mrbeast and https://www.instagram.com/mrbeast/ are accepted. |
maxReels | integer | Maximum number of reels per account. Default 12. Set to 0 to fetch every reel on the account (large channels can have thousands). |
proxyConfiguration | object | Apify Proxy settings. Datacenter proxy works for most accounts; switch to residential for very large jobs. |
Output
Sample command: python test_local.py mrbeast --max 3
{"_input":"mrbeast","_userId":"2278169415","_source":"S1-primary","_scrapedAt":"2026-05-18T10:54:08.610256+00:00","id":"3466556599773603825_2278169415","pk":"3466556599773603825","code":"DAbrtxjSqfx","fbid":"18339051271120588","media_type":2,"taken_at":1727465883,"video_duration":16.647,"original_width":1080,"original_height":1920,"has_audio":true,"play_count":183626669,"ig_play_count":171174980,"fb_play_count":12451689,"like_count":6086367,"comment_count":67785,"caption":{"text":"Go watch video on YouTube of 100 twins competing!","created_at_utc":1727541691,"user_id":"2278169415"},"user":{"pk":"2278169415","username":"mrbeast","full_name":"MrBeast","is_verified":true,"is_private":false,"profile_pic_url":"https://instagram.fcgk52-1.fna.fbcdn.net/v/t51.2885-19/31077884_..._n.jpg"},"video_versions":[{"width":720,"height":1280,"bandwidth":2078036,"url":"https://instagram.fcgk52-1.fna.fbcdn.net/o1/v/t2/f2/m367/AQPA8Oko1IGGXNa9...mp4"},"... 2 more"],"image_versions2":{"candidates":[{"width":452,"height":800,"url":"https://instagram.fcgk52-1.fna.fbcdn.net/v/t51.71878-15/505456263_..._n.jpg"},"... 9 more"]},"usertags":{"in":[{"user":{"username":"vorostwins","full_name":"Chris and Patrick Voros","is_verified":true}}]}}
| Field | Type | Description |
|---|---|---|
_input | string | The username or URL exactly as you supplied it. Use to join results back to your input list. |
_userId | string | Stable numeric Instagram user ID for the account. Survives username changes β the most reliable creator identifier. |
_source | string | Internal tag for the path used to fetch the record. S1-primary means the fastest, richest path; values starting with S2- indicate a fallback was used. |
_scrapedAt | string | ISO-8601 UTC timestamp when the record was scraped. |
id | string | Composite reel ID ({pk}_{userId}). |
pk | string | Numeric reel ID on its own. |
code | string | Short code from the public reel URL: https://www.instagram.com/reel/{code}/. |
fbid | string | Meta-wide post ID (shared with Facebook). |
media_type | integer | 2 = single video. Reels are always video. |
taken_at | integer | Unix timestamp (seconds) when the reel was posted. |
video_duration | number | Length of the reel in seconds. |
original_width / original_height | integer | Native video resolution. Reels are vertical (height > width). |
has_audio | boolean | true if the reel has an audio track. |
play_count | integer | Total view count Instagram displays on the reel. |
ig_play_count | integer | Views attributed to Instagram only (excludes Facebook). |
fb_play_count | integer | Views attributed to Facebook crossposting. |
like_count | integer | Likes on the reel. |
comment_count | integer | Comments on the reel. |
caption.text | string | Full caption text including emoji, hashtags, and @mentions. |
caption.created_at_utc | integer | Unix timestamp when the caption was set. |
user | object | Author profile snapshot: pk, username, full_name, is_verified, is_private, profile_pic_url. |
video_versions | array | Direct MP4 URLs the player would use, one entry per quality (typically 2-9 versions with different bandwidth/width/height). URLs are signed and expire β download promptly. |
image_versions2.candidates | array | Poster / cover image in multiple sizes. Same signed-URL expiry note applies. |
usertags.in | array | Other accounts tagged in the reel (collaborators, mentions). |
clips_metadata | object | Audio attribution block β populated when the reel uses a tracked song (music_info) or an attributed original sound (original_sound_info). null on both means the audio is untracked. |
Error envelope
Accounts that fail to load (private, deactivated, blocked) return a structured error instead of crashing the run:
{"_input":"this-account-does-not-exist-xyz","_source":"S1-primary","_error":"profile_failed","_errorDetail":"HTTP 404 for web_profile_info","_scrapedAt":"2026-05-18T10:54:09.001234+00:00"}
Filter on _error to triage failed rows. Possible values: profile_failed, no_user_id, fetch_failed.
Pricing
This actor is billed per result: $6.00 per 1,000 reels. Each reel returned = 1 result. Error rows are not billed.
Other Sosmed Actors
| Platform | Actor | Best for |
|---|---|---|
| Instagram Account Scraper | Profile bio, follower count, post count for a handle | |
| Instagram Account Posts Scraper | Main feed posts (photos + carousels + videos) for an account | |
| Instagram Post Detail Scraper | Full detail for a single reel or post by shortcode | |
| YouTube | YouTube Shorts Scraper | Vertical short-form video feed from a YouTube channel |
| Threads | Threads Account Threads Scraper | Recent threads (including video) from a Threads handle |
| Twitch | Twitch Clips Scraper | Short-form video clips from a Twitch channel |
| Pinterest Board Scraper | Video pins and image pins from a board | |
| Bluesky | Bluesky Account Posts Scraper | Recent posts (with attached video) from a Bluesky handle |
Browse the full catalog at apify.com/xtracto.
Notes
- The Reels tab is separate from an account's main feed (grid). A reel posted to both surfaces will appear in this actor's output and in Instagram Account Posts Scraper. Reel-only posts (the most common case for short-form creators) appear only here.
play_countis the integer view count Instagram displays on the reel. It updates continuously and may lag the live counter by a few minutes for very fresh posts.- Video URLs (
video_versions[].url) and cover image URLs are signed by Instagram's CDN and expire within hours β if you want the actual MP4 files, download them promptly after each run rather than storing URLs long-term. - Private accounts return zero reels with no error β there is nothing to fetch.
- For jobs above ~30 accounts in one run, switch
proxyConfigurationfromDATACENTERtoRESIDENTIALto avoid per-IP rate limits. _userId(the numeric user ID) is the most stable creator identifier β if a creator changes their username later, you can still match reels back to the same person using this field.
