Instagram Comments Scraper — Public Posts, Reels & Replies
Pricing
from $0.50 / 1,000 results
Instagram Comments Scraper — Public Posts, Reels & Replies
Export public Instagram post and Reel comments with text, author data, available counts, and publication time. Anonymous child replies are best effort; popular ordering ranks collected candidates locally.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
Coor Yu
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Instagram Comments Scraper exports public Instagram post/Reel discussion text, authors, available counts, publication time and reply relationships. Replies are best effort; only embedded previews may be exposed.
Public page hydration and anonymous Relay pagination use HTTP, not a browser or Instagram login. Apify datacenter proxy routing is the default; direct egress is optional. Apify API access still requires an Apify token and incurs costs. No Instagram login does not guarantee anonymous access.
What it collects
- Top-level comments from public
/reel/,/reels/,/p/, and legacy/tv/URLs. - Available replies for selected parent comments when
includeRepliesis enabled. - Locally sorted candidate sets for
popularorrecent, subject to the ordering limitations below.
For discussion research, not post discovery, media export, private comments or sentiment scoring.
Quick start
{"postUrls": ["https://www.instagram.com/reel/Dd1_il8hdbC/"],"commentsPerPost": 3,"includeReplies": false,"repliesPerComment": 20,"sortOrder": "popular","proxy": { "useApifyProxy": true },"maxConcurrency": 4}
Illustrative input, not a verified result. Save as input.json for a billable Apify API run:
curl -X POST \'https://api.apify.com/v2/acts/funny_ground~instagram-comments-scraper-fast/run-sync-get-dataset-items' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \--data-binary @input.json
Input fields and ordering
| Field | Default | Behavior |
|---|---|---|
postUrls | [] | Required nonempty array of public post/Reel URLs. Identical trimmed strings are deduplicated. |
commentsPerPost | 100 | Requested top-level maximum per post; 0–50000. 0 removes the requested row bound on paid plans, not page/source/budget limits. |
includeReplies | false | Best-effort replies for selected parents. |
repliesPerComment | 20 | Requested per-parent reply target per session; 0–5000. 0 removes that requested bound on paid plans. |
sortOrder | "popular" | "popular" or "recent"; both sort the collected candidate set locally. |
proxy | {"useApifyProxy": true} | Set useApifyProxy: false for direct egress. Only the default datacenter pool is configured; custom URLs and supplied proxy groups are ignored. |
maxConcurrency | 4 | Global concurrent requests across posts and replies; 1–12. |
maxSessionRotations | 3 | Maximum anonymous sessions per post; 1–8. |
maxRequestRetries | 1 | Retries per request/session; 0–4. |
requestTimeoutSecs | 20 | Per-request timeout; 5–120 seconds. |
popular is not Instagram's official top-comment ranking. Within each session, the Actor sorts candidates by descending likes, then replies, then publication time. For a finite top-level target N, its candidate target is max(N, min(100, 5 × N)); the hydrated first page can already contain more candidates. This is not a search for the most popular comments in an entire discussion.
recent sorts collected candidates by source publication time. Fresh sessions merge rows in first-seen order; the merged final output is not globally re-ranked. Neither mode guarantees complete chronological coverage or consistent platform-wide ranking.
Top-level and child feeds have 10,000-page safety bounds. A feed ending, repeating pages, failed requests, restricted anonymous access, or budget exhaustion can reduce output. Replies are additional to the top-level target. Because unique replies from successive sessions are merged without a final per-parent trim, repliesPerComment is not a guaranteed hard final-row limit across rotations.
Developer Free-plan preview: at most 50 saved dataset rows per run globally, including replies. The first 50 input URLs are used; requested top-level/reply targets are capped at 50 and 0 becomes 50. Top-level rows precede replies within a post, so a full preview can omit replies. Paid plans remove this preview cap, not other bounds. FREE-plan events still cost money.
Output and count semantics
Each saved row is one public top-level comment or reply. Fields include:
commentId, decodedmediaId,shortcode, canonicalpostUrl,text;- source publication
createdAt, availablelikeCount,replyCount, andhasLiked; isReply, optionalparentCommentId,depth(0for top level,1for replies);- nested
author.id,username,fullName,profilePicUrl,verified; - ISO collection time
scrapedAt.
createdAt converts a source Unix-seconds value to ISO text and is empty when unavailable; it differs from collection time. Missing/unparseable numeric values become 0. replyCount can fall back to the number of preview children, which is not necessarily the total thread size or the number of replies saved. Counters are unverified source snapshots, not guaranteed exact totals. hasLiked reflects a supplied anonymous-viewer flag, not a creator heart or proof that a named user liked the comment. Missing badge/boolean fields can appear as false.
IDs are deduplicated within a post's merged sessions, not globally across every input. Different URLs for the same shortcode can trigger repeat scraping and result events; remove aliases before submitting if you need run-wide unique discussions.
Billing and current pricing
The result event is apify-default-dataset-item, one saved comment or reply row. HTTP requests, session rotations, and advertised comment totals are not custom result events. A post's records are pushed after its scrape returns. Reply endpoint failures can preserve selected top-level comments and embedded previews; an unsuccessful pagination session may be discarded before the next session is tried. Completed earlier sessions may still contribute rows.
| Apify plan | Per saved row event | Per 1,000 events |
|---|---|---|
| FREE | $0.0025 | $2.50 |
| BRONZE, SILVER, GOLD, PLATINUM, DIAMOND | $0.0005 | $0.50 |
The apify-actor-start event costs $0.005 per GB of allocated memory, minimum one event per run, not one universal fixed startup fee. Apify compute, transfer, storage, and enabled proxy usage are separately billed to the running user. Failed and empty runs can still incur startup and platform costs. No downstream Actor or separate per-request event is configured.
Consult the Pricing tab. A maximum event budget does not guarantee a full export or cover every platform cost.
Reliability and FAQs
Are complete reply threads guaranteed? No. Replies can be limited to embedded children; login walls or other reply errors leave partial or absent reply data. Private, deleted, filtered, and restricted comments may be inaccessible.
Does 0 mean a complete discussion archive? No. It removes a requested row target on paid plans while finite page bounds, anonymous-access restrictions, retries, and budgets remain. It is converted to 50 by the Free-plan policy.
What happens if an input fails? Other posts can still save output. A full run producing no valid records fails. Inspect saved dataset size and logs rather than assuming requested limits or logged collection totals equal saved output.
No authentication/access-control bypass. Use public data under Instagram's terms, applicable law and privacy requirements.
Complementary Actors
- Instagram Reels & Video Scraper — captions, owners, engagement totals, and temporary media links instead of comment text.
- Social Video Profile Resolver — resolve supported video links to public creator profiles.