Instagram Post
Instagram Post
Overview
Read one Instagram post with its counters by post: a post URL (a /p/, /reel/ or /tv/ link, with or without the account handle in front), its shortcode or its numeric media id. The answer carries the same fields as the post lists of instagram_account_posts and instagram_hashtag_posts (id, shortcode, canonical URL, type, publication time, author handle, like and comment counters) plus the full caption text, the accounts tagged in the post or its carousel slides (tagged_accounts), the hashtags of the caption and measured_at, the moment the counters were read.
Reels and videos also carry view_count (views or plays); it is null on images and carousels and when the account hides its counters. Reach and impressions are not public on Instagram, they are never part of the answer on any endpoint. The data service delivers no tags for reels and videos, so tagged_accounts is null there; on images and carousels it is the deduplicated list, possibly empty.
Repeated measurements
Every call is a new measurement; identical requests are not merged. max_age_hours (0 to 24, default 24) says how old a cached measurement may be before the post is read again; 0 always reads it live. measured_at tells you when the numbers were read, so measuring the same post after 1, 24 and 72 hours gives three dated measurements. The cache is shared across the platform.
When to use
- Measure the posts around an event or a campaign, no matter which account published them.
- Re-measure a post after 1, 24 and 72 hours and compare the dated counters.
- See which accounts a post tags, for example partners of a festival.
[!NOTE]
A post that does not exist or was deleted completes with found: false, a post that cannot be read (for example on a private account) with restricted: true, both not charged. Genuine errors of the data service (auth, rate limit, 5xx) still fail the run and are refunded.
Endpoint
Output
Pricing
This enrichment costs 2 credits for a freshly read post. A post served from the cache (younger than max_age_hours) is charged the lower cached tier. Posts that do not exist or cannot be read are free.
Examples
Playground
States
| State |
Description |
queued |
Request accepted; waiting to be picked up by a worker. |
processing |
Worker is actively running the enrichment. |
completed |
Enrichment finished and results are available in output. |
failed |
Enrichment failed; reason is in error. Credits are refunded for failures unless otherwise noted. |
Errors
| Error |
When it happens |
What to do |
invalid_input |
post is missing, is not an Instagram post link, shortcode or media id (profile, story and share links are not posts), or max_age_hours is outside 0 to 24. |
Pass a post URL like https://www.instagram.com/p/DPxQ1AbCDeF/, its shortcode or its numeric media id. |
rate_limited |
The data service throttled the request. |
Retry with backoff. |
provider_error |
The data service returned an unexpected error. |
Retry; if persistent, contact support. |
503 endpoint_unavailable |
The endpoint is currently not configured or temporarily disabled. Nothing is reserved or charged. |
Retry later; if persistent, contact support. |