Instagram Comments Scraper: Authors, Likes & Monitoring
Pricing
from $1.00 / 1,000 delivered comments
Instagram Comments Scraper: Authors, Likes & Monitoring
Collect public top-level Instagram comments from posts and reels: text, author, likes, timestamps and direct links. Filter by date and get only new comments across scheduled runs. Empty input runs a sample of up to 20 comments. $1 per 1,000 comments plus $0.30 per 1,000 pages read.
Pricing
from $1.00 / 1,000 delivered comments
Rating
0.0
(0)
Developer
Philip Kirkbride
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Features
Share
Instagram Comments Scraper
Collect public top-level comments from Instagram posts and reels. Each comment becomes one row with its text, author, time, likes and direct link. GIF-only comments are preserved, including their GIF link. No Instagram account is needed.
Filter comments by date, or remember delivered comments across scheduled runs. Replies are not collected in this version. Instagram may show fewer comments to signed-out visitors than the total displayed on a post.
Use cases
- Comment mining and UGC research. Collect what people write under a
campaign, a creator's post or a competitor's reel;
likesCountranks the comments that resonated andcommentUrlopens each one. - Brand and trend monitoring. Schedule a run with
monitoringKey; later runs deliver only comments you have not received before, so a daily schedule becomes a clean feed of what is new. - Campaign reporting. Run over the posts of a campaign and read
OUTPUT.postResultsfor comments per post, pages checked and why collection stopped. - Moderation triage.
ownerIsVerifiedandlikesCounthelp sort a large thread; GIF-only comments are kept with theirgifUrland an emptytext. - Sentiment or topic analysis input. The Actor does not infer sentiment; it preserves text, author, time and counts for your own model or spreadsheet.
To get the post links for a creator or a brand, use the
Instagram Profile Scraper
and pass its latestPosts[].url values here.
Pricing
| Charge | Price |
|---|---|
| Delivered comments | $1 per 1,000 ($0.001 each) |
| Run start | $0.003 per run |
| Comment page checked | $0.0003 per page |
These prices are the same on every Apify plan. A page fee applies once a comment page has been successfully read, including the initial page, empty pages and pages containing only old or already-delivered comments. Failed requests and automatic retries do not add page fees. The page fee can apply even when date filtering or monitoring delivers zero comments.
For example, 1,000 delivered comments across 47 pages cost $1.0171 in total. A monitoring run that checks five pages and finds nothing new costs $0.0045. The run-start fee also applies to runs with errors or no results. Memory is limited to 512 MB–1 GB so the automatic start fee remains $0.003 per run. Your maximum run cost stops further collection and delivery when a required page or result charge no longer fits. The run summary reports pages checked and why collection stopped.
For comparison, the platform's own Instagram Comments Scraper lists at $2.60 per 1,000 comments ($2.30 on Starter; its Store price starts at $1.90 with plan discounts). This one is $1 per 1,000 comments plus $0.30 per 1,000 comment pages checked — about $1.02 per 1,000 at 47 pages.
Worked costs
| Run | What you pay |
|---|---|
| First-run sample (20 comments, two pages) | about $0.024 |
| 100 comments (two pages) | about $0.104 |
| 1,000 comments across 47 pages | $1.0171 |
| 5,000 comments across about 100 pages | about $5.03 |
| Daily monitor, five pages checked, nothing new | $0.0045 |
| That monitor every day for a month | about $0.135 |
A full comment page carries up to 50 comments; Instagram sometimes returns fewer, which is why the page fee is small but not zero. Comments skipped by a date filter or a monitor do not cost a comment fee, but the page they were on does.
Quick start
{"postUrls": ["https://www.instagram.com/p/DeTUk4sDSp-/"],"maxCommentsPerPost": 100,"maxItems": 1000}
Use public /p/ or /reel/ links, or post shortcodes. Repeated links to the same
post are collected once. Profile links are not supported; supply the individual
post links you want to collect.
An empty run returns a small sample of 20 comments from the prefilled post, and
reports usedExample: true in the run summary.
Your first run
Press Start without touching the form: the Actor collects a sample of up to 20
comments from the prefilled post, reports usedExample: true and says in the run
status that it was the example run. That costs about $0.024 — one run start,
two comment pages and 20 delivered comments.
Then paste your own links. In the Console, click Bulk edit in the postUrls
field and add one public /p/ or /reel/ link (or shortcode) per line, up to
1,000 per run; repeated links to the same post are collected once. Use
maxCommentsPerPost for how deep to go in each thread and maxItems for the
run total, and maxPagesPerPost when a thread is old and you only want the
newest pages.
Inputs
| Input | Default | Meaning |
|---|---|---|
postUrls | the sample post | Up to 1,000 public post/reel links or shortcodes; paste one per line with Bulk edit. If you leave it out of the input, the Actor collects the same post the Console prefills (/p/DeTUk4sDSp-/), so a bare start still returns a sample. An empty list is an input error. |
maxCommentsPerPost | 100 | Maximum delivered comments per post, after filtering and deduplication. An empty run returns a small sample of 20 comments from the sample post. |
maxItems | 1000 | Maximum delivered comments in the whole run. |
maxPagesPerPost | 100 | Work limit per post, including the initial page. Useful when many comments are old or already delivered. |
onlyCommentsNewerThan | Unset | ISO timestamp with timezone, such as 2026-11-01T00:00:00Z. Deliver comments strictly after this date; unknown dates are skipped. |
monitoringKey | Unset | A stable name for a monitor that remembers delivered comments across runs. |
Both comment limits allow 1–100,000. The page limit allows 1–1,000. A short page does not mean collection is finished: collection follows Instagram's next-page indicator until a configured limit, source error, stalled cursor or exhaustion.
Scheduled monitoring
{"postUrls": ["https://www.instagram.com/p/DeTUk4sDSp-/"],"monitoringKey": "campaign-november","onlyCommentsNewerThan": "2026-11-01T00:00:00Z","maxCommentsPerPost": 500,"maxPagesPerPost": 50}
The first run delivers matching comments. Later runs with the same key skip
previously delivered comment IDs and continue looking through the allowed pages.
Only the latest 50,000 delivered IDs are remembered across all posts for that
key; older comments can appear again after eviction. Changing the key starts an
independent monitor. Run one task at a time per key: overlapping runs can deliver
duplicates. Dataset delivery and monitor checkpoints are separate operations,
so a crash or platform retry can also repeat a delivered comment. Deduplicate
by id in downstream systems.
Output
| Fields | Meaning |
|---|---|
id, commentUrl | Comment identity and direct link. |
postId, postShortCode, postUrl | Source post identity. |
text, gifUrl | Original text and optional GIF; text may be empty for a GIF-only comment. |
timestamp, scrapedAt | Published time when available, and collection time, in UTC. |
likesCount, repliesCount | Source-provided counts, or null when unavailable. Reply counts are commonly unavailable. |
ownerUsername, ownerId, ownerIsVerified | Public commenter identity and verification status when shown. |
ownerProfileUrl, ownerProfilePicUrl | Public profile and picture links when shown. |
parentCommentId, isReply | Parent identity if the source provides it. Reply threads are not fetched. |
The OUTPUT record reports delivered rows, per-post pages and stop reasons,
date-filter skips, already-delivered comments, errors and hasMore. Its
sourceReportedComments is the post's displayed count where available, which
may include replies and unavailable comments; it is not a promise of collectable
rows. exhausted means the public comment connection ended, not that every
comment on Instagram was available. A complete run means collection finished
under your configured limits; inspect each post's stop reason for coverage.
Failed posts do not become dataset rows. A run where every post fails exits with an error. A genuinely empty post, a date filter with no matches, or a monitor with no new comments can finish successfully with zero rows.
Limits
- Public top-level comments only. No private accounts, account cookies or reply-thread collection.
- Instagram can hide, remove, reorder or refuse comments. Collection is not guaranteed to include every comment or maintain a fixed order.
- Filtering examines all fetched comments; it does not assume old comments mean later pages are also old.
- Profile pictures and GIF links can expire. Counts reflect the time of collection.
- No sentiment or buying-intent inference is included; the output preserves source data.