Other blogsGuides

Instagram hashtag search API: the limits, and a webhook route instead

Meta's Hashtag Search needs App Review, caps you at 30 tags a week and only returns 24 hours of recent posts. For alerts, AyeWatch's REST API and webhooks do the polling.

The Instagram hashtag search API is Meta's official way to read public posts on a hashtag, but it comes with App Review, a cap of 30 unique hashtags per account in any seven days, and a recent-media window of 24 hours. If the real job is "ping my code when a tag gets a new post", AyeWatch's REST API and signed webhooks get there with less setup, and that is our pick for alerting.

What Meta's Hashtag Search API gives you

Meta documents Hashtag Search under the Instagram Platform, for apps on either the Instagram API with Facebook Login or with Unified Login (page updated 17 August 2026). Every call runs on behalf of an Instagram Business or Creator account, and the app must pass App Review for the Instagram Public Content Access feature and the instagram_basic permission.

The flow has two steps. Call GET /ig_hashtag_search with the account's user ID and the tag text to get the hashtag's node ID. Then read /{ig-hashtag-id}/recent_media for the newest posts or /{ig-hashtag-id}/top_media for the most popular ones. A separate edge, /{ig-user-id}/recently_searched_hashtags, lists the tags that account has queried this week.

The limits that shape your design

Limit What it means for your code
30 unique hashtags per account in a rolling 7 days Each new tag uses a slot for a week; repeat queries on the same tag are free but do not reset its timer
Reading recent_media or top_media counts as a query Caching the hashtag ID does not save a slot
recent_media returns only posts from the last 24 hours A job that runs less than daily will miss posts
Up to 50 results per page, after cursor only Paginate forward; there is no before cursor
Only public photos and videos Private accounts never appear
No Story hashtags, no emoji queries Plan for tags written in plain characters
Sensitive tags return a generic error Handle it as a normal failure, not a bug

Meta also notes that media_url is left out for videos with licensed audio and for reels whose owners turned off downloads, so a viewer built on this data needs a fallback.

The part you still have to build

Meta's pages describe endpoints you call, not a push feed. So the scheduler, the store of seen media IDs, the deduplication and the notification layer are yours, along with the App Review paperwork. That is reasonable for a product that stores and displays Instagram media. It is a lot of plumbing for "tell the team when someone uses our tag".

The alert route: AyeWatch's API

AyeWatch runs the polling for you. On a paid plan, you POST /api/v1/topics with a source whose mode is instagram_hashtag and whose input is the tag; instagram_search takes a keyword query for matching reels instead. An optional filter input, up to 200 characters of plain English, has AI judge each new post so only matches reach you.

New posts arrive as topic.update events at the webhook URL you register with PUT /api/v1/webhook. Each delivery carries a headline, the content with links to the posts, and an X-AyeWatch-Signature header holding an HMAC-SHA256 signature; verify it against the raw request bytes before trusting the payload. You need no Instagram app, no Business account and no review. Paid plans start at $9 a month, and the free preview lets you test a monitor in the app first.

If you work inside an AI coding agent, paid plans also include an MCP server, so the agent can create, change or pause these monitors for you.

Which one to use

Pick Meta's API when you need the media objects themselves, the top posts on a tag, or a product that displays Instagram content under Meta's terms. Pick AyeWatch's Instagram hashtag monitor when you need an alert or a webhook for new posts on a tag. One caveat for both: a hashtag route covers tags, not one person's profile, and AyeWatch does not read Stories or comments.

Browse guides by topic