Instagram Comments Scraper avatar

Instagram Comments Scraper

Pricing

from $0.70 / 1,000 comments

Go to Apify Store
Instagram Comments Scraper

Instagram Comments Scraper

Instagram comments scraper: export the comments of public Instagram posts and reels with text, date, likes, commenter and post author. No login or cookies needed.

Pricing

from $0.70 / 1,000 comments

Rating

0.0

(0)

Developer

Keklik Technologies

Keklik Technologies

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

This Instagram comments scraper lets you scrape the comments of public Instagram posts and reels and export them to JSON, CSV or Excel. Paste a few post or reel links, press Start, and get one row per comment: the text, date, likes, the commenter's username and profile, and the post's author. No Instagram account, no login and no cookies are needed.

What data can you extract from Instagram comments?

Each comment comes back as one row with 23 fields.

GroupFields
CommentComment ID, comment link, text, date (Unix seconds and ISO 8601 in UTC), number of likes, edited flag, hidden-as-offensive flag
GIF commentsGIPHY ID and GIF image link
CommenterUser ID, username, verified badge, profile picture, profile link
PostPost link, author's user ID, username, display name and verified badge, the comment count Instagram shows on the post
Run detailsThe input the comment came from, and when the row was scraped

Use cases

  • Brand and social listening: read what people say under your posts, a competitor's posts or a campaign, and spot complaints, questions and praise early.
  • Sentiment analysis and research: export thousands of comments as a dataset for sentiment, topic or language analysis, or for academic studies of online conversation.
  • Influencer marketing: check whether an influencer's comment section is real engagement, see who comments, and how many of them are verified accounts.
  • Giveaways and contests: collect every comment on a giveaway post, with usernames and dates, to pick winners fairly.
  • Lead generation and community building: find the people who engage with posts in your niche and see who keeps coming back.
  • Content strategy: learn which posts start conversations and what your audience asks about.

How to scrape Instagram comments

  1. Open Instagram Comments Scraper in Apify Console and go to the Input tab.
  2. In Posts or reels, paste one Instagram post or reel URL per line. A bare shortcode such as DeTUk4sDSp- works too.
  3. Set Max comments per post to cap how many comments each post gives you, or leave it empty to get every comment.
  4. Optionally set Newer than (for example 7d or 2026-01-31) to keep only recent comments, and Max results to cap the whole run.
  5. Click Start and watch the comments appear in the Output tab.
  6. Download the data as JSON, CSV, Excel, XML or HTML, or read it through the Apify API.

Input

