Skip to content
ScrapeField

Get recent posts for an Instagram hashtag

Fetch recent posts carrying one hashtag, each a full post. Use this for trend and campaign monitoring.

64 credits
GEThttps://api.scrapefield.com/v1/instagram/hashtag
Try itno key needed64 credits on a real call · 0 here
https://api.scrapefield.com/v1/instagram/hashtag?tag=ferrari

In your code

const params = new URLSearchParams({
  "tag": "sourdough"
});

const res = await fetch(`https://api.scrapefield.com/v1/instagram/hashtag?${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
tag
string · required
The hashtag, without the leading #.
limit
integer
At most this many results, 1–24. A page can hold fewer while next_cursor is set: read until it is null.
1–24, default 24
cursor
string
The meta.next_cursor from the previous page. Omit for the first page.
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 an array of 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": "3867996963138136453",
      "shortcode": "C98pDEPb_Ck",
      "permalink": "https://www.instagram.com/reel/C98pDEPb_Ck/",
      "media_type": "VIDEO",
      "media_product_type": "REELS",
      "caption": "Same corner, four years apart. #buildinpublic",
      "timestamp": "2026-06-07T09:31:30.000Z",
      "username": "petr.bakes",
      "media_url": "https://cdn.example/ig/C98pDEPb_Ck.mp4",
      "thumbnail_url": "https://cdn.example/ig/C98pDEPb_Ck-cover.jpg",
      "children": [],
      "video_duration": 35.4,
      "like_count": 114642,
      "comments_count": 5093,
      "view_count": 1714727,
      "hashtags": [
        "buildinpublic"
      ],
      "mentions": [],
      "location": {
        "id": "308714197",
        "name": "Austin, United States"
      },
      "is_paid_partnership": false
    },
    {
      "id": "3100806674498066500",
      "shortcode": "CS5SU26RLZq",
      "permalink": "https://www.instagram.com/p/CS5SU26RLZq/",
      "media_type": "IMAGE",
      "media_product_type": "FEED",
      "caption": "Three days of proofing and it finally behaved. #citywalk #buildinpublic",
      "timestamp": "2026-06-16T13:01:37.000Z",
      "username": "karel.bakes",
      "media_url": "https://cdn.example/ig/CS5SU26RLZq.jpg",
      "thumbnail_url": null,
      "children": [],
      "video_duration": null,
      "like_count": 189,
      "comments_count": 3,
      "view_count": null,
      "hashtags": [
        "citywalk",
        "buildinpublic"
      ],
      "mentions": [],
      "location": null,
      "is_paid_partnership": false
    }
  ],
  "meta": {
    "request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
    "credits_charged": 64,
    "credits_remaining": 74218,
    "cached": false,
    "fetched_at": "2026-09-20T09:12:03Z",
    "next_cursor": "eyJwIjoxLCJzIjoiYTNmOSJ9"
  }
}

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

64 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 1 hour 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 $49.92 per 1,000 calls; on the largest, $28.15. The full table.

What people build with it

Questions

How much does the Instagram hashtag API cost?

64 credits a call: $49.92 per 1,000 calls on the smallest pack and $28.15 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 1 hour, 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?

A list of instagram_post objects. 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.

How do I get more than one page?

Pass meta.next_cursor back as cursor, and stop when it is null. Each page is a call, priced the same. A cursor lasts as long as the answer it belongs to is cached.

Can an AI agent call it?

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