Instagram Comments API
Read the comments on an Instagram post or Reel from its link: each one has text, author_username and like_count, for $0.79 per 1,000 calls.
- No charge for failed or empty calls
- No Instagram login needed
- Up to 100 comments per call
API health
- 24h health
- Mostly down
- Healthy / normal
- Available
- Limited
- Mostly down
Last 24 hours
Last 30 days
1Request
POST /api/v1/social { "platform": "instagram", "action": "comments", "params": { "url": "https://www.instagram.com/p/DbYmqpplO_N/" } }2JSON response
{ "results": [ { "author_username": "", "text": "https://app.emergent.sh/chat\nSo I developed an app that is called Earth's Cosmos 2 Cosmos watch and there is a small subscription to it is five dollars a month and you can cancel at any time I liked it for you to be my first subscriber it's based on research and information that …", "like_count": 0, "is_verified": false }, … ], "count": 15 }3Rows
author_username text like_count is_verified https://app.emergent.sh/chat So I developed an app that is called Earth's Cosmos 2 Cosmos watch and there is a small subscription to it is five dollars a month and you can cancel at any time I liked it for you to be my first subscriber it's based on research and information that … 0 false 🙏⚽ 0 false 4CSV
instagram-comments-sample.csv id,text,url,like_count,reply_count,author_username,author_name,is_verified,posted_at,post_url,platform
url goes in; each comment in the JSON response has text, like_count, reply_count and more, ready as table rows or a CSV.What data you get
The table is a real call for instagram.com/p/DbYmqpplO_N, captured September 26, 2026 at 08:56 (UTC), that returned 15 comments. Gray bars cover personal information that was removed (••• in the CSV). Your own calls return the fields listed in the field reference.
| id | text | url | like_count | reply_count | author_username | author_name | is_verified | posted_at | post_url | platform |
|---|---|---|---|---|---|---|---|---|---|---|
| https://app.emergent.sh/chat So I developed an app that is called Earth's Cosmos 2 Cosmos watch and there is a small subscription to it is five dollars a month and you can cancel at any time I liked it for you to be my first subscriber it's based on research and information that … | https://www.instagram.com/p/DbYmqpplO_N/c/17931449676404522 | 0 | null | null | false | 2026-09-20T21:43:10+00:00 | https://www.instagram.com/p/DbYmqpplO_N/ | |||
| 🙏⚽ | https://www.instagram.com/p/DbYmqpplO_N/c/17874993174565429 | 0 | null | null | false | 2026-09-16T01:41:58+00:00 | https://www.instagram.com/p/DbYmqpplO_N/ |
Use cases
Sample audience opinion
Read the
textof comments on one post to see what people say about the content, product or campaign.Find the top comments
Sort rows by
like_countto find the most-liked comment under a post.Spot verified commenters
Keep the rows where
is_verifiedis true to see which verified accounts commented.Follow reply threads
Use
reply_countto find comments with replies, then pass theiridtocomment_replies.
Instagram Graph API vs EveryInfra
Instagram's Graph API and EveryInfra comments, compared on which posts you can read, comments per call and access.
| Compared | Instagram Graph API | EveryInfra |
|---|---|---|
| Which posts | "Your app can use the API to get comments, reply to comments, delete comments, hide/unhide comments, and disable/enable comments on Instagram media owned by your app user’s Instagram professional account." | url takes the link to one post or Reel; profile links are not supported. |
| Comments per call | "Returns a maximum of 50 comments per query." | limit is 1 to 100 and defaults to 50; a value outside that range returns 422 with no charge. |
| Access you need | Access token: "An access token from a User who created the IG Media object, with the following permissions:" | One EveryInfra API key in the Authorization: Bearer header. No Instagram login or Instagram access token is needed. |
Quotes are from Meta's developer documentation, checked 2026-11-09. Official sources: Comments (updated 2026-10-20) · Instagram Platform overview (updated 2026-10-29)
Limits and gotchas
limitis an integer from 1 to 100 and defaults to 50; a value outside that range returns 422 with no charge.- There is no page parameter, so one call returns at most 100 comments.
- A call can return fewer comments than
limit, and the full reply tree is not promised. urlmust be the link to one post or Reel; profile links are not supported.like_countandreply_countarenullwhen not disclosed, which is not 0;is_verifiedisnullwhen it cannot be determined.
Pricing
Each call costs $0.000792, whatever the number of comments, and reads up to 100 comments. Failed calls and empty results are not charged.
| Calls | Cost |
|---|---|
| 10,000 | $7.92 |
| 100,000 | $79.17 |
| 1,000,000 | $791.67 |
Totals use the list price per call.
Code samples
#curl -X POST 'https://api.everyinfra.com/api/v1/social' \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H 'Content-Type: application/json' \
--data-raw '{
"platform": "instagram",
"action": "comments",
"params": {
"url": "https://www.instagram.com/p/DbYmqpplO_N/"
}
}'OpenAPI definition (JSON)Samples read the key from the EVERYINFRA_API_KEY environment variable; copied code never contains your key.
API reference
See the parameters, response fields, errors and billing for comments, and copy the page or open it as Markdown for an AI assistant.
AI prompt
#Please help me write a data collection script with the EveryInfra Instagram Comments endpoint (instagram/comments).
How the endpoint works:
- Request: POST https://api.everyinfra.com/api/v1/social with the header Authorization: Bearer <API key>. Read the key from the EVERYINFRA_API_KEY environment variable and never hard-code it.
- In the request body, set platform to instagram and action to comments, and put the parameters inside params.
- Required parameters:
- url: Specifies a single Instagram post or Reel URL for the comments action. Profile URLs are not supported. For the reels action, passing a URL does not replace the required username parameter.
- Optional parameters:
- limit: The most rows to return in this call, an integer from 1 to 100. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. (default: 50)
- Returns a list of records. Main fields of each record: id, text, url, like_count, reply_count, author_username, author_name, is_verified, posted_at, post_url.
- Example request body:
{
"platform": "instagram",
"action": "comments",
"params": {
"url": "https://www.instagram.com/p/DbYmqpplO_N/"
}
}
- Price: $0.79 per 1,000 requests; failed and empty results are not charged.
- For dozens or hundreds of targets, add "mode": "async" to the body: you get a job_id at once and poll GET https://api.everyinfra.com/api/v1/jobs/{job_id} for the result.
- On 422, fix the request using the suggested parameter names and allowed values in the error; on 429 or 503, wait for Retry-After and try again.
Before writing code, ask me which targets I need, how many, which fields, and what output format I want; then confirm the plan and the rough cost with me.Request parameters
#| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
Authorization | header | string | Yes | - | Bearer followed by your API key. Create it in the console; never put it in a URL or a code repository. |
platform | body | string | Yes | instagram | Platform identifier, fixed value. |
action | body | string | Yes | comments | Capability identifier, fixed value. |
url | body.params | string | Yes | - | Specifies a single Instagram post or Reel URL for the comments action. Profile URLs are not supported. For the reels action, passing a URL does not replace the required username parameter. |
limit | body.params | integer (1–100) | No | 50 | The most rows to return in this call, an integer from 1 to 100. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. |
Response example
#{ "id": "req_…", "platform": "instagram", "action": "comments", "results": [ { "id": "•••", "text": "https://app.emergent.sh/chat\nSo I developed an app that is called Earth's Cosmos 2 Cosmos watch and there is a small subscription to it is five dollars a month and you can cancel at any time I liked it for you to be my first subscriber it's based on research and information that …", "url": "https://www.instagram.com/p/DbYmqpplO_N/c/17931449676404522", "like_count": 0, "author_username": "•••", "is_verified": false, "posted_at": "2026-09-20T21:43:10+00:00", "post_url": "https://www.instagram.com/p/DbYmqpplO_N/", "platform": "instagram" }, { "id": "•••", "text": "🙏⚽", "url": "https://www.instagram.com/p/DbYmqpplO_N/c/17874993174565429", "like_count": 0, "author_username": "•••", "is_verified": false, "posted_at": "2026-09-16T01:41:58+00:00", "post_url": "https://www.instagram.com/p/DbYmqpplO_N/", "platform": "instagram" } ], "count": 15, "billing": { "charged": …, "charged_usd": …, "balance_after_usd": …, … }, "quota": { … }}
Response fields
#Business data is in results. The table lists the fields a record can contain; values the platform does not show are never made up.
| Field | Meaning |
|---|---|
id | The record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms. |
text | Body text with HTML removed, returned in full and never cut short (on a few platforms the list results themselves carry only an excerpt; the platform's field notes say so). |
url | Link to the record on the platform. |
like_count | Likes. null means the platform or this capability does not disclose it; it is not 0. |
reply_count | Replies, usually replies to a comment. null means not disclosed. |
author_username | Author's username (@handle), usually usable in URLs. |
author_name | Author's display name. |
is_verified | Whether the platform verified the account. null means it cannot be determined. |
posted_at | Publish time in ISO 8601, UTC (for example 2026-08-07T12:34:56+00:00). Non-standard strings from the platform are passed through as is, so parse defensively. null means the platform does not disclose it. |
post_url | Keeps the platform's own meaning |
platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |
Errors and billing
#- 401
- Missing or invalid key.
- 402
- Insufficient balance. Top up first.
- 422
- Invalid parameter name or value. Fix it using the suggestions in the error. No charge.
- 429
- Per-minute request limit reached. Wait for Retry-After, then try again.
- 503
- Could not complete. The held charge is returned to your balance. If the outcome is unknown, verify it before you retry.
- 200 empty
- No data. No charge.
FAQ
What does the Instagram comments API return?
It returns the comments on one post or Reel, looked up by url. Each row has id, text, like_count, reply_count, author_username and more.
How many comments can I read, and can I page?
Up to 100 per call. limit runs from 1 to 100 and defaults to 50, and a call can return fewer. There is no page parameter.
How much does the comments endpoint cost?
Billing is per call: $0.000792 each, or $0.79 per 1,000 calls, and one call covers up to 100 comments. Failed calls and empty results are not charged.
Do I need to log in to Instagram?
No. Pass the post's url and put your EveryInfra API key in the Authorization: Bearer header; you need no Instagram login or access token.
How do comments and comment_replies differ?
comments reads the comments under one post. comment_replies reads the replies under one comment; it needs url and comment_id (the id of a comments row) and pages with page_token.
Related Instagram endpoints
The same EveryInfra API key also calls Instagram's other endpoints.
- Post details
post$0.56 per 1,000 callsFetch one or more Instagram posts or Reels from the links inurls. - Details
profile$0.56 per 1,000 callsLook up an Instagram account by handle or profile URL. - Account insights
persona$0.56 per 1,000 callsGet an account overview for an Instagram handle, built from its public profile. - Posts by user
user_posts$0.56 per 1,000 callsList posts from an Instagram account byusername, each with caption, media type, likes, comments, views, location, hashtags and top comments. - Content discovery
discover$0.56 per 1,000 callsTrack posts under an Instagram hashtag passed inkeyword. - Reels
reels$1.19 per 1,000 callsPull an Instagram account's Reels byusername, with caption, play count, duration in seconds, likes, comments, hashtags, music and video link. - Hashtag
hashtag$0.56 per 1,000 callsCollect posts for an Instagram hashtag inhashtag, without the # sign. - Followers
followers$0.56 per 1,000 callsSee the follower and following counts of an Instagram account byusername. - Follower list
followers_list$0.56 per 1,000 callsList the accounts that follow an Instagram user, byusername, with handle, name, avatar, private and verified flags and relation type. - Following list
following_list$0.56 per 1,000 callsList the accounts an Instagram user follows, byusername, with handle, name, avatar, private and verified flags and relation type. - Account search
user_search$4.81 per 1,000 callsSearch Instagram accounts bykeyword, in the order Instagram search ranks them for that word. - Reels search
reels_search$7.19 per 1,000 callsSearch Instagram Reels bykeyword, such as coffee. - Similar accounts
similar_profiles$8.81 per 1,000 callsFind accounts Instagram suggests as similar to one account, byusernamesuch as nasa. - Tagged posts
tagged_posts$7.44 per 1,000 callsList public posts by other accounts that tag one Instagram account, given asusername, profile URL or numeric user ID. - Stories
stories$1.5 per 1,000 callsGet the stories an Instagram account has live right now, from its username. - Story highlights
highlights$1.6 per 1,000 callsList the story highlights on an Instagram profile. - Comment replies
comment_replies$0.88 per 1,000 callsRead the replies under one comment on an Instagram post or Reel, from the post link and the comment'sidreturned bycomments.