How do I get Instagram hashtag posts past the 30 hashtag limit?
Call the Openhandle hashtag posts endpoint with the hashtag name. Pick sort=recent or sort=top. Each request returns one page of public posts with a cursor for the next page. There is no weekly cap on how many different hashtags you query.
The 30 hashtag limit belongs to the Instagram Graph API. It counts unique hashtags per business account per rolling 7 days. A public data API reads what the hashtag page shows and does not carry that rule.
Checked September 2026 · request and response run against the API · no affiliate links
curl "https://api.openhandle.dev/v1/instagram/hashtags/syntheticvolume/posts?sort=recent" \
-H "Authorization: Bearer $OPENHANDLE_API_KEY"import { OpenHandle } from '@openhandle/sdk';
const openhandle = new OpenHandle({ apiKey: process.env.OPENHANDLE_API_KEY! });
let page = await openhandle.instagram.hashtag('syntheticvolume').posts.list({ sort: 'recent' });
while (page) {
for (const post of page.data) console.log(post.author.handle, post.metrics.likes);
page = await page.next();
}{
"platform": "instagram",
"resource": "post",
"capturedAt": "2026-09-18T10:11:05Z",
"source": "live",
"data": [
{
"id": "910100000001",
"createdAt": "2026-08-09T15:30:00Z",
"author": { "id": "910000000001", "handle": "northstar_forge_test" },
"hashtags": ["syntheticvolume"],
"metrics": { "likes": 840, "comments": 5, "views": 12000 }
}
],
"meta": { "cursors": { "next": "b3BhcXVlLWN1cnNvcg" } }
}Trimmed to one post and the fields this question needs. The example is a Test hashtag with paginated posts, so you can test paging on a free Test key.
Where the 30 hashtag limit comes from
The Graph API hashtag search needs a business or creator account, an app review, and a hashtag ID lookup first. Each account may look up 30 unique hashtags in a rolling 7-day window. Tools that promise unlimited hashtag feeds either pool many business accounts or read the public hashtag page. Openhandle does the second, on request, without pooling accounts.
Recent or top
- —recent. Newest public posts first. Use it for campaign tracking and UGC collection on a schedule.
- —top. The posts Instagram ranks highest for the hashtag. Use it for a snapshot of what people see.
- —Hashtag metadata. Call
GET /v1/instagram/hashtags/{name}for the hashtag itself: name, avatar, and whether Instagram marks it trending.
Collect UGC on a schedule
Run sort=recent on a schedule, store each post id, and skip IDs you already have. Media URLs in the response are served from our CDN and keep working after Instagram’s links expire. Store capturedAt with each post so a rights request can point at the exact read.
When this does not work
Empty is an answer. A cursor from another request is a mistake.
| Situation | Status | Code |
|---|---|---|
| The hashtag has no public posts or Instagram hides it | 200 | empty data |
| The cursor came from another hashtag, sort, or freshness | 400 | CURSOR_MISMATCH |
| The hashtag name is malformed | 400 | INVALID_IDENTIFIER |
{
"error": {
"code": "CURSOR_MISMATCH",
"message": "The cursor does not belong to this request.",
"requestId": "req_01j8…",
"retryable": false
}
}An empty page bills as an answered request. Every new workspace starts with 100 free live requests, no card needed.
Read next
More Instagram questions
Send your agent ahead.
Paste the prompt into your agent and it sets everything up. Or come yourself, it takes five minutes.