Instagram Comments Scraper — Public Posts, Reels & Replies avatar

Instagram Comments Scraper — Public Posts, Reels & Replies

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Instagram Comments Scraper — Public Posts, Reels & Replies

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

Coor Yu

Maintained by Community

Actor 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 includeReplies is enabled.
  • Locally sorted candidate sets for popular or recent, 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

FieldDefaultBehavior
postUrls[]Required nonempty array of public post/Reel URLs. Identical trimmed strings are deduplicated.
commentsPerPost100Requested top-level maximum per post; 0–50000. 0 removes the requested row bound on paid plans, not page/source/budget limits.
includeRepliesfalseBest-effort replies for selected parents.
repliesPerComment20Requested 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.
maxConcurrency4Global concurrent requests across posts and replies; 1–12.
maxSessionRotations3Maximum anonymous sessions per post; 1–8.
maxRequestRetries1Retries per request/session; 0–4.
requestTimeoutSecs20Per-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, decoded mediaId, shortcode, canonical postUrl, text;
  • source publication createdAt, available likeCount, replyCount, and hasLiked;
  • isReply, optional parentCommentId, depth (0 for top level, 1 for 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 planPer saved row eventPer 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