Instagram Reels Comment Scraper
Pricing
from $0.25 / 1,000 comments
Instagram Reels Comment Scraper
Collect available top-level comments from public Instagram Reel URLs. Set a per-Reel comment limit and choose popular-first or recent-first order. Save available text, times, likes, commenter details, and Reel context without an Instagram login.
Pricing
from $0.25 / 1,000 comments
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
💬 Public Instagram Reel comments from known URLs
For developers, researchers, marketers, and teams that need feedback from known public Instagram Reels, this Actor saves one dataset row for each available top-level comment. Each row links the comment to its Reel and includes text, creation time, likes, commenter details, status, media, and Reel context when Instagram provides them. No Instagram login is required.
Use the rows to review audience feedback, compare comments across Reels, or find comments first seen after an earlier run.
Use cases
- Collect top-level comments from one known Reel with Instagram Reel Comment Scraper.
- Collect comments from several public Reels in one run with Instagram Reels Comment Scraper.
- Set a per-Reel limit and save comment details with Scrape Instagram Reel Comments.
- Review comments from a list of Reel URLs with Instagram Reels Comments Scraper.
- Find comments first seen after an earlier run with Instagram Reel Comments Scraper.
📦 What each Instagram Reel comment row contains
Results are saved as flat dataset rows. One row is one available top-level comment. A row keeps the source Reel URL and the available comment, commenter, status, media, and Reel details. Replies are not collected as nested threads.
▶️ Run comments from public Reels
- Add one or more public Instagram Reel URLs under
reels. - Enter a positive
maxCommentsvalue for each Reel. - Set
commentOrdertopopularorrecent. - Turn
onlyNewCommentson when you want comments first seen since an earlier run with the same Reel URLs. - Start the run and open the dataset link in the output.
The Actor saves the first eligible occurrence of a source comment. If the same source comment appears again, later matches are ignored.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
reels | array of objects | Required list of public Instagram Reel URLs and a comment limit for each Reel. |
reels[].url | string | Public Instagram Reel URL to read. |
reels[].maxComments | integer | Required positive whole number of top-level comments to request for this Reel. This field cannot be left empty, and the schema does not set an upper bound. |
commentOrder | string | Choose popular for popular comments first or recent for recent comments first. |
onlyNewComments | boolean | When true, return only comments first seen since an earlier run with the same Reel URLs. When false, return comments found in this run. |
Default input example
This is the public input used by a successful current beta run with the prefilled Reel.
{"reels": [{"url": "https://www.instagram.com/reel/DRU4smMj0cu/","maxComments": 5}],"commentOrder": "popular","onlyNewComments": false}
🧾 Output
The datasetItems link opens the default dataset view. Every saved row has reelUrl. Other fields are included when Instagram provides them, so optional fields may be absent.
Run output link
| Field | Type | What it does |
|---|---|---|
datasetItems | link | Opens the default dataset view with saved Reel comment rows. |
Dataset rows
| Field | Type | What it does |
|---|---|---|
commentId | string | Stable ID of the comment when Instagram provides it. |
text | string | Text in the top-level comment. |
createdAt | date-time string | Time when the comment was created, in ISO 8601 format. |
reelUrl | URL string | URL of the Instagram Reel that contains the comment. |
likeCount | integer | Number of likes reported for the comment when available. |
reportedCommentCount | integer | Total comments reported for the Reel when available. |
commenter | object | Available profile details for the person who wrote the comment. |
commenter.username | string | Instagram username of the commenter. |
commenter.accountId | string | Stable Instagram account ID of the commenter when available. |
commenter.isVerified | boolean | Whether Instagram marks the commenter as verified when available. |
commenter.profileImageUrl | URL string | Profile image URL when available. |
status | object | Status details reported for the comment when available. |
status.isCovered | boolean | Whether Instagram marks the comment as covered when available. |
media | array of objects | Media attached to the comment when available. |
media[].type | string | Type of attached comment media when available. |
media[].url | URL string | URL of attached comment media when available. |
reel | object | Available context about the Reel that contains the comment. |
reel.caption | string | Caption text of the Reel when available. |
reel.owner | object | Available profile details for the Reel owner. |
reel.owner.username | string | Instagram username of the Reel owner when available. |
reel.owner.accountId | string | Stable Instagram account ID of the Reel owner when available. |
reel.owner.displayName | string | Display name of the Reel owner when available. |
reel.owner.isPrivate | boolean | Whether Instagram marks the Reel owner's account as private when available. |
Example row
This genuine row came from a successful current beta run with the prefilled input. It is shown as returned, so optional fields that were not returned, such as media, are not added.
{"commentId": "18150067549483569","text": "😂😂😂😂😂😂😂","createdAt": "2026-04-09T13:27:53.000Z","reelUrl": "https://www.instagram.com/reel/DRU4smMj0cu/","likeCount": 0,"reportedCommentCount": 479,"commenter": {"username": "risfankhiyarulmizan","accountId": "9504336818","isVerified": false,"profileImageUrl": "https://scontent-lga3-2.cdninstagram.com/v/t51.82787-19/765637505_18237171217312819_4486996020585504070_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=107&ccb=7-5&_nc_sid=f7ccc5&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLnd3dy4xMDgwLkMzIn0%3D&_nc_ohc=xQk-uXgSYfcQ7kNvwHtqW8e&_nc_oc=Adpwm2IlWc0Ne3yAj2xl3MBCRmoUcWwYw3Z4NJL96xoT410oCFbx4gEcObgs8EeFkL4&_nc_zt=24&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_gid=kFl8hndOdueNnBqHh8K3GA&_nc_ss=73689&oh=00_AQLoJcXhzgvOH_0MI5JsZRwNNG00wHvk3h9ZLMfEATPxvA&oe=6A991B30"},"status": {"isCovered": false},"reel": {"caption": ".\n.\n.\n.\n.\n.\n#cat #catsoftheworld #catsoftheday #catsgram #pet #petlovers #petlover #petsofinstagram #funny #funnyvideos #cute #cutecats #kitten #kittenlove #kittycat #reels","owner": {"username": "yuumi_cat9","accountId": "17841463300525511","displayName": "Yuumi_cat9","isPrivate": false}}}
💳 Pricing
This Actor uses pay-per-event pricing based on saved top-level comments. One charge event covers one available top-level comment saved from a public Reel. Apify shows the current price tiers before you run the Actor.
🔌 Integrations
Dataset access
Open the datasetItems link in the run output to view or export the saved rows in Apify.
Video guide
❓ FAQ
Does this collect replies?
No. The Actor collects available top-level comments. Nested reply bodies and reply threads are outside its scope.
Do I need an Instagram login?
No. The Actor reads public Instagram Reel comments without requiring an Instagram login.
Can I submit more than one Reel?
Yes. Add several public Reel URLs to reels, and set a separate positive maxComments value for each one.
How do popular and recent order differ?
popular requests popular comments first. recent requests recent comments first.
What does onlyNewComments do?
It requests only comments first seen since an earlier run for the same Reel URLs. Keep it false to return comments found in the current run.
How are duplicate comments handled?
The first eligible occurrence is saved. Later matches for the same source comment are ignored, and the saved row describes the first match.
What if a Reel is private, deleted, or unavailable?
Private, deleted, and otherwise inaccessible Reels are outside the supported public source boundary.
Can I use a profile, hashtag, or keyword instead of a Reel URL?
No. This Actor works from submitted public Reel URLs. Profile, hashtag, keyword, feed, and other content discovery are outside its scope.
What happens when Instagram does not provide an optional field?
That field may be absent from the row. The Actor does not invent missing public values.
Is maxComments required?
Yes. Enter a positive whole number for each Reel. The schema does not set an upper bound.
📝 Changelog
0.0: Initial release
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Instagram Downloader API: Download media links and metadata from the same public Instagram URLs.
- Instagram User Search: Find public Instagram accounts by keyword before choosing Reel URLs.
- Instagram Profile Stats Scraper: Check public profile stats and recent post or Reel previews for known accounts.
- Instagram Related Users Scraper: Explore public accounts related to a seed profile after comment review.
- Instagram Comment Scraper: Collect top-level comments from public Instagram Reels with another Store option.
Made with ❤️ by Maxime Dupré