Instagram Post details API
Read Instagram posts and Reels from their links: caption, media_type, like_count, view_count and author followers, for $0.56 per 1,000 calls. Each link counts as one call.
- Up to 11 rows per request
- No Instagram login needed
- No charge for failed or empty results
API health
- 24h health
- Normal
- Healthy / normal
- Available
- Limited
- Mostly down
Last 24 hours
Last 30 days
1Request
POST /api/v1/social { "platform": "instagram", "action": "post", "params": { "urls": [ "https://www.instagram.com/p/<POST_SHORTCODE>/" ] } }2JSON response
{ "results": [ { "post_id": string, "text": string, "media_type": string, "like_count": number }, … ] }3Rows
post_id text media_type like_count string string string number 4CSV
instagram-post-sample.csv post_id,url,text,media_type,like_count,comment_count,view_count,author_username,author_name,posted_at,location,id,image_url,video_url,author_id,width,height,is_comments_disabled,author_follower_count,hashtags,top_comments
urls (an array of links) and an optional limit goes in. One response returns text, like_count, view_count, author_follower_count and more for each post, and these become table rows and a CSV file.What data you get
The table below lists the fields each row returns, with their types and meanings. It shows no values.
| Field | Type | Meaning |
|---|---|---|
| post_id | string | Keeps the platform's own meaning |
| url | string | Link to the record on the platform. |
| text | string | 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). |
| media_type | string | Keeps the platform's own meaning |
| like_count | number | Likes. null means the platform or this capability does not disclose it; it is not 0. |
| comment_count | number | Comments. null means not disclosed, not 0. |
| view_count | — | Views or plays. null means not disclosed, not 0. |
| author_username | string | Author's username (@handle), usually usable in URLs. |
| author_name | string | Author's display name. |
| posted_at | string | 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. |
| location | string | Location description passed through as is; the format varies by platform. |
| id | string | The record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms. |
| image_url | string | Image link. Capabilities with several images may return an image_urls array. |
| video_url | string | Keeps the platform's own meaning |
| author_id | string | Author's unique ID on the platform. |
| width | number | Keeps the platform's own meaning |
| height | number | Keeps the platform's own meaning |
| is_comments_disabled | — | Keeps the platform's own meaning |
| author_follower_count | — | Author's follower count. null means not disclosed. |
| hashtags | array | Hashtags in the text, in order of appearance; absent when there are none. |
| top_comments | — | Keeps the platform's own meaning |
Use cases
Review sponsored posts
Put a creator's post links in
urlsand readlike_count,comment_countandview_countto see how the posts stand now.Check competitor posts
Read
text,media_typeandposted_aton competitors' posts to compare what they publish and when.Fill in discovered posts
Found a post in hashtag results? Pass its
urlto readauthor_follower_countandtop_comments.Count hashtags
Read each post's
hashtagsarray to compare which tags a batch of posts uses, in order of appearance.
Instagram Graph API vs EveryInfra
Here is how Instagram's official Graph API and EveryInfra post compare on which posts you can read, author details and access.
| Compared | Instagram Graph API | EveryInfra |
|---|---|---|
| Which posts | "This API returns only data for media owned by Instagram professional accounts. It can not be used to get data for media owned by personal Instagram accounts." | Each item in urls is the full link of a public post or Reel, like /p/<shortcode>/ or /reel/<shortcode>/. Private content is not fetched. |
| Author details | Field owner: "Instagram user ID who created the media. Only returned if the app user making the query also created the media; otherwise, username field is returned instead." | Each row has author_id, author_username, author_name and author_follower_count. |
| Access you need | "Note that a permission only allows access to data created by the app user who granted the permission." | 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: IG Media (updated 2026-10-29) · Instagram Platform overview (updated 2026-10-29)
Limits and gotchas
urlsis required and is an array of links. Each item is a full post link like /p/<shortcode>/ or /reel/<shortcode>/; a profile link does not work.limitis an integer from 1 to 11 and defaults to 11; larger values return 422 before any charge.- One request returns at most 11 rows. With more links, split them across requests. There is no page parameter.
- Billing is per target link: each link counts as one call, so count your links before you estimate cost.
hashtagsandtop_commentsare absent when there is nothing to show.view_countisnullwhen it is not disclosed; it is not 0.- Private content is not fetched, and the data grants no rights to the photos or videos.
Pricing
Billing is per target link: each link counts as one call at $0.000556, and one request returns up to 11 rows. Failed calls and empty results are not charged.
| Calls | Cost |
|---|---|
| 10,000 | $5.56 |
| 100,000 | $55.56 |
| 1,000,000 | $555.56 |
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": "post",
"params": {
"urls": [
"https://www.instagram.com/p/<POST_SHORTCODE>/"
]
}
}'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 post, 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 Post details endpoint (instagram/post).
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 post, and put the parameters inside params.
- Required parameters:
- urls: Accepts an array of full Instagram post or Reel URLs (e.g., /p/<shortcode>/ or /reel/<shortcode>/) for the post action, billed per target URL. Unlike post, the comments action processes only a single URL.
- Optional parameters:
- limit: The most rows to return in this call, an integer from 1 to 11. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. (default: 11)
- Returns a list of records. Main fields of each record: post_id, url, text, media_type, like_count, comment_count, view_count, author_username, author_name, posted_at, location, id; 21 fields in total, full list at https://api.everyinfra.com/api/v1/social/catalog?platform=instagram.
- Example request body:
{
"platform": "instagram",
"action": "post",
"params": {
"urls": [
"https://www.instagram.com/p/<POST_SHORTCODE>/"
]
}
}
- Price: $0.56 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 | post | Capability identifier, fixed value. |
urls | body.params | array | Yes | - | Accepts an array of full Instagram post or Reel URLs (e.g., /p/<shortcode>/ or /reel/<shortcode>/) for the post action, billed per target URL. Unlike post, the comments action processes only a single URL. |
limit | body.params | integer (1–11) | No | 11 | The most rows to return in this call, an integer from 1 to 11. 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": "post", "results": [ { "post_id": …, "url": …, "text": …, "media_type": …, "like_count": …, "comment_count": …, "view_count": …, "author_username": …, "author_name": …, "posted_at": …, "location": …, "id": …, "image_url": …, "video_url": …, "author_id": …, "width": …, "height": …, "is_comments_disabled": …, "author_follower_count": …, "hashtags": …, "top_comments": … } ], "count": …, "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 |
|---|---|
post_id | Keeps the platform's own meaning |
url | Link to the record on the platform. |
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). |
media_type | Keeps the platform's own meaning |
like_count | Likes. null means the platform or this capability does not disclose it; it is not 0. |
comment_count | Comments. null means not disclosed, not 0. |
view_count | Views or plays. null means not disclosed, not 0. |
author_username | Author's username (@handle), usually usable in URLs. |
author_name | Author's display name. |
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. |
location | Location description passed through as is; the format varies by platform. |
id | The record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms. |
image_url | Image link. Capabilities with several images may return an image_urls array. |
video_url | Keeps the platform's own meaning |
author_id | Author's unique ID on the platform. |
width | Keeps the platform's own meaning |
height | Keeps the platform's own meaning |
is_comments_disabled | Keeps the platform's own meaning |
author_follower_count | Author's follower count. null means not disclosed. |
hashtags | Hashtags in the text, in order of appearance; absent when there are none. |
top_comments | Keeps the platform's own meaning |
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.
Official references
#Used only to check objects and terms. They do not imply authorization or endorsement of EveryInfra by the platform.
- Instagram: Public Posts and Embedding Boundaries ↗
Instagram specifies that content from private accounts cannot be embedded, and public accounts can also turn off embedding. Being shareable or embeddable does not grant additional data access permissions; input and available scope for this endpoint remain governed by the instructions above.
Checked 2026-09-04
FAQ
What does the Instagram post details API return?
For each link it returns text, media_type, like_count, comment_count, view_count, posted_at and author_follower_count. hashtags and top_comments come back when the post has them.
How many posts does one request return?
At most 11 rows. limit is 1 to 11 and defaults to 11; larger values return 422 before any charge, and a call can return fewer rows. There is no page parameter, so split many links across requests.
How much does it cost?
It costs $0.000556 per call, or $0.56 per 1,000 calls. Billing is per target link, so three links count as three calls, not one request. Failed calls and empty results are not charged.
Do I need an Instagram login?
No. You send one EveryInfra API key in the Authorization: Bearer header. No Instagram login or Instagram access token is needed. Private content is not fetched.
When do I use post and when comments?
post reads the post's own data and takes several links per request. comments takes one link and returns the comments under it, so do not reuse the multi-link format there.
Related Instagram endpoints
You can call the other Instagram endpoints with the same key, such as an account's posts or the content under a hashtag.
- 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. - Comments
comments$0.79 per 1,000 callsRead comments on one Instagram post or Reel aturl. - 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.