FieldWhat it does
Posts or reelsOne per line: a post or reel URL (https://www.instagram.com/p/DeTUk4sDSp-/, https://www.instagram.com/reel/DeTUk4sDSp-/) or its shortcode (DeTUk4sDSp-). Duplicates are scraped once.
Max comments per postStops each post after this many comments, newest first. Leave empty for every comment.
Newer thanOnly comments written after a date in UTC (2026-01-31 or 2026-01-31 18:00) or within a duration back from now (24h, 7d, 2w).
Max resultsStops the whole run after this many comments. Leave empty for no limit.
{
"urls": ["https://www.instagram.com/p/DeTUk4sDSp-/", "DehZj9wggt0"],
"maxCommentsPerPost": 500,
"newerThan": "7d"
}

Output

Comments come newest first within each post. Here is a row from a real run, with the commenter's details replaced by placeholders:

{
"comment_id": "18118174273994291",
"comment_url": "https://www.instagram.com/p/DehZj9wggt0/c/18118174273994291/",
"post_url": "https://www.instagram.com/p/DehZj9wggt0/",
"text": "beautiful place!!!",
"timestamp": 1792102581,
"timestamp_datetime": "2026-10-15T22:16:21+00:00",
"likes_count": 1,
"is_edited": false,
"is_covered": false,
"giphy_id": null,
"giphy_url": null,
"owner_id": "<commenter's user ID>",
"owner_username": "<commenter's username>",
"owner_is_verified": true,
"owner_profile_pic_url": "<commenter's profile picture URL>",
"owner_profile_url": "https://www.instagram.com/<commenter's username>/",
"post_owner_id": "787132",
"post_owner_username": "natgeo",
"post_owner_full_name": "National Geographic",
"post_owner_is_verified": true,
"post_comments_count": 262,
"source_url": "https://www.instagram.com/reel/DehZj9wggt0/",
"scraping_time": "2026-10-16T11:43:39+00:00"
}

You can export the results to JSON, CSV, Excel, XML and HTML from the Output tab, or fetch them with the API. Profile picture links come from Instagram and expire after a while, so download the images soon if you need them.

How much does it cost to scrape Instagram comments?

This Actor uses pay-per-event pricing: you pay only for the comments you get.

  • $1.00 per 1,000 comments on the Apify Free plan.
  • Bronze, Silver and Gold Apify plans pay less: $0.90, $0.80 and $0.70 per 1,000 comments.
  • Proxies are included. There is no separate charge per post or per run.

Inputs that fail (see the FAQ) give no rows, so they cost nothing. Use Max comments per post, Newer than and Max results to keep a run within budget.

Integrations and API

Everything you can do in Apify Console you can also do through the Apify API: start runs, pass input, and read the comments as JSON, CSV or Excel.

Python, with the apify-client package:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("kekliktech/instagram-comments-scraper").call(run_input={
"urls": ["https://www.instagram.com/p/DeTUk4sDSp-/"],
"maxCommentsPerPost": 100,
})
for comment in client.dataset(run["defaultDatasetId"]).iterate_items():
print(comment["owner_username"], comment["text"])

Node.js, with the apify-client package:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('kekliktech/instagram-comments-scraper').call({
urls: ['https://www.instagram.com/p/DeTUk4sDSp-/'],
maxCommentsPerPost: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

You can also:

  • Schedule runs, for example every day with Newer than set to 24h, to collect only the new comments on a post.
  • Use webhooks to get notified, or start another process, when a run finishes.
  • Send the data to Google Sheets, Make, Zapier, Slack and other apps with Apify integrations.
  • Let AI agents run the scraper through the Apify MCP server, from Claude, ChatGPT, Cursor and other MCP clients.

FAQ

The scraper reads only what Instagram shows publicly to visitors who are not logged in. Comments are still personal data of the people who wrote them: their usernames, user IDs, profile pictures and words. If you are in the EU or handle data of people there, the GDPR applies, and other countries have similar laws. Make sure you have a lawful reason to collect and use the data, keep only what you need, and ask a lawyer if you are unsure.

Do I need an Instagram account?

No. You don't need an Instagram account, a login or cookies, and there is no proxy to set up.

Can I scrape replies to comments?

No. Instagram shows replies only to logged-in users, so you get top-level comments only. Instagram counts replies in the comment total it shows on the post, which is why you usually get fewer rows than post_comments_count. On one reel showing 6,790 comments, the scraper returned 5,225 top-level comments.

Can I sort comments by "most relevant"?

No. "Most relevant" ordering is available only when logged in. Comments always come newest first. That is why Newer than is a cheap way to collect only recent comments: each post stops at the first comment older than your cutoff.

How many comments can I get from one post?

Every top-level comment Instagram shows. In our tests the scraper went back to the very first comment of a reel with 6,790 comments in about 7 minutes. Instagram leaves out comments it has hidden or restricted, so those don't appear.

Why did some inputs fail?

Failed inputs give no rows. They are listed with a reason in the FAILED record of the run's key-value store (Storage tab), not in the dataset:

  • invalid_input: not a post or reel URL or shortcode.
  • not_found: the post doesn't exist, was removed, or belongs to a private account.
  • comments_disabled: the author turned comments off.
  • no_comments: the post has no comments yet.
  • blocked: Instagram refused every attempt. Run it again later.

If no input returns a single comment, the run ends with the status Failed.

Can I scrape comments from private accounts?

No. Posts of private accounts are not public, so they are reported as not_found.

Can I get comments together with post data?

Yes. The Instagram Post Scraper and Instagram Reels Scraper can add a few of each post's newest comments to their own rows with their Comments per post setting. Use this Instagram comments scraper when you want many comments per post, or each comment as a row of its own.

Support

Found a bug or missing a field? Open an issue in the Issues tab of this Actor and we'll look into it. Need a custom scraper for another website, or a different output format? Get in touch through the Issues tab and tell us what you need.