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.