Instagram Reels Comments Scraper avatar

Instagram Reels Comments Scraper

Pricing

from $0.25 / 1,000 comments

Go to Apify Store
Instagram Reels Comments Scraper

Instagram Reels Comments Scraper

Collect available top-level comments from public Instagram Reel URLs, newest first. Set a limit for each Reel or collect all available comments. Save 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é

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

6

Monthly active users

1.7 hours

Issues response

18 hours ago

Last modified

Security

Limited permissions

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

📦 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

  1. Add one or more public Instagram Reel URLs under reels.
  2. Enter a maxComments value for each Reel, or leave it empty to collect all available comments.
  3. Turn onlyNewComments on when you want comments first seen since an earlier run with the same Reel URLs.
  4. Start the run and open the dataset link in the output.

Comments come newest first. 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

FieldTypeWhat it does
reelsarray of objectsRequired list of public Instagram Reel URLs and a comment limit for each Reel.
reels[].urlstringRequired public Instagram Reel URL to read. Links in the /reel/ or /p/ form work.
reels[].maxCommentsintegerMost top-level comments to save for this Reel. Leave it empty or enter 0 to collect all available comments. The schema does not set an upper bound.
onlyNewCommentsbooleanWhen true, return only comments first seen since an earlier run with the same Reel URLs. When false (the default), 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
}
],
"onlyNewComments": false
}

🧾 Output

Output fields

Every saved row has reelUrl. Other fields are included when Instagram provides them, so optional fields may be absent.

FieldTypeWhat it does
commentIdstringStable ID of the comment when Instagram provides it.
commentUrlURL stringDirect link to the comment when Instagram provides it.
textstringText in the top-level comment.
createdAtdate-time stringTime when the comment was created, in ISO 8601 format.
reelUrlURL stringURL of the Instagram Reel that contains the comment.
likeCountintegerNumber of likes reported for the comment when available.
reportedCommentCountintegerTotal comments reported for the Reel when available.
commenterobjectAvailable profile details for the person who wrote the comment.
commenter.usernamestringInstagram username of the commenter.
commenter.accountIdstringStable Instagram account ID of the commenter when available.
commenter.isVerifiedbooleanWhether Instagram marks the commenter as verified when available.
commenter.profileImageUrlURL stringProfile image URL when available.
statusobjectStatus details reported for the comment when available.
status.isCoveredbooleanWhether Instagram marks the comment as covered when available.
mediaarray of objectsMedia attached to the comment when available.
media[].typestringType of attached comment media when available.
media[].urlURL stringURL of attached comment media when available.
reelobjectAvailable context about the Reel that contains the comment.
reel.captionstringCaption text of the Reel when available.
reel.ownerobjectAvailable profile details for the Reel owner.
reel.owner.usernamestringInstagram username of the Reel owner when available.
reel.owner.accountIdstringStable Instagram account ID of the Reel owner when available.
reel.owner.displayNamestringDisplay name of the Reel owner 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": "18159920989420962",
"commentUrl": "https://www.instagram.com/reel/DRU4smMj0cu/c/18159920989420962/",
"text": "cuteeee❤️",
"createdAt": "2026-02-19T03:47:43.000Z",
"reelUrl": "https://www.instagram.com/reel/DRU4smMj0cu/",
"likeCount": 0,
"reportedCommentCount": 478,
"commenter": {
"username": "aeni.zyyxx",
"accountId": "60449928822",
"isVerified": false,
"profileImageUrl": "https://scontent-lga3-2.cdninstagram.com/v/t51.82787-19/761703574_17990853837008823_9217143508091488587_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=107&ccb=7-5&_nc_sid=f7ccc5&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLnd3dy4xMDgwLkMzIn0%3D&_nc_ohc=OHkJiY18xmEQ7kNvwFUbkn7&_nc_oc=AdrPhzb0bjmSjiQbryGgvNEtMTTu5XfnwcCLxrCdl4lF4jKRFuA-fhua66nErnupTjM&_nc_zt=24&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_gid=sF-IQDtE9gWJ6c8vTC-4Gg&_nc_ss=70689&oh=00_AQRIKvo-9Oc8itb_Ld9NaFrmsLguR6KeIcosgpohJdKW_A&oe=6AE8115C"
},
"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"
}
}
}

💳 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 Reel comments 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 maxComments value for each one.

In what order are comments saved?

Comments come newest first. There is no option to change the order.

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?

No. Leave it empty or enter 0 to collect all available comments for that Reel. Enter a positive whole number to stop at that many comments.

How can I tell if a run saved fewer comments than the Reel shows?

Compare the number of saved rows with reportedCommentCount. The two numbers do not always match, because the count can include comments that are not available as public top-level comments. If the gap looks large, run the Reel again.

📝 Changelog

v1.1 (07-11-2026)

  • You can now enter more Instagram link forms: /reels/ and /tv/ links. You can also enter only the Reel shortcode, such as DRU4smMj0cu.

v1.0 (28-10-2026)

  • Breaking change: the commentOrder input is removed. Instagram gives Reel comments newest first only, so "Popular first" (the old default) only sorted the newest comments by likes. Comments now always come newest first, in the order Instagram gives them. There is no replacement. You can remove commentOrder from your input.
  • Breaking change: the reel.owner.isPrivate output field is removed. The Actor reads only public Reels, so this field did not give useful data. There is no replacement.
  • The maxComments limit for each Reel is now optional. Leave it empty or enter 0 to collect all available comments.
  • Fixed runs that sometimes stopped early with only the newest comments of a Reel. The Actor now checks the end of the comment list again before it stops.
  • Reliability improvements.

v0.1 (14-09-2026)

  • Each saved comment can include a direct link to that comment when Instagram provides one.
  • An unavailable public Reel now shows a clear warning without exposing internal error details.

v0.0

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré