StoriesFly logo
Post endpoint

Instagram post API

One post or reel in full: links to its pictures and video (one entry per slide of a carousel), caption, owner, time, and the numbers: views, likes, comments, shares, saves, reposts and length. Name it with url, code or id.

GEThttps://storiesfly.com/api/v1/post
  • Price 1 request
  • Answers up to 5 minutes old

Parameters

All parameters go in the query string.

NameTypeSentDescription
urlstringone ofLink to the post or reel. Send exactly one of url, code or id.
codestringone ofShortcode of the post: the part after /p/ or /reel/ in its link. Send exactly one of url, code or id.
idstringone ofNumeric media id of the post. Send exactly one of url, code or id.

Example request

Put your own key in the header.

curl "https://storiesfly.com/api/v1/post?code=DcyLOLIEdy7" \
  -H "X-Api-Key: sf_live_your_key"

Example response

200 OK · X-Units-Charged: 1

  "id" "3977290773452414139"
  "shortcode" "DcyLOLIEdy7"
  "url" "https://www.instagram.com/p/DcyLOLIEdy7/"
  "owner" 
    "id" "7719696"
    "username" "arianagrande"
  
  "taken_at" 1788350029
  "taken_at_iso" "2026-09-02T11:53:49.000Z"
  "caption" "eternal sunshine tour, 2026 。˚ ♡ ∞\nthank you and \ni love you always"
  "media_type" "carousel"
  "pinned" true
  "thumbnail_url" "https://scontent-lax3-2.cdninstagram.com/v/t51.82787-15/791738291_18778422601039697_8733025742258971552_n.jpg"
  "media" 
    
      "id" "3977286630464928056"
      "type" "image"
      "image_url" "https://scontent-lax3-2.cdninstagram.com/v/t51.82787-15/791738291_18778422601039697_8733025742258971552_n.jpg"
      "video_url" null
      "width" 2730
      "height" 1820
      "video_duration" null
    
    
      "id" "3977286646931788566"
      "type" "image"
      "image_url" "https://scontent-lax3-2.cdninstagram.com/v/t51.82787-15/791296384_18778422625039697_6800978965548942666_n.jpg"
      "video_url" null
      "width" 1666
      "height" 1111
      "video_duration" null
    
  
  "likes" 1185299
  "comments" 70
  "shares" null
  "reposts" 56891
  "views" null
  "saves" null
  "video_duration" null
  "counts_hidden" false

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.

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.

StatusCodeWhen
400bad_requestA parameter is missing or wrong, or not exactly one of url, code or id was sent. fields lists the names. Free.
401unauthorizedThe X-Api-Key header is missing or the key is wrong. Free.
402credits_exhaustedThe free requests and the balance are used up. Top up in the dashboard. Free.
403telegram_requiredThe account behind the key is not linked to Telegram. The answer has a link_url to do it. Free.
404not_foundThe post does not exist. Charged like an answer.
429rate_limitedMore requests in a second than your level allows. Wait for the Retry-After header. Free.
500internal_errorA fault on our side. Retry shortly. Refunded.
503upstream_unavailableOur side failed or timed out. Retry shortly. Refunded.
FAQ

Questions about this endpoint

How do I name the post?

Send exactly one of url, code or id. url is the link of a post, reel or IGTV video, code is the part of the link after /p/ or /reel/, and id is the numeric media id.

Why are views, shares and saves often null?

A count is returned only where Instagram shows it to the public. When it does not, the field is null and not 0. counts_hidden is true when the owner turned off like and view counts for the post.

Does it work for reels and carousels?

Yes. A photo, a video, a reel and a carousel answer in the same fields, and media_type says which one it is. media holds one entry for a photo, a video or a reel and one per slide for a carousel, each with image_url and, for a video, video_url. The links point to Instagram's servers and stop working after some time, so save the files you need. video_duration is set for videos only.

Your first 100 requests are on us

Sign in with Telegram, create a key, call any endpoint. Top up only when you need more.