Post comments API
The comments on a post, a page at a time: text, time, author and like count. Pass next_cursor back as cursor for the next page.
GEThttps://storiesfly.com/api/v1/post/comments- Price 1 request
- Answers up to 5 minutes old
Parameters
All parameters go in the query string.
| Name | Type | Sent | Description |
|---|---|---|---|
url | string | one of | Link to the post or reel. Send exactly one of url, code or id. |
code | string | one of | Shortcode of the post: the part after /p/ or /reel/ in its link. Send exactly one of url, code or id. |
id | string | one of | Numeric media id of the post. Send exactly one of url, code or id. |
cursor | string | optional | The next_cursor of the page before. Leave it out for the first page. |
Example request
Put your own key in the header.
curl "https://storiesfly.com/api/v1/post/comments?id=3946257521984666748" \
-H "X-Api-Key: sf_live_your_key"const res = await fetch(
"https://storiesfly.com/api/v1/post/comments?id=3946257521984666748",
{ headers: { "X-Api-Key": process.env.STORIESFLY_KEY } }
);
const data = await res.json();import os
import requests
r = requests.get(
"https://storiesfly.com/api/v1/post/comments",
params={"id": "3946257521984666748"},
headers={"X-Api-Key": os.environ["STORIESFLY_KEY"]},
)
data = r.json()Example response
{
"post": {
"id": "3946257521984666748"
},
"comments": [
{
"id": "1000000046",
"text": "sample comment text",
"created_at": 1788351472,
"created_at_iso": "2026-09-02T12:17:52.000Z",
"user": {
"id": "1000000048",
"username": "sample_user_51",
"full_name": "Sample Name",
"profile_pic_url": "https://example.com/pic.jpg",
"verified": true,
"is_private": false
},
"likes": 2555,
"replies_count": null,
"parent_id": null
},
{
"id": "1000000051",
"text": "sample comment text",
"created_at": 1788357780,
"created_at_iso": "2026-09-02T14:03:00.000Z",
"user": {
"id": "1000000053",
"username": "sample_user_56",
"full_name": "Sample Name",
"profile_pic_url": "https://example.com/pic.jpg",
"verified": true,
"is_private": false
},
"likes": 837,
"replies_count": null,
"parent_id": null
}
],
"next_cursor": "c1.ryg6VkAgkE2BcPyGM0q6ADwLG1KAGWvXyxXcleap6rtdnm6USXXD4rRRujLUjticHxS2vixe2jbdlG4LggGvIE1ISp6sYLXI6XWcb66UIrM_RMPDKCUhQylnCgNoMsPrfzM",
"has_more": true
}A real answer, shortened: lists are cut to two items and long texts to 160 characters.
Price and freshness
A call takes 1 request. Free requests are spent first, then your balance. The pricing page has the rates.
Answers are kept for up to 5 minutes. Asking again inside that time returns the same answer and takes 1 request again.
Page size follows Instagram and varies by endpoint.
Errors
A failed call answers with an HTTP status and a body {error, code}. These are the codes this endpoint gives. Errors and what is charged covers all of them.
| Status | Code | When |
|---|---|---|
400 | bad_request | A parameter is missing or wrong, or not exactly one of url, code or id was sent. fields lists the names. Free. |
401 | unauthorized | The X-Api-Key header is missing or the key is wrong. Free. |
402 | credits_exhausted | The free requests and the balance are used up. Top up in the dashboard. Free. |
403 | telegram_required | The account behind the key is not linked to Telegram. The answer has a link_url to do it. Free. |
404 | not_found | The post does not exist. Charged like an answer. |
429 | rate_limited | More requests in a second than your level allows. Wait for the Retry-After header. Free. |
500 | internal_error | A fault on our side. Retry shortly. Refunded. |
503 | upstream_unavailable | Our side failed or timed out. Retry shortly. Refunded. |
Questions about this endpoint
How do I read all the comments on a post?
Send the next_cursor of the answer back as cursor for the next page, and stop when has_more is false. Each page takes 1 request. A cursor works only on the endpoint that returned it.
Where are the replies to a comment?
This list holds the comments of the post. The replies to one comment come from post/comment-replies, which takes the id of the comment as comment_id.
What does each comment hold?
Its id, text, time, likes and the author as a short profile. replies_count is the number of replies where Instagram gives it, and null where it does not.
Your first 100 requests are on us
Sign in with Telegram, create a key, call any endpoint. Top up only when you need more.
