Skip to content
ScrapeField

Get one Instagram post

Fetch one Instagram post or Reel by its URL or shortcode: caption, media, username, timestamp, like_count, comments_count and view_count.

3 credits
GEThttps://api.scrapefield.com/v1/instagram/post
Try itno key needed3 credits on a real call · 0 here
https://api.scrapefield.com/v1/instagram/post?shortcode=C8xYz1AbCdE

In your code

const params = new URLSearchParams({
  "shortcode": "C1a2B3c4D5e"
});

const res = await fetch(`https://api.scrapefield.com/v1/instagram/post?${params}`, {
  headers: { Authorization: `Bearer ${process.env.SCRAPEFIELD_KEY}` },
});

const { data, meta } = await res.json();
console.log(data, meta.credits_charged);

Parameters

Parameters
ParameterWhat it does
url
string · one of the post ids
The post URL.
shortcode
string · one of the post ids
The shortcode from the URL, e.g. C1a2B3c4D5e.
fresh
boolean
Skip the cache and fetch now. Charged normally. Not available on trial credits — buy any pack to unlock it.
default false

Response

Returns one instagram_post. This is the demo’s answer, the one the playground above returns, in full rather than abbreviated — including the fields that come back null, because a field is null when the platform does not show it and you should know which ones those are before you build on them. A call with your key returns the account you ask for.

{
  "data": {
    "id": "3504321690910732144",
    "shortcode": "C8xYz1AbCdE",
    "permalink": "https://www.instagram.com/p/C8xYz1AbCdE/",
    "media_type": "IMAGE",
    "media_product_type": "FEED",
    "caption": "Same corner, four years apart. #filmphoto #baking",
    "timestamp": "2026-09-14T07:10:08.000Z",
    "username": "blue.door.coffee",
    "media_url": "https://cdn.example/ig/C8xYz1AbCdE.jpg",
    "thumbnail_url": null,
    "children": [],
    "video_duration": null,
    "like_count": 930,
    "comments_count": 21,
    "view_count": null,
    "hashtags": [
      "filmphoto",
      "baking"
    ],
    "mentions": [],
    "location": null,
    "is_paid_partnership": false
  },
  "meta": {
    "request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
    "credits_charged": 3,
    "credits_remaining": 74218,
    "cached": false,
    "fetched_at": "2026-09-20T09:12:03Z",
    "next_cursor": null
  }
}

Fields of instagram_post

An Instagram post or Reel. Named after Instagram's Graph API.

Fields
FieldWhat it is
id
string
Instagram's numeric id for the post.
shortcode
string
The code in the URL, e.g. C1a2B3c4D5e.
permalink
URL
The post.
media_type
string, one of
As the Graph API names them.
IMAGE · VIDEO · CAROUSEL_ALBUM
media_product_type
string, one of
A grid post or a Reel.
FEED · REELS
caption
string · or null
The caption.
timestamp
time, ISO 8601 UTC · or null
When it was posted. null when the source does not say.
username
string
Who posted it.
media_url
URL
The image, or the video file. A carousel's first item. On Instagram's CDN. Instagram signs the link, and it stops working within a few days, so fetch the file soon. We do not rehost media.
thumbnail_url
URL · or null
The cover of a video. On Instagram's CDN. Instagram signs the link, and it stops working within a few days, so fetch the file soon. We do not rehost media.
children
array of objects
A carousel's items, in order. Empty for a single image or video.
children[].media_type
string, one of
An image or a video.
IMAGE · VIDEO
children[].media_url
URL
The image, or the video file. On Instagram's CDN. Instagram signs the link, and it stops working within a few days, so fetch the file soon. We do not rehost media.
video_duration
number · or null
Seconds.
like_count
integer · or null
null when the owner has hidden it.
comments_count
integer · or null
null when the source does not give it.
view_count
integer · or null
Views, for videos and Reels.
hashtags
array of strings
The caption's hashtags, without the #.
mentions
array of strings
The usernames the caption mentions, without the @.
location
object · or null
The location tag.
location.id
string
Instagram's id for the location.
location.name
string
The place's name, as the tag shows it.
is_paid_partnership
boolean · or null
Whether it carries the "Paid partnership" label. null where that is not known.

What it costs

3 credits per successful call, whether we fetch it or serve it from cache — you pay for the answer, not for how we produced it. Responses are cached for 3 hours and a cached one tells you when the data was actually fetched. A call we fail costs 0 and is refunded automatically.

On the smallest pack that is $2.34 per 1,000 calls; on the largest, $1.32. The full table.

What people build with it

Questions

How much does the Instagram post details API cost?

3 credits a call: $2.34 per 1,000 calls on the smallest pack and $1.32 on the largest. A call that fails costs nothing, and the refund is automatic. A cached answer costs the same as a fresh one. Credits are bought in packs and never expire; there is no plan.

Do I need a Instagram account, a login or cookies?

No. You need a key from us and nothing from Instagram. We never take a customer's login, cookies or session, at any price, and no account of yours is ever at risk.

Can I try it without signing up?

Yes. Add demo=true and leave the key out, or press Send request in the playground on this page. The demo answers with a real answer about Ferrari, captured once a week, in exactly the shape a live call returns, whatever you ask, and charges nothing.

How fresh is the data?

An answer is kept for up to 3 hours, and a cached one says when it was fetched, in meta.fetched_at. Add fresh=true to fetch it again now, at the same price; it needs any purchase, not the trial.

What does it return?

One instagram_post object. Its fields are named after Instagram's Graph API. A field is null when Instagram does not show it, never missing. Every field is described on this page.

Can an AI agent call it?

Yes: it is the MCP tool get_instagram_post on our MCP server, with the same parameters, answer and price. Without a key, the tool answers from the demo.