Get recent posts for a hashtag
Fetch recent public posts carrying one hashtag, each a full post. Use this for trend and campaign monitoring.
https://api.scrapefield.com/v1/instagram/hashtaghttps://api.scrapefield.com/v1/instagram/hashtag?tag=sourdoughIn your code
curl -H "Authorization: Bearer $SCRAPEFIELD_KEY" \
"https://api.scrapefield.com/v1/instagram/hashtag?tag=sourdough"Parameters
| Parameter | What it does |
|---|---|
tag | The hashtag, without the leading #. |
limit | How many results to return, 1–24. 1–24, default 24 |
cursor | The `meta.next_cursor` from the previous page. Omit for the first page. |
fresh | 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 a real response, not an abbreviated one — 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.
{
"data": [
{
"id": "3367894880329132519",
"shortcode": "DTGTmgifS75",
"permalink": "https://www.instagram.com/reel/DTGTmgifS75/",
"media_type": "VIDEO",
"media_product_type": "REELS",
"caption": "Everything I learned about this in one minute. #sourdough #filmphoto",
"timestamp": "2026-07-18T04:16:38.000Z",
"username": "mara.bakes",
"media_url": "https://cdn.example/ig/DTGTmgifS75.mp4",
"thumbnail_url": "https://cdn.example/ig/DTGTmgifS75-cover.jpg",
"children": [],
"video_duration": 33.3,
"like_count": 165432,
"comments_count": 2096,
"view_count": 2347169,
"hashtags": [
"sourdough",
"filmphoto"
],
"mentions": [],
"location": null,
"is_paid_partnership": false
},
{
"id": "3527092250356490554",
"shortcode": "CMndadEI09w",
"permalink": "https://www.instagram.com/p/CMndadEI09w/",
"media_type": "CAROUSEL_ALBUM",
"media_product_type": "FEED",
"caption": "Three days of proofing and it finally behaved. #baking #citywalk",
"timestamp": "2026-09-17T13:35:00.000Z",
"username": "petr.bakes",
"media_url": "https://cdn.example/ig/CMndadEI09w.jpg",
"thumbnail_url": null,
"children": [
{
"media_type": "IMAGE",
"media_url": "https://cdn.example/ig/CMndadEI09w-0.jpg"
},
{
"media_type": "IMAGE",
"media_url": "https://cdn.example/ig/CMndadEI09w-1.jpg"
},
{
"media_type": "IMAGE",
"media_url": "https://cdn.example/ig/CMndadEI09w-2.jpg"
},
{
"media_type": "IMAGE",
"media_url": "https://cdn.example/ig/CMndadEI09w-3.jpg"
}
],
"video_duration": null,
"like_count": 21,
"comments_count": 1,
"view_count": null,
"hashtags": [
"baking",
"citywalk"
],
"mentions": [],
"location": null,
"is_paid_partnership": false
}
],
"meta": {
"request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
"credits_charged": 4,
"credits_remaining": 74218,
"cached": false,
"fetched_at": "2026-09-20T09:12:03Z",
"next_cursor": "eyJwIjoxLCJzIjoiYTNmOSJ9"
}
}Fields of instagram_post
A public Instagram post or Reel. Named after Instagram's Graph API.
| Field | What it is |
|---|---|
id | Instagram's numeric id for the post. |
shortcode | The code in the URL, e.g. C1a2B3c4D5e. |
permalink | The post. |
media_type | As the Graph API names them. IMAGE · VIDEO · CAROUSEL_ALBUM |
media_product_type | A grid post or a Reel. FEED · REELS |
caption | |
timestamp | When it was posted. |
username | Who posted it. |
media_url | The image, or the video file. A carousel's first item. |
thumbnail_url | The cover of a video. |
children | A carousel's items, in order. Empty for a single image or video. |
children[].media_type | IMAGE · VIDEO |
children[].media_url | |
video_duration | Seconds. |
like_count | null when the owner has hidden it. |
comments_count | |
view_count | Views, for videos and Reels. |
hashtags | The caption's hashtags, without the #. |
mentions | The usernames the caption mentions, without the @. |
location | The location tag. |
location.id | |
location.name | |
is_paid_partnership | Whether it carries the "Paid partnership" label. |
What it costs
4 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 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 $3.12 per 1,000 calls; on the largest, $1.60. The full table.