Instagram Reels Views Scraper: Play Counts Per Reel, No Login
Pricing
from $1.00 / 1,000 reels
Instagram Reels Views Scraper: Play Counts Per Reel, No Login
Get the view count of every public reel on any Instagram profile, one row per reel: views, likes, comments, date, pinned and collab flags, followers, and reach against the profile's median. No login or cookies. Filter by date or minimum views. Pay per reel; private and missing profiles are free.
Pricing
from $1.00 / 1,000 reels
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
What does Instagram Reels Views Scraper do?
Give it Instagram usernames. Get back one row per public reel with the number that matters: how many times it was viewed. Each row also carries likes, comments, the posting date, whether the reel is pinned or a collab, the thumbnail, and the profile's follower count, so you can compare reels and accounts in one spreadsheet without joining tables.
Every row also answers the question view counts alone cannot: was this reel a hit for this account? reach_ratio divides the reel's views by the median views of the profile's other reels. A reel at 3.2 pulled more than three times the account's usual audience; one at 0.4 underperformed. That works across accounts of any size, which raw view counts do not.
No Instagram login, no cookies, no API key. The actor reads what Instagram shows any logged-out visitor on a profile's reels tab.
✅ One row per reel | ✅ Views, likes, comments, date | ✅ Reach against the profile's median | ✅ No login | ✅ Pay only for reels delivered | ✅ MCP-ready for AI agents
Who is it for?
Influencer marketing teams checking whether a creator's views are real and recent before signing a deal. Brand and social media managers tracking which competitor reels break out. Agencies and analysts building view benchmarks across many accounts. Researchers collecting public reel performance data at scale.
How much does it cost to scrape Instagram reel views?
$0.0025 per reel delivered on Apify's Free plan, falling to $0.001 on Business and above ($2.50 to $1.00 per 1,000 reels), plus $0.005 per run. Turning on reel details adds $0.001 per reel on Free ($0.0005 on Business and above), charged only when the details were actually fetched.
| Plan | Per reel | Reel details add-on |
|---|---|---|
| Free | $0.0025 | $0.001 |
| Starter | $0.0021 | $0.0008 |
| Scale | $0.0016 | $0.0007 |
| Business and above | $0.001 | $0.0005 |
| Job (Free plan, one run) | Reels | Cost |
|---|---|---|
| Latest 12 reels of one profile | 12 | $0.035 |
| Latest 30 reels of 100 profiles | 3,000 | $7.51 |
| Latest 100 reels of 50 profiles | 5,000 | $12.51 |
What is never charged: profiles that are private, do not exist, have no reels, or that Instagram refused; reels left out by your own settings (pinned reels, reels outside your date window, reels under your minimum views); reels Instagram returned without a view count; and, with reel details on, reels whose details could not be fetched. None of these produce a charge. The run summary lists every profile and what happened to it.
The Pricing tab on this page always shows the current rate for your plan. If it and this table ever disagree, the Pricing tab is right. The actor also respects your run's maximum cost: when the limit is reached it stops before delivering reels it could not charge for.
How does it get reel views without logging in?
When a logged-out visitor opens instagram.com/<username>/reels/, Instagram's own website loads the reels through an internal GraphQL request that returns 12 reels at a time, each with its view, like and comment counts. This actor sends that same request, over Apify datacenter proxy by default, and follows the page cursor until it has as many reels as you asked for. A second request reads the profile's exact follower count and verified badge. With reel details on, one more request per reel reads the caption, coauthors, video URL, video length and exact publish time.
The normal path needs no browser, no login and no residential proxy, which is why the price per reel is low. In a 50 profile test of this route on 26 September 2026, 552 of 552 reels came back with a view count and Instagram returned no rate limit errors.
Instagram occasionally renames those internal requests when it ships a new website build. The actor detects this, re-reads the current names from Instagram once per run, and carries on. If it still cannot read reels, it says so plainly instead of returning an empty success: the run summary shows route_broken: true, the log shows an error, and a run that delivered nothing ends as failed. Profiles it could not read are never charged.
What input does it take?
{"usernames": ["natgeo", "nasa"],"maxReelsPerProfile": 30,"newerThanDays": 90,"minViews": 10000,"skipPinned": true,"includeReelDetails": false}
| Input | Default | What it does |
|---|---|---|
usernames | required | Public accounts, up to 1,000 per run. Usernames, @handles and profile links all work. username, profiles, directUrls, startUrls and urls are accepted too |
maxReelsPerProfile | 30 | Most recent reels per profile, newest first, up to 1,000 |
newerThanDays | none | Only reels posted in the last N days. Reading stops at the window edge, so older reels cost nothing |
minViews | none | Only reels with at least this many views |
skipPinned | true | Leave out pinned reels, which sit on top regardless of age |
includeReelDetails | false | Add caption, hashtags, mentions, coauthors, collab owner, video URL, video length and exact publish time |
proxyConfiguration | Apify datacenter | Leave as is |
What data do you get back?
A real row from a test run against natgeo on 27 September 2026 with reel details on (signed image and video URLs shortened):
{"username": "natgeo","full_name": "National Geographic","followers": 268498692,"is_verified": true,"shortcode": "DduQxrBjnsB","url": "https://www.instagram.com/reel/DduQxrBjnsB/","taken_at": "2026-09-26T16:00:03.000Z","taken_at_source": "exact","play_count": 1205771,"like_count": 18855,"comment_count": 81,"reach_ratio": 0.72,"median_play_count": 1664986,"median_sample_size": 24,"product_type": "clips","is_pinned": false,"is_collab": false,"owner_username": "natgeo","owner_id": "787132","counts_hidden": false,"display_url": "https://scontent.cdninstagram.com/v/t51.82787-15/825320378_n.jpg?...","caption": "When 33 miners became trapped underground in northern Chile, the whole world watched as rescuers searched for ways to bring them back to safety. \n\n#ChileanMineRescue: Race Against Time is now streaming on @DisneyPlus and @hulu.","hashtags": ["ChileanMineRescue"],"mentions": ["DisneyPlus", "hulu"],"coauthors": ["natgeohistory"],"video_url": "https://instagram.fhyd2-2.fna.fbcdn.net/o1/v/t2/f2/m86/AQNWwxb.mp4?...","video_duration": 30.04,"details_status": "ok","scraped_at": "2026-09-27T10:59:55.108Z"}
| Field | Description |
|---|---|
username | The profile you asked for, whose reels tab this reel came from |
full_name, followers, is_verified | That profile's display name, exact follower count and verified badge |
shortcode, url | The reel's Instagram code and direct link |
taken_at | When the reel was posted. taken_at_source says media_id (upload time read from the reel's id, usually a few minutes before publishing) or exact (publish time, with reel details on) |
play_count | Views, as Instagram reports them |
like_count, comment_count | Likes and comments at scrape time |
reach_ratio | Views divided by median_play_count. 1.0 is a typical reel for this account |
median_play_count, median_sample_size | Median views of the profile's non-pinned reels read in this run, and how many reels that median covers |
is_pinned, is_collab | Pinned to the top; owned by another account with this profile as coauthor |
owner_username, owner_id | Who owns the reel. For collab reels the username needs reel details on |
counts_hidden | The owner hides counts in the Instagram app. The counts here are what Instagram still returns |
display_url | Thumbnail image |
caption, hashtags, mentions, coauthors, video_url, video_duration, details_status | Reel details, only when includeReelDetails is on |
scraped_at | When the row was produced |
Fields with no value are left out of the row rather than sent as null.
The run summary. The default dataset holds reel rows only. Everything else is in the run's OUTPUT record (Storage, then Key-value store): a line for every profile with its status (ok, partial, private, not_found, no_reels, filtered_out, unavailable, blocked, skipped, invalid_input), how many reels were read and delivered, and a plain explanation when something did not work. None of it is billed.
What are the limitations?
- No share or save counts. Instagram does not show them to logged-out visitors on any request we found, so no row carries them. Be wary of any tool that promises them without a login.
- Private accounts return nothing. Their reels are visible only to approved followers. They are listed in the summary as
privateand not charged. - Some profiles are hidden from logged-out visitors, for example age restricted accounts. They show as
unavailable, not charged. - Input is by profile. Single reel links, hashtags and keyword search are not supported. A reel link in your list is skipped and noted in the summary.
- Collab reels appear on every coauthor's reels tab, just as on Instagram.
is_collabmarks them so you can filter them out. - Image and video URLs are signed by Instagram and stop working after some days. Download what you need soon after the run.
- Counts are live at scrape time. Views keep growing for days after posting, so run on a schedule if you track them.
What can you use it for?
Influencer vetting. Pull a creator's last 30 reels and look at reach_ratio and median_play_count instead of follower count. A large account whose recent reels sit far below its own median is losing its audience.
Competitor content tracking. Run your competitors daily with newerThanDays: 7 and sort by reach_ratio to see which new reels broke out, then read the captions with reel details on.
Benchmarks across accounts. reach_ratio puts a 10,000 follower account and a 10 million follower account on the same scale, so you can rank creators by how well their content performs, not how big they are.
Content research. Filter with minViews to collect only the reels that travelled, with captions and hashtags, for a swipe file of what works in a niche.
How do I get started?
- Add the usernames or profile links you want in
usernames. - Set
maxReelsPerProfile(30 by default). AddnewerThanDaysorminViewsif you only want recent or popular reels. - Turn on
includeReelDetailsif you need captions, coauthors or video URLs. - Click Start. Download the reels as JSON, CSV or Excel from the dataset, or pull them via API or MCP. Open the
OUTPUTrecord to see what happened to each profile.
Can I run it on a schedule?
Yes, with Apify Schedules, no code needed.
- Run the actor once with the input you want repeated, then click Save as a task.
- In the Apify Console, open Schedules, then Create new.
- Pick a frequency or a cron expression such as
0 6 * * *(daily at 6am). - Under Actors or tasks to run, add the task you saved, then save.
Each scheduled run is billed per reel exactly like a manual one. Nothing is charged for the schedule itself. Full options are in Apify's Schedules documentation.
FAQ
How much does it cost to get the view counts of 1,000 Instagram reels?
$2.50 on Apify's Free plan, falling to $1.00 on Business and above, plus $0.005 per run. Pulling the latest 30 reels from 100 profiles in one run is 3,000 reels, or $7.51 on the Free plan. Private, missing and refused profiles, and reels your filters leave out, cost nothing.
Do I need an Instagram account, cookies or an API key?
No. The actor reads only what Instagram shows a logged-out visitor, so there is no account to connect and nothing of yours at risk of a ban. You only need an Apify account to run it.
Can I get the share count or save count of a reel?
No. Instagram does not serve share or save counts to logged-out visitors, so they are not in the output. Views, likes and comments are.
How many reels can I get per profile?
Up to 1,000 per profile per run, newest first, set with maxReelsPerProfile. Instagram serves 12 reels per request, so the default of 30 takes three requests per profile. How far back a profile goes depends on how many reels it has posted.
Can I get only recent reels, or only reels above a certain number of views?
Yes. newerThanDays: 30 returns only reels from the last 30 days and stops reading as soon as it passes that point. minViews: 100000 returns only reels with at least 100,000 views. Reels your filters leave out are never charged.
What does reach_ratio mean?
It is the reel's views divided by the median views of the same profile's non-pinned reels read in the run. A value of 2.0 means the reel reached twice the account's typical audience; 0.5 means half. median_sample_size tells you how many reels the median is based on.
Why is owner_username missing on some reels?
Those are collab reels: another account posted them with this profile as a coauthor, and they appear on both reels tabs. The reels list only gives the owner's numeric id (owner_id). Turn on includeReelDetails to get the owner's username.
Am I charged for private accounts or usernames that do not exist?
No. They produce no reel rows, so nothing is billed. Each one is listed in the run's OUTPUT record with a status of private or not_found and a short explanation.
Can I scrape a single reel by its URL, or reels by hashtag?
Not with this actor. It reads reels from profiles. A single reel link in your input is skipped, noted in the summary and not charged. To cover a hashtag or topic, list the accounts you care about.
Is it legal to scrape Instagram reel data?
The actor collects only public data that Instagram shows to any visitor without logging in. Public data can still include personal data under laws such as the GDPR and CCPA, so collect only what you have a legitimate purpose for. This is general information, not legal advice.
Use in Claude, ChatGPT and any MCP agent
Add it to Claude Code in one line:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=themineworks/instagram-reels-views-scraper"
Or point any MCP client at:
https://mcp.apify.com/?tools=themineworks/instagram-reels-views-scraper
Things an agent can ask for once connected:
- "Get the last 30 reels of natgeo and nasa with their view counts, and tell me which reels beat each account's median by 3x."
- "Which of these five creators has the highest median views on reels from the last 60 days?"
Or call it programmatically with the Apify client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/instagram-reels-views-scraper').call({usernames: ['natgeo', 'nasa'],maxReelsPerProfile: 30,newerThanDays: 90,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
More from The Mine Works
Browse every tool at themineworks.com. Related actors for social media data:
- Instagram Profile Scraper: follower counts, bio and profile stats for a list of Instagram accounts.
- Threads Scraper: posts, profiles and search on Meta Threads.
- Twitter / X Scraper: tweets by keyword or handle with no paid API key.
Found this useful? A quick Store review helps other buyers find it. Found a bug or want a field added? Open an issue on the actor's Apify Console page.
Disclaimer: This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc. Instagram is a trademark of Meta Platforms, Inc. Use scraped public data in line with GDPR, CCPA and your local laws.