Instagram Reels Scraper — Plays, Likes & Comments by Profile
Pricing
from $1.00 / 1,000 reels
Instagram Reels Scraper — Plays, Likes & Comments by Profile
The reels of public Instagram profiles in the order of the Reels tab (pinned first, then newest), each with its plays, likes and comment count and how it did against the profile's usual. Caption, exact time, duration and music on request. Only-new mode for monitoring. No login, no cookies.
Pricing
from $1.00 / 1,000 reels
Rating
0.0
(0)
Developer
Berkan Kaplan
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
13 days ago
Last modified
Categories
Share
Instagram Reels Scraper — Plays, Likes & Comments by Profile 🚀
foXLabs Instagram series: Bulk Profile · Profile Posts · Post Details · Comments
🎉 Give this Actor Instagram profiles and it returns the reels of each profile's Reels tab, one row per reel: plays, likes, comment count, an approximate time, the cover image, and how the reel did against what's usual for that profile. On request it reads each reel by itself: caption, exact time, duration, music, video address, co-authors, topics.
It reads only what a signed-out visitor sees. No login, no cookies, nothing from your own Instagram account. Not affiliated with Instagram or Meta.
🔍 What is the Instagram Reels Scraper — and when should you use it?
Give this Actor profiles and it returns their reels with play/like/comment counts and a performance score — for content strategists, influencer marketing and trend research.
Use it when you need: a profile's reels with plays and engagement; how a reel did vs the profile's median; or reel details (caption, music, duration, co-authors).
Use something else when: you want profile-level metrics → Bulk Profile; photo posts and carousels → Profile Posts; a post's comments → Comments.
🤖 Use with AI agents
Already on the Apify MCP server? Ask for this Actor by name: foxlabs/instagram-reels-scraper. An agent can discover it, run it and read the dataset over MCP; the Actor is built to run in Standby mode for on-demand lookups.
Otherwise paste this into Claude, ChatGPT, Cursor or any MCP-enabled assistant:
I want Instagram reels by profile using the Apify Actor`foxlabs/instagram-reels-scraper`.Input: `profiles` is a list of usernames/URLs; `maxReelsPerProfile` caps rows; `includeDetails`reads each reel (caption, music, duration). Each row has playCount, likeCount, commentCount,profileMedianPlays and playsVsProfileMedian.Start with:{ "profiles": ["natgeo"], "maxReelsPerProfile": 24 }Ask me which profiles to analyse, run the Actor, then rank the reels by plays.
The machine-readable API, MCP config and OpenAPI definition live at apify.com/foxlabs/instagram-reels-scraper.md.
📋 Overview
Everything you need to turn a profile's Reels tab into clean, structured data — plays, engagement and a performance score — in one Actor, with no login, cookies or account.
Why teams pick this Actor:
- ✅ Plays from the tab — the real tile play figure, not the embed page's lower "views".
- 📊 Performance score —
playsVsProfileMedianshows how a reel did vs the profile's usual. - 🎬 Optional details — caption, exact time, duration, music, co-authors, topics, video address.
- 🎯 Honest — unknown is
nullnever 0; a hidden like count staysnull; limits spelled out. - 💰 Pay only for results —
reel/reel-detailedevents per row; status rows free. - 🤖 Agent-ready — MCP + Standby.
✨ Features
- 🔍 Reels by profile — username/@handle/URL, up to 10,000 profiles a run.
- ▶️ Metrics — playCount, likeCount (+
likesHidden), commentCount, approximate time, cover image, pin/position. - 📈 Benchmark —
profileMedianPlays+playsVsProfileMedian. - 🎞️ Details (opt-in) — caption, hashtags, mentions, duration, video URL, music, co-authors, tagged users, topics, location.
- 🔁 Only-new lists for recurring runs.
🎬 Quick Start
curl -X POST "https://api.apify.com/v2/acts/foxlabs~instagram-reels-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"profiles": ["natgeo"], "maxReelsPerProfile": 24}'
🚀 Getting Started (3 steps)
- List your profiles — one per line:
natgeo,@natgeoor a URL. - Set the cap & depth —
maxReelsPerProfile; turn onincludeDetailsfor caption/music/duration. - Run and export — get a clean dataset as JSON, CSV or Excel.
📥 Input
| Field | Default | What it does |
|---|---|---|
profiles | required | Usernames, @handles or URLs, one per line (up to 10,000); a profile named twice is read once. |
maxReelsPerProfile | 100 | Reels per profile from the top of its Reels tab. |
maxReels | 100000 | Reel rows in total. |
includeDetails | false | Read each reel by itself (one more request per reel). |
onlyNewReels, listName | false, default | Remember delivered reels and skip them later. |
proxyConfiguration | auto | Nothing to change for normal use. |
{ "profiles": ["nasa","nike","adidas"], "maxReelsPerProfile": 12, "includeDetails": true }
📤 Output
One row per reel (type: "reel"); a free type: "status" row for a line that brings no reels. Every row has 34 columns.
| Field | Description |
|---|---|
reelId, shortCode, url | the reel (reelId is the unique key) |
profileUsername, input | the profile whose tab listed it; your line |
ownerUserId, ownerUsername | who published it (a tab also shows reels co-published by others) |
playCount | the tab tile's play figure (not the embed "views") |
likeCount, likesHidden, commentCount | likes (null when hidden), hidden flag, comments |
profileMedianPlays, playsVsProfileMedian | the profile's first-page median, and this reel vs it |
takenAtApprox, isPinned, positionInProfile, displayUrl | approx time, pin/position, cover |
Details (includeDetails) | takenAt, caption, hashtags, mentions, durationSeconds, videoUrl, musicArtist, musicTitle, usesOriginalAudio, coauthors, taggedUsers, topics, locationName, detailsSource |
scrapedAt, error | when made; reason on status rows |
Without details the detail columns are null (lists too, so "not read" isn't mistaken for "none"); with details an empty list is [].
💼 Use cases
1. Reel performance analysis — a profile's reels ranked by plays and vs its median.
Input: the profile, defaults. Output: reels + playsVsProfileMedian. Use: find what over-performs.
2. Influencer vetting — what a creator's reels really get. Input: the handles. Output: plays, likes, comments per reel. Use: judge real reach before a deal.
3. Trend & music research — captions, hashtags, music across reels.
Input: profiles, includeDetails on. Output: caption/music/topics. Use: spot trends and sounds.
🔗 Integration
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('foxlabs/instagram-reels-scraper').call({ profiles: ['natgeo'], maxReelsPerProfile: 24 });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('foxlabs/instagram-reels-scraper').call(run_input={'profiles': ['natgeo'], 'maxReelsPerProfile': 24})for item in client.dataset(run.default_dataset_id).iterate_items():print(item)
Written for apify-client 3 for Python, where call() returns a run object; with version 1 or 2 it returns a dict — write run['defaultDatasetId'] there.
Automation (n8n / Zapier / Make): schedule → HTTP request to the Actor API with your profiles → handle the JSON dataset → push to a sheet, CRM or dashboard.
📊 Pricing
Pay-per-event, one event per delivered row: reel (from the reels list) or reel-detailed (when Instagram answered the per-reel details request with at least its exact time). A reel asked with details that came without them carries reel. Status rows are free. View current pricing.
❓ FAQ
Do I need an Instagram login or cookies? No — only what a signed-out visitor sees; figures can differ from the app.
Is playCount the same as "views"? No — it's the Reels tab tile's play figure, which ran 2.4–7.7× the embed page's "views" in our measurements.
What's the performance score? playsVsProfileMedian = the reel's plays ÷ the profile's first-page median plays.
Can I get captions and music? Yes — turn on includeDetails (one more request per reel).
Can I export to CSV / Excel / JSON? Yes — directly from the Apify dataset.
🐛 Troubleshooting / What it does NOT do
- Reels only — no photo posts/carousels, no comment texts (count only), no shares/saves/transcripts.
- Nothing behind the login — no private profiles, stories, highlights, follower lists, search, tagged tab.
- Signed-in-only / age-restricted / private profiles get a free status row (private reels aren't shown).
- Hidden like count →
likeCount: null,likesHidden: true(plays and comments still come). - Media isn't downloaded —
videoUrl/displayUrlare Instagram's temporary addresses. takenAtApproxis read from the reel id (median 77 s before the exact time); usetakenAt(details) when the time matters.- A changed Instagram page ends the run with a message (not empty rows); a start-up check stops it before anything is charged.
⚠️ Trademark
Independent, third-party tool. Not affiliated with, endorsed by or connected to Instagram or Meta Platforms, Inc. "Instagram" and related marks belong to their owners and are used here for identification only.
⚖️ Is it legal to scrape this data?
Rows describe what an account published publicly; captions, co-authors, tagged accounts and places can be personal data. You decide why you collect them and are responsible for a lawful reason (GDPR and similar). Media belongs to its owners; the Actor gives no right to reuse it, and media addresses are temporary. The Actor writes only to your own run's storage. See Apify's blog post on the legality of web scraping.
🤝 Support & contact
- 🌐 Website: data.foxlabs.com.tr
- 📧 Email: info@foxlabs.com.tr
- 🐛 Issues: open a ticket in the Actor's Issues tab — the run's
SOURCE_REPORTrecord says which road was used and why the run stopped. - 🧰 More clean data actors: Fox Labs on Apify
Changelog
0.1.6 — 2026-10-10
- After an independent README review: a details answer without the reel's exact time counts as no details (row carries
reel, notreel-detailed); a Reels tab whose first page carries no play counts gets a status row; the status message names cut/own-less profiles;listNamechecked only whenonlyNewReelsis on; a proxy set in the input is the road of every request.
0.1 — 2026-10-09
- First version: reels per profile with plays, likes, comment count and a score vs the profile's median; details on request; only-new lists; free status rows; requests ≥80 ms apart; measured on the Apify platform (500 reels in 15 s; 60 with details in 28 s; a restarted run delivered no reel twice). Standby mode prepared.