Instagram Hashtag Search API
Hashtag Explore: native then Apify listing actor. Max 50. Stale 200 on wall. Flat 2 credits.
GET request to /v1/instagram/hashtag-search that responds with clean JSON and costs 2 credits. Pass cache=true for a free 24h cache hit; default is always fresh. Start with 100 free credits — no credit card.What is the Instagram Hashtag Search API?
Pass a hashtag without the # and get posts from Instagram's hashtag Explore as clean JSON. Native/Decodo first; on miss the same hashtag actor reels-search uses. limit max 50. A wall miss with a last-good grid is 200 stale (0 credits, 6h) instead of 502. Hard 90s deadline so the actor can finish. login_wall is remembered 60s; persistent after 3 fresh misses. Permalink Apify stays blocked. Optional mediaType=reels. Flat 2 credits. Pass cache=true for the shared cache.
What you get
- Hashtag Explore posts (Reels-heavy top surface; not keyword search)
- views + plays + likes + comments (likes ≠ plays; views ≠ plays)
- viewsInstagram / viewsFacebook on Reels when available
- isPaidPartnership / isAd / isAffiliate, musicId, location, mediaType=reels
- 90s deadline so Apify can finish; last-good stale 200 on wall; persistentAfter=3
Try it
Fill in the parameters below and copy a ready-to-run request, or open the live Playground to run it against your account (no API key paste).
Parameters
curl "https://api.captapi.com/v1/instagram/hashtag-search?q=skincare" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."Edit the parameters and the code updates instantly. Switch languages and hit copy.
Example response
{
"success": true,
"data": {
"total": 2,
"results": [
{
"title": "Top result",
"url": "https://example.com/1",
"author": "@creator",
"views": 530120
},
{
"title": "Second result",
"url": "https://example.com/2",
"author": "@maker",
"views": 210430
}
]
}
}Billing metadata is returned in response headers: X-Captapi-Credits (credits charged), X-Captapi-Cache (hit or miss), and X-Captapi-Source. Failed requests (4xx/5xx) are never charged. See the full list of error codes in the error reference.
Response structure
A successful call returns success and a data object with the following fields:
Result
totalNumber of results returned.
Each result
Each item in results contains:
titleResult title.urlDirect URL to the content.authorCreator handle.viewsView count where available.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| q | string | Yes | Hashtag without the # (min 2 characters). |
| limit | integer | No | Max items to return (default 20, max 50). Flat 2 credits per call. |
| mediaType | string | No | all (default) or reels — return only Reels/clips when set to reels. |
| cache | boolean | No | Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. |
Authentication: send your key as Authorization: Bearer capt_live_.... A typical call costs 2 credits. Pass cache=true for a free 24h cache hit; default is always fresh.
instagram_hashtag_search via @captapi/mcp. Set it up →How it works
- 1. Sign up — get 100 free credits, no card required.
- 2. Create a key from your dashboard.
- 3. Send one request to
/v1/instagram/hashtag-searchand parse the JSON response.
Use cases
Trend Discovery
Find trending content by keyword or hashtag.
Content Sourcing
Build feeds and playlists programmatically.
Monitoring
Track topics, brands, and competitors.
Research
Sample large sets of content for analysis.
Frequently asked questions
What does the Instagram Hashtag Search API do?+
The Instagram Hashtag Search API lets you search and return matching results from a public Instagram query using one GET request to /v1/instagram/hashtag-search. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the Instagram Hashtag Search API cost?+
Each successful call costs 2 credits. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a Instagram API key or OAuth?+
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Why is this 502 when Reels Search returns rows for a tag?+
Same Instagram hashtag grid; this endpoint now falls through to the hashtag actor on native miss (max 50). A wall with a last-good grid is 200 stale at 0 credits. Permalink Apify stays blocked. Read error.code on a true miss.
Why was my retry as slow as the first 502?+
It should not be. A login_wall is remembered service-wide for 60s (5 minutes after three fresh misses) — cacheScope=service, not per-tag. travel after skincare is a replay even if you never asked for travel. Replays keep the original scrape ms and add replayedFromMs. When a last-good grid exists the replay is a labelled stale 200 (0 credits) instead of 502. The 90s deadline turns a hung fetch into a timeout instead of a dead Cloudflare socket.
When does persistent become true?+
After 3 fresh service-wide misses. Replays do not increment consecutiveFailures. persistentAfter=3 is on every 502 so you do not have to guess.
Is the Instagram Hashtag Search API suitable for production use?+
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
More Instagram APIs
Ready to use the Instagram Hashtag Search API?
Sign up, grab your key, and make your first call in 60 seconds.