Instagram Reels Scraper: Comments, Replies & Top Commenters
Pricing
Pay per usage
Instagram Reels Scraper: Comments, Replies & Top Commenters
Scrape Instagram Reels with the Instagram Reels Scraper. Extract video URLs, captions, hashtags, likes, comments, and uploader info. Perfect for trend analysis, content research, and social media insights. Fast, reliable, and scalable for single or bulk Reels scraping.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Scrapier
Maintained by CommunityActor stats
1
Bookmarked
7
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Instagram Reels Scraper — Extract Comments, Replies & Top Commenters
Instagram Reels Scraper — Extract Comments, Replies & Top Commenters pulls public Instagram reels for any username you supply, threads every comment into nested reply chains, and ranks the accounts driving the conversation. Each run returns reel metadata, engagement counts, full comment threads with replies, and a derived top-commenters and @mention lead list — all as structured JSON, ready to pass to an LLM, load into a spreadsheet, or feed a monitoring pipeline. Point it at one or many profiles and get the real audience conversation back in one run.
What is Instagram Reels Scraper: Comments, Replies & Top Commenters?
Instagram Reels Scraper: Comments, Replies & Top Commenters is an Apify Actor that scrapes public Instagram reels for any username or profile URL you supply, then fetches each reel's full comment thread — top-level comments plus nested replies — through a doc_id-free mobile REST endpoint. Its signature feature is a derived topCommenters and commentMentions lead list: every commenter on a reel is aggregated and ranked by comment count and total likes, so you get a real per-reel leaderboard instead of a raw comment dump. No Instagram login is required to scrape reel metadata and engagement counts; supplying your own sessionid cookie is only needed to unlock full comment text and reliable reply coverage.
- Scrapes reel metadata: caption, hashtags, @mentions, audio/music info, video URL, dimensions, duration, and timestamps
- Fetches full nested comment threads (not a ~12-comment preview) with replies linked to their parent via
parentId/isReply - Derives a ranked
topCommenterslist (username, comment count, total likes, verified badge) and acommentMentionslead list per reel - Optional caption transcript extraction, reel share count, and video download to the run's key-value store
- Filters by post date (
postedAfterDate, absolute or relative) and can skip pinned reels - Always runs on Apify's residential proxy, with automatic fallback from any custom proxy you supply
What data can you get with Instagram Reels Scraper: Comments, Replies & Top Commenters?
A single run returns reel metadata, media, engagement, and — when comment-thread fetching is enabled — full nested comment threads plus the derived top-commenter and @mention lead lists.
| Result Type | Extracted Fields | Primary Use Case |
|---|---|---|
| Reel & profile metadata | id, shortCode, url, caption, hashtags, mentions, timestamp, ownerUsername, ownerFullName, ownerId, isPinned, productType, inputUrl | Content inventory, profile activity tracking |
| Media & audio | type, displayUrl, images, videoUrl, videoDuration, dimensionsWidth, dimensionsHeight, alt, audioUrl, musicInfo, downloadedVideo, childPosts | Repurposing clips, archiving, carousel handling |
| Engagement | likesCount, commentsCount, videoViewCount, videoPlayCount, sharesCount, isCommentsDisabled | Performance benchmarking, virality tracking |
| Base comment preview | firstComment, latestComments | Quick sentiment glance without enabling full threads |
| Full comment threads & replies | commentThreadsFetched, fullCommentsCount, fullComments (each with id, text, ownerUsername, isVerified, likesCount, repliesCount, replies, timestamp) | Full-conversation analysis, moderation review |
| Top commenters & @mention leads | topCommenters (username, isVerified, profilePicUrl, commentsCount, totalLikes), commentMentions (username, mentionCount) | Outreach lead lists, superfan identification |
| Caption transcript | transcript | Text indexing, accessibility, SEO |
Top Commenters & @Mention Leads
This is the field set that separates this Actor from a plain comments dump: for every reel with full comment-thread fetching enabled, the Actor flattens every fetched comment and reply, groups the entries by ownerUsername, and ranks each person by how many times they commented (commentsCount) first, breaking ties by total likes received (totalLikes). Verified accounts are flagged via isVerified, so a genuine brand or creator reply stands out from an anonymous fan at a glance. The result is topCommenters, a ranked leaderboard capped at your configured topCommentersLimit (default 15, up to 100), and commentMentions: every @username mentioned inside comment text, deduplicated and ranked by mention frequency. Both lists are computed per reel from that reel's own thread — not aggregated across a profile's whole history, so one person commenting on ten reels shows up in ten separate rankings, not one combined leaderboard.
"topCommenters": [{ "username": "fan_account", "isVerified": false, "profilePicUrl": "https://...", "commentsCount": 4, "totalLikes": 61 },{ "username": "another_fan", "isVerified": true, "profilePicUrl": "https://...", "commentsCount": 2, "totalLikes": 15 }],"commentMentions": [{ "username": "cristiano", "mentionCount": 8 }]
Full Comment Threads & Replies
Beyond the base 12-comment preview, fullComments holds every fetched top-level comment as a nested object with its own replies array — each reply carrying parentId, isReply: true, its own like count, and timestamp. commentThreadsFetched and fullCommentsCount tell you at a glance whether the thread actually populated for that reel (it depends on fetchFullCommentThreads being on and, for real comment text, a valid igSessionCookie). Every comment and reply row is also mirrored to a separate <runId>-comments dataset for direct querying without unpacking nested JSON.
How does Instagram Reels Scraper: Comments, Replies & Top Commenters differ from the official Instagram API?
Meta's Instagram Graph API is built for managing your own professional account, not for reading arbitrary public accounts' content — as of Meta's developer documentation (checked 2026-07-26), it requires linking a Business or Creator account, and a permission "only allows access to data created by the app user who granted the permission," with broader third-party access gated behind Meta's App Review process.
| Feature | Instagram Graph API | This Scraper |
|---|---|---|
| Account requirement | Business/Creator professional account, app registration, App Review for Advanced Access | None — runs against any public username |
| Accounts you can query | Your own managed account (or accounts you have Advanced Access to) | Any public Instagram profile you supply |
| Comment access scope | Comments on your own account's media only | Full comment threads + replies on any public reel |
| Nested replies | Not built for cross-account thread retrieval | Native, with parentId/isReply linking |
| Top-commenter ranking | Not provided | topCommenters/commentMentions derived per reel |
| Setup | Facebook App, OAuth tokens, permission review | Enter usernames on Apify and run |
The Graph API is the right tool when you manage the Instagram account yourself and want to moderate or respond to your own comments through an approved app. This Actor is the fit when you need reel and comment data from other public accounts — competitors, creators, or communities you don't manage — without building and maintaining that OAuth/App Review pipeline yourself.
How to scrape Instagram with Instagram Reels Scraper: Comments, Replies & Top Commenters?
- Open Instagram Reels Scraper: Comments, Replies & Top Commenters on the Apify Store and click Run (no field is required — leave the input blank and it runs against the prefilled
natgeoprofile). - Add one or more Instagram usernames, @handles, or profile URLs to
targetProfiles. - Turn on
fetchFullCommentThreadsand paste your Instagramsessionidvalue intoigSessionCookieif you want real comment text, nested replies, and a populatedtopCommenters/commentMentionslist. - Set
maxReelsPerProfile,maxCommentsPerReel,maxRepliesPerComment, andtopCommentersLimitto the depth you need. - Start the run and download results as JSON, CSV, or Excel from the dataset — or open the separate
<runId>-commentsdataset for a flat, queryable comment/reply table.
{"targetProfiles": ["cristiano"],"maxReelsPerProfile": 5,"fetchFullCommentThreads": true,"maxCommentsPerReel": 20,"maxRepliesPerComment": 10,"extractTopCommentersAndMentions": true,"topCommentersLimit": 15,"igSessionCookie": "<your Instagram sessionid cookie value>"}
How to run multiple profiles in one job
targetProfiles accepts an array, so adding several usernames — ["cristiano", "natgeo", "nike"] — scrapes all of them in the same run, one after another, with results streamed to the same dataset as each profile completes. There is no separate concurrency setting exposed for parallelizing across profiles; each profile is paged through in sequence within the run.
⬇️ Input
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
targetProfiles | No | array | Instagram usernames, @handles, or profile URLs whose reels will be scraped | ["cristiano"] |
maxReelsPerProfile | No | integer | Maximum reels to collect per profile (1–10000, prefilled 10) | 10 |
postedAfterDate | No | string | Only scrape reels posted after this date — absolute (YYYY-MM-DD) or relative (7 days, 2 weeks, 1 month) | "7 days" |
skipPinnedReels | No | boolean | Ignore pinned reels and focus on regular timeline content | false |
igSessionCookie | No | string (secret) | Your authenticated Instagram sessionid cookie value, used only for comment-thread requests | "<sessionid>" |
fetchFullCommentThreads | No | boolean | Enable nested comment + reply fetching via the mobile REST endpoint (default false) | true |
maxCommentsPerReel | No | integer | Max top-level comment threads fetched per reel (1–200, default 20) | 20 |
maxRepliesPerComment | No | integer | Max nested replies fetched per comment (0–100, default 10) | 10 |
extractTopCommentersAndMentions | No | boolean | Derive the ranked topCommenters and commentMentions lists (default true) | true |
topCommentersLimit | No | integer | Max entries kept in each reel's topCommenters list (1–100, default 15) | 15 |
includeReelShareCount | No | boolean | Include share count for each reel when Instagram exposes it | false |
includeCaptionTranscript | No | boolean | Extract and include the reel's auto-generated transcript text | false |
saveReelVideoCopy | No | boolean | Download the reel video to the run's key-value store | false |
connectionProxy | No | object | Proxy configuration — the Actor always falls back to Apify's residential proxy | {"useApifyProxy": true} |
{"targetProfiles": ["cristiano"],"maxReelsPerProfile": 10,"postedAfterDate": "","skipPinnedReels": false,"igSessionCookie": "","fetchFullCommentThreads": true,"maxCommentsPerReel": 20,"maxRepliesPerComment": 10,"extractTopCommentersAndMentions": true,"topCommentersLimit": 15,"includeReelShareCount": false,"includeCaptionTranscript": false,"saveReelVideoCopy": false,"connectionProxy": { "useApifyProxy": true }}
Common pitfall: extractTopCommentersAndMentions defaults to true, but it only has data to work with when fetchFullCommentThreads is also on — and that defaults to false. If you leave comment-thread fetching off, topCommenters and commentMentions come back as empty arrays on every reel even though the toggle to derive them is already enabled.
⬆️ Output
Results are pushed to the Actor's dataset row-by-row as each reel is captured, and can be exported as JSON, CSV, or Excel. When fetchFullCommentThreads is on, every comment and reply is also mirrored to a separate <runId>-comments dataset for flat querying.
Scraped results
[{"id": "3727980973477364718","shortCode": "DO8cvGViIPu","url": "https://www.instagram.com/p/DO8cvGViIPu/","ownerUsername": "cristiano","ownerFullName": "Cristiano Ronaldo","caption": "On the 95th Saudi National Day...","hashtags": ["saudiarabia"],"mentions": [],"timestamp": "2026-09-23T18:04:00.000Z","likesCount": 1258268,"commentsCount": 12381,"videoViewCount": 37796913,"videoPlayCount": 21044113,"isPinned": false,"firstComment": "🔥🔥🔥","latestComments": [{ "id": "18100000000000099", "text": "😍", "ownerUsername": "cr7_fan_page" }],"commentThreadsFetched": true,"fullCommentsCount": 20,"fullComments": [{"id": "18100000000000001","type": "comment","isReply": false,"text": "This is incredible!","ownerUsername": "fan_account","isVerified": false,"likesCount": 42,"repliesCount": 2,"replies": [{ "id": "18100000000000002", "type": "reply", "isReply": true, "parentId": "18100000000000001", "text": "Agreed!", "ownerUsername": "another_fan", "likesCount": 3 }]}],"topCommenters": [{ "username": "fan_account", "isVerified": false, "commentsCount": 4, "totalLikes": 61 }],"commentMentions": [{ "username": "cristiano", "mentionCount": 8 }]},{"id": "3728011122334455661","shortCode": "DO9dwHXjJQv","url": "https://www.instagram.com/p/DO9dwHXjJQv/","ownerUsername": "cristiano","ownerFullName": "Cristiano Ronaldo","caption": "Training day.","hashtags": ["training"],"mentions": [],"timestamp": "2026-09-20T09:12:00.000Z","likesCount": 842011,"commentsCount": 5321,"videoViewCount": 15022004,"commentThreadsFetched": true,"fullCommentsCount": 20,"fullComments": [ { "id": "18100000000000010", "type": "comment", "isReply": false, "text": "GOAT", "ownerUsername": "fan_two", "likesCount": 12, "repliesCount": 0, "replies": [] } ],"topCommenters": [ { "username": "fan_two", "isVerified": false, "commentsCount": 3, "totalLikes": 27 } ],"commentMentions": []},{"id": "3728044556677889912","shortCode": "DOAee9pKrLw","url": "https://www.instagram.com/p/DOAee9pKrLw/","ownerUsername": "cristiano","ownerFullName": "Cristiano Ronaldo","caption": "Family time ❤️","hashtags": [],"mentions": ["georginagio"],"timestamp": "2026-09-18T14:30:00.000Z","likesCount": 2011455,"commentsCount": 18004,"videoViewCount": 52310087,"commentThreadsFetched": true,"fullCommentsCount": 20,"fullComments": [ { "id": "18100000000000020", "type": "comment", "isReply": false, "text": "Beautiful family", "ownerUsername": "fan_three", "likesCount": 60, "repliesCount": 1, "replies": [ { "id": "18100000000000021", "type": "reply", "isReply": true, "parentId": "18100000000000020", "text": "Yes!", "ownerUsername": "fan_four", "likesCount": 5 } ] } ],"topCommenters": [ { "username": "fan_three", "isVerified": true, "commentsCount": 5, "totalLikes": 88 } ],"commentMentions": [ { "username": "georginagio", "mentionCount": 3 } ]}]
How can I use the data extracted with Instagram Reels Scraper: Comments, Replies & Top Commenters?
- Community and audience research teams: build outreach and ambassador shortlists straight from
topCommentersandcommentMentions— the people commenting repeatedly and getting liked are your real superfans, ranked without manual scrolling. - Brand and marketing monitoring: track
fullComments,latestComments, andlikesCount/commentsCountacross sponsored or competitor reels to see how an audience is actually reacting, not just how many views a post got. - AI engineers and LLM developers: have an agent call this Actor with a list of usernames, receive structured JSON back, and ground a reply or report in real reel captions, comments, and ranked commenters instead of a model's guess.
- Creator discovery and influencer scouting: compare
topCommentersand engagement fields across several creators' recent reels to spot who has a genuinely active, replying audience before reaching out for a partnership.
How do you monitor top commenters and engagement over time?
Tracking top commenters over time means running the same profile list on a schedule and comparing each run's topCommenters and commentMentions against the previous one, so you can see which accounts are becoming repeat engagers rather than one-off commenters. Because each run derives topCommenters fresh from that run's fetched comment thread, diffing two runs' username, commentsCount, and totalLikes values for the same reel (or the same profile's newest reels) shows whether a person's engagement is growing, static, or gone.
A practical workflow: schedule a run across your tracked profiles every few days with fetchFullCommentThreads and extractTopCommentersAndMentions on, store each run's topCommenters/commentMentions output, and compare it against the prior run's output for the same shortCode. Flag any username that newly appears in topCommenters with a high commentsCount, or any commentMentions entry whose mentionCount jumped — that's usually either an emerging superfan worth an outreach message or a mention spike worth investigating.
This Actor itself runs once per invocation and doesn't schedule itself — use Apify's own Schedule feature on this Actor's page to trigger repeated runs at a fixed interval, and store or diff the resulting datasets in whatever pipeline (spreadsheet, database, or alerting script) you already use.
Integrate Instagram Reels Scraper: Comments, Replies & Top Commenters and automate your workflow
Instagram Reels Scraper: Comments, Replies & Top Commenters works with any language or tool that can send an HTTP request.
REST API with Python
import requestsTOKEN = "YOUR_APIFY_TOKEN"ACTOR = "scrapier~instagram-reels-scraper-comments-replies-top-commenters"url = f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items?token={TOKEN}"payload = {"targetProfiles": ["cristiano"],"maxReelsPerProfile": 5,"fetchFullCommentThreads": True,}resp = requests.post(url, json=payload, timeout=300)reels = resp.json()for reel in reels:print(reel["shortCode"], reel.get("topCommenters"))
MCP for query-grounded AI agents
This Actor is reachable through Apify's hosted MCP server — register it with https://mcp.apify.com?tools=scrapier/instagram-reels-scraper-comments-replies-top-commenters, or run apify mcp install claude-code --tools scrapier/instagram-reels-scraper-comments-replies-top-commenters. An agent calls the tool with a username list, gets back structured reel and comment JSON, and grounds its answer in that data instead of guessing. Works with Claude Desktop, Claude Code, and other MCP-compatible clients.
Scheduled monitoring and delivery
Use Apify's Schedule feature on this Actor's page to trigger runs automatically on a recurring interval, and Apify's webhook integrations to notify another system (or push to storage) when a run finishes — no code required for either.
Is it legal to scrape Instagram Reels comments?
Scraping publicly visible Instagram reels and comments is generally legal — this Actor only returns data any visitor can already see by opening the reel in a browser, whether logged in or not. That said, commenter usernames, profile pictures, and comment text are personal data under GDPR and, for California residents, CCPA — so storing, aggregating, or reusing this output (for example, building an outreach or lead list from topCommenters) puts you, not the Actor, in the role of the data controller/processor responsible for a lawful basis, retention limits, and any deletion requests. Scraping for one-off research carries a different risk profile than scraping for AI training or bulk long-term storage. Consult your legal team for commercial use cases involving bulk data storage.
Frequently asked questions
Does this scraper require an Instagram login?
No — reel metadata, engagement counts, and media scrape logged out. An Instagram login (your own sessionid cookie in igSessionCookie) is only needed to unlock full comment text, nested reply coverage, and a populated topCommenters/commentMentions list; without it those fields will be sparse or empty while every other reel field still populates.
How does the top-commenters ranking actually work?
For each reel, the Actor flattens every fetched comment and reply into one list, groups the entries by ownerUsername, and ranks each person by total comment count first and total likes received second — the top topCommentersLimit entries are kept as topCommenters. It's a real per-reel aggregation, not a relabeled comment list, but it's scoped to that one reel's fetched thread, not a profile-wide history.
Can I filter which reels get scraped?
Yes — postedAfterDate accepts an absolute date (YYYY-MM-DD) or a relative duration (7 days, 2 weeks, 1 month) to only scrape recent reels, and skipPinnedReels excludes pinned posts so you only get regular timeline content.
How many comments, replies, and top commenters can I fetch per reel?
Up to maxCommentsPerReel top-level comment threads (1–200, default 20), up to maxRepliesPerComment nested replies per comment (0–100, default 10), and up to topCommentersLimit ranked entries per reel (1–100, default 15). Reels per profile go up to maxReelsPerProfile (1–10000, default 10).
How does this scraper handle Instagram's anti-bot measures?
Every request runs through Apify's residential proxy by default, retrying up to 3 attempts on 429/401/403/5xx responses before giving up on that request; if you supply your own custom proxy URLs, the Actor tries those first and automatically escalates to residential on failure, then stays on residential for the rest of the run.
Is topCommenters an aggregate across my whole account, or just one reel?
Just one reel. topCommenters and commentMentions are derived from that specific reel's fetched comment thread — a person who comments across many of a profile's reels will show up separately in each reel's list, not combined into one profile-wide leaderboard.
How do I monitor top commenters or engagement over time?
Schedule repeated runs on the same profiles (via Apify's Schedule feature), store each run's topCommenters/commentMentions/fullCommentsCount output, and diff it against the previous run's output for the same shortCode — a new name appearing in topCommenters, or a jump in mentionCount, is the signal worth acting on.
Does this scraper work with Claude, ChatGPT, and AI agent frameworks?
Yes — it's callable as an HTTP endpoint by any agent framework, and it's also reachable through Apify's hosted MCP server (https://mcp.apify.com?tools=scrapier/instagram-reels-scraper-comments-replies-top-commenters), which lets Claude and other MCP-compatible clients call it as a tool and ground answers in the returned JSON.
Can I use this without managing proxies or Instagram credentials myself?
Yes for proxies — the Actor always runs on Apify's residential proxy with automatic retry/escalation, so you don't need to supply or manage one yourself. An Instagram login is optional: you only need to provide your own sessionid cookie if you want full comment text and reliable reply coverage; reel scraping itself needs no credentials.
Your feedback
Found a bug or a field that doesn't match what's documented here? Let us know via the Issues tab on this Actor's Apify Store page so it can be checked against the source and fixed. Feedback on missing fields or filters is also welcome — it helps prioritize what gets added next.