Instagram Comments Scraper
Pricing
from $0.50 / 1,000 comments
Pricing
from $0.50 / 1,000 comments
Rating
0.0
(0)
Developer
Supreme Coder
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Extract every comment from any public Instagram post or reel — comment text, author, like count, timestamp and nested replies — with no login, no password and no cookies required. This Instagram Comments Scraper turns any post URL, reel URL, profile or username into clean, structured JSON, CSV or Excel data in seconds. Perfect for marketers, social listening teams, researchers and developers who need reliable Instagram comment data without building and maintaining their own scraper.
Paste a post / reel URL (
https://www.instagram.com/p/DZz4bjIjhdm/), a profile URL or a username (nasa) and get back every comment — plus the threaded replies under each one, down to the depth you choose.
✨ What this Instagram scraper does
- 💬 Scrape all comments from any public Instagram post or reel
- 🧵 Scrape nested replies (threaded comments) with a configurable depth limit
- ❤️ Get each comment's like count, reply count and edited / pinned-by-owner flags
- 🧑 Capture the comment author — username, full name, ID, verified & private flags, profile picture
- #️⃣ Auto-extract @mentions and #hashtags from every comment
- 🕒 Get exact timestamps (ISO 8601) for sorting and time-series analysis
- 👤 Scrape comments by profile or username — automatically fans out to an account's most recent posts
- 🔢 Limit results per post, cap replies per comment, and bound how deep threads go
- 🔐 No Instagram login or cookies needed — nothing to configure, no account-ban risk for you
- 📦 Export to JSON, CSV, Excel, HTML or XML, or pull via API
💡 Popular use cases
| Who | What they use it for |
|---|---|
| 📣 Marketers & agencies | Measure engagement, read audience sentiment and spot top fans on campaign posts |
| 🛍️ E-commerce & brands | Collect product questions, feedback and complaints straight from comment threads |
| 🤝 Influencer marketing | Gauge real engagement and audience quality before partnering with a creator |
| 🧠 Social listening & sentiment | Build datasets of comments for NLP, sentiment and trend analysis |
| 🎁 Giveaways & contests | Pull every entrant comment (and replies) to pick winners fairly |
| 📈 Researchers & analysts | Study conversations, virality and community behavior at scale |
| 🛟 Customer support teams | Catch questions and issues raised in comments so none slip through |
🚀 How to use it (step by step)
No coding needed. If you can fill in a form, you can use this scraper.
- Click "Try for free" / Start.
- Add sources. Paste post or reel URLs into the Post / reel / profile URLs field — or paste a profile URL / username to scrape comments from that account's latest posts. Add as many as you like.
- Choose how much to collect (optional). Set Max comments per post, toggle Scrape replies, and pick a Replies depth limit.
- Click "Start". Watch comments stream into the results table.
- Download your data as JSON, CSV, Excel, HTML or XML, or pull it via the API.
That's it — your Instagram comment data is ready to use. 🎉
⚙️ Input fields
| Field | Type | Emoji | Description |
|---|---|---|---|
urls | array of text | 🔗 | Instagram post/reel URLs (https://www.instagram.com/p/DZz4bjIjhdm/), profile URLs or usernames (nasa). A profile/username scrapes comments from that account's most recent posts |
limitPerSource | number | 🔢 | Max top-level comments to scrape per post. Leave empty for all available comments (default 50) |
scrapeReplies | true / false | 🧵 | Also scrape the nested replies under each comment (default true) |
repliesDepthLimit | number | 🪜 | How many levels of replies to follow. 1 = direct replies (Instagram's native depth); higher follows replies-of-replies where they exist (default 1) |
maxRepliesPerComment | number | ↩️ | Max replies to scrape per comment. Leave empty for all replies |
maxPostsPerProfile | number | 📸 | When a profile/username is given, how many recent posts to scrape comments from (default 12) |
rawData | true / false | 🧬 | Advanced: return Instagram's raw comment objects instead of the clean output below |
📝 Example input
{"urls": ["https://www.instagram.com/p/DZz4bjIjhdm/","https://www.instagram.com/reel/DZYvGYIv1nr/","nasa"],"limitPerSource": 100,"scrapeReplies": true,"repliesDepthLimit": 1,"maxRepliesPerComment": 50,"maxPostsPerProfile": 12}
📤 Output
Each top-level comment is returned as one record, with its replies nested inside a replies array (each reply has the same shape). Export to JSON, CSV, Excel, HTML or XML.
📦 Sample output
{"id": "18157433164466233","postUrl": "https://www.instagram.com/p/DZz4bjIjhdm/","mediaId": "3923727884124821350","commentUrl": "https://www.instagram.com/p/DZz4bjIjhdm/c/18157433164466233/","text": "Besties in the sky 🚀♥️","ownerUsername": "nutella","ownerId": "628802811","owner": {"id": "628802811","username": "nutella","fullName": "Nutella","isVerified": true,"isPrivate": false,"profilePicUrl": "https://scontent.cdninstagram.com/v/....jpg"},"likesCount": 21,"repliesCount": 2,"mentions": [],"hashtags": [],"timestamp": "2026-06-22T13:46:40.000Z","createdAtTimestamp": 1782136000000,"isEdited": false,"isRanked": true,"isLikedByOwner": true,"didReportAsSpam": false,"depth": 0,"parentCommentId": null,"replies": [{"id": "17880451044460103","postUrl": "https://www.instagram.com/p/DZz4bjIjhdm/","text": "@nutella 👏❤️","ownerUsername": "debbi_officiel","likesCount": 0,"repliesCount": 0,"mentions": ["nutella"],"timestamp": "2026-06-23T05:36:18.000Z","depth": 1,"parentCommentId": "18157433164466233","replies": []}],"inputUrl": "https://www.instagram.com/p/DZz4bjIjhdm/"}
A post with no comments returns
{ "postUrl": "...", "commentsCount": 0, "info": "No comments found on this post" }, and an unreachable source returns anerrorrecord — so a single bad entry never stops the rest of your run.
🗂️ Output fields
| Field | Emoji | Description |
|---|---|---|
id | 🆔 | Unique comment ID |
postUrl | 🔗 | Link to the post/reel the comment belongs to |
mediaId | 🧩 | Numeric Instagram media ID of the post |
commentUrl | 🔗 | Direct link to the comment |
text | 💬 | The comment text |
ownerUsername | 👤 | Handle of the comment author |
ownerId | 🆔 | Numeric user ID of the author |
owner | 🧑 | Author object — id, username, fullName, isVerified, isPrivate, profilePicUrl |
likesCount | ❤️ | Number of likes on the comment |
repliesCount | 🧵 | Number of replies under the comment |
mentions | #️⃣ | @usernames mentioned in the comment |
hashtags | 🏷️ | #hashtags used in the comment |
timestamp | 🕒 | When the comment was posted (ISO 8601) |
createdAtTimestamp | ⏱️ | Same time as a Unix epoch (milliseconds) |
isEdited | ✏️ | true if the comment was edited |
isRanked | 📊 | true if surfaced as a top/ranked comment |
isLikedByOwner | 💖 | true if liked by the post's owner |
didReportAsSpam | 🚩 | Spam-report flag |
depth | 🪜 | Thread depth — 0 for top-level, 1 for a reply, etc. |
parentCommentId | 🧷 | ID of the parent comment (null for top-level) |
replies | 🧵 | Array of nested reply records (same shape as a comment) |
inputUrl | 🌐 | The URL/username this record came from |
🔌 Using the API
Run the scraper programmatically with the Apify API. Replace YOUR_TOKEN with your Apify API token and USERNAME~instagram-comments with the actor's ID.
Run and get results in one call (cURL)
curl -X POST "https://api.apify.com/v2/acts/USERNAME~instagram-comments/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"urls": ["https://www.instagram.com/p/DZz4bjIjhdm/"],"limitPerSource": 100,"scrapeReplies": true,"repliesDepthLimit": 1}'
Start a run (JavaScript / Apify client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('USERNAME/instagram-comments').call({urls: ['https://www.instagram.com/p/DZz4bjIjhdm/', 'nasa'],limitPerSource: 100,scrapeReplies: true,repliesDepthLimit: 1,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Start a run (Python / Apify client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("USERNAME/instagram-comments").call(run_input={"urls": ["https://www.instagram.com/p/DZz4bjIjhdm/", "nasa"],"limitPerSource": 100,"scrapeReplies": True,"repliesDepthLimit": 1,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
📚 More: Apify API reference · API client for JavaScript · API client for Python
❓ FAQ
Do I need an Instagram account, password or cookies? No. You only provide the public post, reel or profile URLs you want to scrape — authentication is handled for you.
What sources can I paste in?
Post URLs (/p/<code>/), reel URLs (/reel/<code>/), profile URLs (https://www.instagram.com/nasa/) and bare usernames (nasa). A profile or username automatically scrapes comments from that account's most recent posts (up to Max posts per profile).
How do nested replies and the depth limit work?
Instagram threads comments one level deep: a top-level comment (depth: 0) can have replies (depth: 1). Set repliesDepthLimit to 1 for direct replies (the default). Higher values follow replies-of-replies wherever Instagram exposes them. Turn replies off entirely with scrapeReplies: false for the fastest, comments-only runs.
Can I limit how much I scrape?
Yes. Use limitPerSource to cap top-level comments per post, maxRepliesPerComment to cap replies per comment, and maxPostsPerProfile to bound profile fan-out.
Can I scrape comments from private posts? No. Only comments on public posts and reels are accessible. Private accounts hide their posts (and comments) from non-followers.
Why do some posts return fewer comments than the total count?
Instagram serves comments in ranked pages and occasionally hides or filters some. The scraper paginates and de-duplicates automatically; set limitPerSource empty to pull as many as Instagram exposes.
Is it legal to scrape Instagram? This scraper collects publicly available data only. You are responsible for how you use the data and for complying with applicable laws (e.g. GDPR), Instagram's Terms, and not collecting personal data without a lawful basis. When in doubt, consult a lawyer.
What export formats are supported? JSON, CSV, Excel, HTML, XML, plus direct API/webhook access.
🔎 Keywords
Instagram comments scraper, scrape Instagram comments, Instagram comment extractor, Instagram reply scraper, Instagram post comments scraper, Instagram reel comments scraper, export Instagram comments to CSV/JSON/Excel, Instagram engagement scraper, Instagram sentiment analysis data, scrape Instagram without login, Instagram giveaway comment picker, Instagram social listening, Instagram comment API alternative, scrape Instagram replies, nested Instagram comments.