Instagram Comments Scraper - Cheaper avatar

Instagram Comments Scraper - Cheaper

Under maintenance

Pricing

from $0.80 / 1,000 results

Go to Apify Store
Instagram Comments Scraper - Cheaper

Instagram Comments Scraper - Cheaper

Under maintenance

Fetch comments for any public Instagram post / reel / IGTV — author, text, like count, reply count, timestamp — with automatic pagination. No login required, Fast Http only scraper.

Pricing

from $0.80 / 1,000 results

Rating

0.0

(0)

Developer

Xtractoo

Xtractoo

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Instagram Post Comments Scraper

Pull all public comments from any Instagram post, reel, or IGTV in bulk — comment text, author, like count, reply count, timestamp — with automatic pagination through hundreds of comments. No login or API key required.

Why use this actor

  • No account / no login required — just give it a shortcode or post URL.
  • Far beyond the 12-comment web preview — paginates through the full comments section via cursor, so you can pull hundreds or thousands of comments per post.
  • Bulk input — pass a list of posts in one run; each comment streams in as its own dataset row, tagged with the post shortcode for easy joining.
  • Stable JSON output — every row carries _input, _mediaId, _source, and _scrapedAt envelope fields so you can join results back to your input list.
  • Rich author info — comment author username, full name, verified status, and profile picture URL included inline.
  • Datacenter proxy friendly — works from cheap DC IPs, no residential proxy needed.
  • Automatic retries — transient failures retry with exponential backoff; private posts or deleted posts return structured _error records.

How it works

  1. You provide a list of Instagram posts (shortcode like DYSM8J5yzSj or full URL like https://www.instagram.com/p/DYSM8J5yzSj/).
  2. The actor decodes each shortcode to its internal media ID, then walks the post's comments via cursor pagination, streaming each comment as its own dataset row.
  3. Pagination stops when maxComments is reached or the post runs out of comments.

You do not need to manage scrapers, browsers, or rotating IPs — all handled internally.

Input

{
"posts": [
"https://www.instagram.com/p/DYSM8J5yzSj/",
"DYP-BHSPCfn"
],
"maxComments": 50,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["DATACENTER"]
}
}
FieldTypeDescription
postsarrayList of Instagram posts. Each entry can be a shortcode (e.g. DYSM8J5yzSj) or a full URL on /p/, /reel/, or /tv/. Bulk input is supported.
maxCommentsintegerMax top-level comments per post. Pagination is automatic. Default 50. Set to 0 for unlimited (walks the entire comments section).
proxyConfigurationobjectApify Proxy settings. Datacenter proxy works fine.

Output

Input: DYSM8J5yzSj

One dataset row per comment:

{
"_input": "DYSM8J5yzSj",
"_mediaId": "3896233537988932771",
"_source": "S1-primary",
"_scrapedAt": "2026-05-18T18:27:08.557199+00:00",
"id": "18125377714533878",
"text": "Incredible!",
"createdAt": 1779128299,
"likeCount": 0,
"replyCount": null,
"hasMoreHeadChildren": null,
"user": {
"id": "80110440628",
"username": "canadianstudentliving",
"fullName": null,
"isVerified": false,
"profilePicUrl": "https://scontent.cdninstagram.com/v/t51.82787-19/..."
}
}
FieldTypeDescription
_inputstringThe post shortcode or URL exactly as you supplied it.
_mediaIdstringInstagram's internal media ID (decoded from the shortcode). Stable; use it to join comments to a post detail record.
_sourcestringInternal tag for the path used (S1-primary).
_scrapedAtstringISO-8601 UTC timestamp when this comment was scraped.
idstringComment's stable numeric ID.
textstringThe comment body. Plain text including emojis (no HTML).
createdAtintegerUnix epoch seconds when the comment was posted.
likeCountintegerNumber of likes the comment has received.
replyCountinteger|nullNumber of replies to this comment. null when not exposed by Instagram.
hasMoreHeadChildrenboolean|nulltrue if Instagram has trimmed nested replies (more available than shown).
userobjectComment author profile: id, username, fullName, isVerified, profilePicUrl.

Error envelope

Posts that don't exist, are private, or fail to fetch return a structured error instead of crashing the run:

{
"_input": "https://www.instagram.com/p/this-does-not-exist/",
"_mediaId": "0",
"_error": "fetch_failed",
"_errorDetail": "NotFound graphql PolarisPostCommentsContainerQuery",
"_source": "S1-primary",
"_scrapedAt": "2026-05-18T18:30:00.000000+00:00"
}
_error valueWhen
invalid_inputThe shortcode could not be parsed from the input string.
fetch_failedThe post does not exist, is private, or Instagram rate-limited the request. Retry with proxy rotation.

Pricing

This actor is billed per result: $6.00 per 1,000 comments (Tier 4 — Instagram requires warm-page token harvesting and the GraphQL query ID rotates every 2–4 weeks, so the actor needs active maintenance). Each comment returned = 1 result. Error envelope records are not billed.

Other Sosmed Actors

PlatformActorBest for
InstagramInstagram Post Detail ScraperThe post itself — caption, media URLs, like count, owner
InstagramInstagram Account ScraperProfile metadata for an IG handle
InstagramInstagram Account Posts ScraperPaginated post timeline for a user
YouTubeYouTube Video Comments ScraperComments tree for any YouTube video
RedditReddit Post Detail ScraperReddit post body + comment thread
FacebookFacebook Post Detail ScraperFB post text + reactions + share counts
ThreadsThreads Account Replies ScraperA user's reply chain on Threads

Browse the full catalog at apify.com/xtracto.

Notes

  • Top-level comments only. Each row is a top-level comment. The replyCount field tells you how many replies a comment has, but the replies themselves are not flattened into the dataset.
  • Pagination is automatic via Instagram's cursor. The actor stops when it hits maxComments or the post has no more comments.
  • Rate limiting. Heavy concurrent runs against one IP can trigger Instagram's anti-abuse. Use Apify Proxy and keep concurrency modest (≤ 5 parallel posts) for best reliability.
  • Private posts return _error: "fetch_failed". The actor cannot bypass account privacy settings.
  • Deleted posts return the same error envelope. Filter on _error to triage failures.
  • Comments disabled posts return zero rows (no error). If you got 0 comments on a known-popular post, the author likely disabled comments.
  • Counters are eventually-consistent. Like counts on individual comments may lag the live UI by a few minutes.