Instagram Hashtag API
Get the top-ranked and newest posts for any public hashtag, search hashtags by keyword with their post counts, and estimate how hard a hashtag is to rank for. Built for brand monitoring, campaign tracking, and content research — one GET request per page of results.
50 free credits on signup · no card required
curl "https://api.instagramapi.dev/v1/hashtag/top?tag=sunset" \
-H "Authorization: Bearer $INSTAGRAMAPI_KEY"What you get
Structured JSON, not raw HTML
- ▹Instagram's ranked 'Top' posts for a hashtag, the same selection shown in the app
- ▹Most recent posts, newest first, with a cursor to keep paging back in time
- ▹Every post carries caption, like and comment counts, media URLs, timestamp, and author
- ▹Hashtag search by keyword, each result including its total media_count
- ▹Difficulty score (0–100), average engagement a top post needs, and posts-per-hour velocity
- ▹Hashtags with or without the # — we normalise whatever you send
Endpoints
Every endpoint behind this page
Top hashtag posts
1 creditTop-ranked posts for a hashtag.
GET /v1/hashtag/topRecent hashtag posts
1 creditMost recent posts for a hashtag.
GET /v1/hashtag/recentSearch hashtags
1 creditSearch hashtags by keyword.
GET /v1/search/hashtagsAnalyze hashtag
2 creditsCompetitiveness & velocity for a hashtag.
GET /v1/insights/hashtagExample response
What comes back
{
"data": {
"items": [
{
"id": "3912183471120209303",
"shortcode": "DZK3iOsRlWX",
"type": "photo",
"product_type": "feed",
"url": "https://www.instagram.com/p/DZK3iOsRlWX/",
"caption": "Golden hour 🌅 #sunset",
"taken_at": "2026-06-04T15:59:27Z",
"like_count": 2499414,
"comment_count": 55165,
"view_count": null,
"image_url": "https://instagram.com/.../media.jpg",
"video_url": null,
"video_duration": null,
"location": null,
"author": {
"id": "8472",
"username": "wanderlust",
"full_name": "Wanderlust",
"is_verified": true,
"is_private": false,
"profile_pic_url": "https://instagram.com/.../nike.jpg"
}
}
],
"next_cursor": "WyJlNmFmZmIz..."
}
}Response fields
Fields returned by GET /v1/hashtag/top
| Field | Description |
|---|---|
| items | The hashtag's top-ranked posts. |
| items[].id | Numeric post/media id. |
| items[].shortcode | The post's shortcode, the part after /p/ in its instagram.com URL. |
| items[].type | Media type: photo, video, or carousel. |
| items[].product_type | More specific format (e.g. feed, clips, igtv). |
| items[].url | Canonical instagram.com URL for the post. |
| items[].caption | The post's caption text. |
| items[].taken_at | When the post was published (ISO 8601, UTC). |
| items[].like_count | Number of likes. |
| items[].comment_count | Number of comments. |
| items[].view_count | View count for video/reel content; null for photos. |
| items[].image_url | URL of the post's image (cover frame for video). |
| items[].video_url | URL of the video file; null for photos. |
| items[].video_duration | Video length in seconds; null for photos. |
| items[].location | Place tagged on the post, if any; null otherwise. |
| items[].author | The account that published the post. |
| items[].author.id | Numeric account id (stable even if the username changes). |
| items[].author.username | The account's @handle. |
| items[].author.full_name | Display name shown on the profile (may be empty). |
| items[].author.is_verified | Whether the account has a verified badge. |
| items[].author.is_private | Whether the account is private. |
| items[].author.profile_pic_url | URL of the account's profile picture. |
| next_cursor | Pass back as `cursor` to fetch the next page; null when there are no more results. |
No login required
Nothing to authenticate but your API key
No OAuth flow
One static API key in an Authorization: Bearer header. No redirect, no refresh tokens, no expiring session.
No Meta app review
Never touch Meta's developer platform, Business Verification, or a connected Facebook Page. Sign up directly with Instagram API.
Public data only
Every endpoint returns only what's already visible on Instagram without logging in. Private accounts are never accessible.
Pricing
1 credit per request. Credits start at $8.00 per 1,000 and drop to $6.00 per 1,000 at volume — no subscription, no minimums. New accounts get 50 free credits.
See full pricingFAQ
Instagram Hashtag API, explained
How do I get posts for an Instagram hashtag?
Send GET /v1/hashtag/top?tag=<hashtag> for the ranked selection or GET /v1/hashtag/recent?tag=<hashtag> for the newest posts. Leave out the # symbol. Both return a page of posts plus a cursor for the next page.
Can I monitor a hashtag continuously?
Yes. Poll /v1/hashtag/recent on a schedule (a cron job every few minutes is typical), store the post ids you've seen, and stop paging when you reach a post you already have. Each call is one credit regardless of how many posts come back.
How do I find the right hashtags to use?
Use /v1/search/hashtags?q=<keyword> to discover hashtags and their post counts, then run /v1/insights/hashtag?tag=<hashtag> on the candidates to see the difficulty score and the engagement level a top post needs. Pick the ones you can realistically rank for.
Does this work without an Instagram login or the Graph API?
Yes. Hashtag data is public, so there's no OAuth, no Meta app review, and no business verification. Create an API key and start requesting.
What does hashtag data cost?
Top, recent, and search calls cost 1 credit each; the hashtag analysis costs 2. Credits start at $8.00 per 1,000, and new accounts get 50 free credits.
Related
More ways to pull Instagram data
Start pulling hashtag api data
Create a free key and make your first request in under a minute — 50 credits on us.