Instagram Reels Scraper
Pricing
from $1.20 / 1,000 reel scrapeds
Instagram Reels Scraper
Scrape a public Instagram account's reels without a login. Give a list of usernames and get back each reel as a clean row: permalink, owner, play, like and comment counts, caption, duration, post date, video and thumbnail URLs. Pagination is walked automatically up to your chosen limit per account.
Pricing
from $1.20 / 1,000 reel scrapeds
Rating
0.0
(0)
Developer
Goutam Soni
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
Instagram Reels Scraper - Export Reels, Play Counts, Captions & Video URLs
Scrape Instagram Reels in bulk by username. Get play counts, likes, comments, full captions, exact video duration, post dates, and direct video and thumbnail URLs, without an Instagram API key, login, or cookies.
What this Instagram Reels scraper does
Pass a list of Instagram usernames (plain handles, @handles, or profile URLs, mixed freely) and the actor returns one clean JSON row per reel. Pagination is walked automatically page after page until it hits the cap you set or the account runs out of reels, so a request for 500 reels really does walk the whole feed rather than stopping at the first page.
Perfect for short-form content research, creator vetting, competitor tracking, trend spotting, and video dataset building on Instagram at scale.
Why use this Instagram Reels scraper
- No API key, no login, no cookies. Works on any public Instagram account. You never hand over an Instagram account or a password.
- Real play counts. Every row carries the reel's play count alongside likes and comments, so you can rank by actual reach rather than guessing from likes.
- Direct video URLs. Each row includes a downloadable MP4 link, so you can archive or analyse the video itself, not just its metrics.
- Exact duration in seconds. Parsed from the video stream rather than rounded, which matters when you are studying hook length or retention.
- Deep pagination. Ask for 20 reels or 5,000 and the scraper keeps fetching until your cap is reached.
- Bulk by username. Several accounts processed in parallel in a single run.
- Residential proxies built in with rotating IPs.
- Multi-source failover. If one upstream is rate-limited, the actor falls back to another, so runs almost always finish.
What data you get per reel
| Field | Type | Description |
|---|---|---|
type | string | Record type, always "reel" |
queryUsername | string | The account you asked for (handy for grouping multi-account runs) |
shortcode | string | URL slug (instagram.com/reel/{shortcode}) |
url | string | Permalink to the reel |
ownerUsername | string | Username of the account that posted |
ownerFullName | string | Display name of the poster |
ownerId | string | Numeric Instagram user ID of the poster |
ownerIsVerified | boolean | Verified badge on the poster |
playCount | integer | Number of plays |
likeCount | integer | Number of likes |
commentCount | integer | Number of comments |
caption | string | Full caption text, with hashtags, mentions and emojis |
durationSecs | number | Video length in seconds |
takenAt | string | When the reel was posted (ISO 8601 UTC) |
videoUrl | string | Direct MP4 video URL |
thumbnailUrl | string | Cover image URL |
scrapedAt | string | When the row was scraped (ISO 8601 UTC) |
How to use the Instagram Reels Scraper
- Click Try for free on the actor page.
- Enter Instagram usernames in the
usernamesinput. Plain usernames, @handles, and profile URLs all work and are deduplicated. - Set
maxReelsPerUser(default 100, up to 5,000) to cap how many reels come back per account. - Tune
concurrency(default 3, up to 10) for your speed and safety tradeoff. - Click Save & start. Download in JSON, CSV, Excel, XML or HTML, or stream via API.
Example input
{"usernames": ["example_brand", "example_user"],"maxReelsPerUser": 500,"concurrency": 3}
Example output
{"type": "reel","queryUsername": "example_brand","shortcode": "CabcdEFghij","url": "https://www.instagram.com/reel/CabcdEFghij/","ownerUsername": "example_brand","ownerFullName": "Acme Co","ownerId": "100000001","ownerIsVerified": true,"playCount": 1204338,"likeCount": 85210,"commentCount": 642,"caption": "Launch day. Three years in the making.","durationSecs": 30.5,"takenAt": "2026-07-19T15:00:00.000Z","videoUrl": "https://example.com/video.mp4","thumbnailUrl": "https://example.com/cover.jpg","scrapedAt": "2026-07-21T09:00:00.000Z"}
Top use cases
- Short-form content strategy. Compare hook length, duration and caption style against play counts to work out what actually travels in your niche.
- Creator and influencer vetting. Judge candidates on real play counts and engagement rather than follower count alone.
- Competitor monitoring. Track every reel a rival publishes and how each one performed.
- Trend spotting. Pull the top reels across a set of accounts in a niche and spot formats before they saturate.
- Ad creative research. Study high-performing organic reels before committing paid budget.
- Video dataset building. Direct MP4 URLs plus captions make a clean corpus for analysis or model training.
- Campaign reporting. Snapshot reel metrics on a schedule and chart performance over time.
Integrations
Apify API
$curl "https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=json"
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("goat255/instagram-reels-scraper").call(run_input={"usernames": ["example_brand", "example_user"],"maxReelsPerUser": 200,})reels = list(client.dataset(run["defaultDatasetId"]).iterate_items())reels.sort(key=lambda r: r.get("playCount") or 0, reverse=True)for reel in reels[:10]:print(f"{reel['playCount']:>10,} plays {reel['durationSecs']}s {reel['url']}")
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('goat255/instagram-reels-scraper').call({usernames: ['example_brand', 'example_user'],maxReelsPerUser: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const topReel = items.sort((a, b) => (b.playCount || 0) - (a.playCount || 0))[0];console.log(`Top reel: ${topReel.url} with ${topReel.playCount} plays`);
No-code integrations
Stream results to Google Sheets, Slack, Zapier, Make, Amazon S3, HubSpot, or any webhook via Apify Integrations.
Pricing
Pay per result. No subscription. No per-run start fee. You only pay for the reels you actually receive.
| Event | Price |
|---|---|
| Reel scraped (primary) | $0.0012 |
Apify's $5 platform free credit applies on first use, which is roughly 4,000 free reels to start.
FAQ
Do I need an Instagram account or API key?
No. The scraper works on any public Instagram account without a login, cookies, or the Instagram Graph API.
Can it scrape reels from private accounts?
No. Private accounts do not expose their reels. A private target returns a single row with ok: false and error: "private_account", so you can tell it apart from an account that simply has no reels.
How many reels can I get per account?
Up to 5,000 per account per run. Pagination is walked automatically, so setting maxReelsPerUser to 500 returns 500 reels if the account has them, not just the first page.
Why did I get fewer reels than I asked for?
The account ran out of reels. Ask for 500 on an account with 80 reels and you get 80 real rows rather than 500 padded ones. The run log states the count per account.
Does it return the actual video file?
Yes. Every row carries a direct MP4 link in videoUrl plus a cover image in thumbnailUrl. Instagram media links are time-limited, so download promptly if you need to archive the file.
Are the play counts live?
Yes. Metrics are read at the moment of the scrape, not from a cache.
Can I export to CSV, Google Sheets or Excel?
Yes. JSON, CSV, Excel, XML and HTML are all supported, plus direct integrations to Google Sheets, Zapier, Make, Slack and S3.
What happens if an account cannot be reached?
The run does not fail. The actor emits a row with ok: false and a generic reason (not_found, private_account, upstream_rate_limit, or upstream_unavailable) and carries on with the rest of your list.
Related Apify actors
- π€ Instagram Profile Scraper - bios, follower counts, public emails, phone numbers, business info.
- π Instagram Posts Scraper - bulk export posts, captions, likes, comments, media.
- π¬ Instagram Comments Scraper - full comment threads from any post or reel.
- π Instagram Hashtag Scraper - top and recent posts for any tag.
Support
Found a bug or a missing field? Open an issue on the actor page. Reviews are read and replied to.
Privacy
To improve our actors we collect anonymized usage telemetry (run stats and input patterns). No personal account data is collected.