Instagram Popular topics API
Look up a topic the way Instagram's Popular page shows it — title, description, post count and related searches — and page through the posts it curates, as shared v2 media objects.
GET /v2/instagram/topics/{topic}1 credit Failed requests are free
About this endpoint
GET /v2/instagram/topics/{topic} takes a topic as a word or phrase (music, harry%20potter) or the link of its Popular page (https://www.instagram.com/popular/harry-potter/), and an optional cursor. Read data.lookupStatus first: found, or not_found when Instagram has no Popular page for the topic (a rare or unknown word; try a broader one), which comes back with an empty data.media and a null data.topic.
On the first page data.topic holds title, a generated description with the sourceUrls it draws on, mediaCount and relatedTerms, each null when Instagram doesn't give it. data.media holds the curated posts, mostly Reels, in Instagram's ranking for the topic (not chronological), each as the shared v2 media object with playCount and the owner as a profile summary; the topic view has no createdAt or counts other than plays, so those are null. When data.page.hasMore is true, pass data.page.nextCursor as cursor on the next call with the same topic: a cursor issued for another topic is a 400. Later pages carry posts and a cursor only, so data.topic is null there. Each page is billed once, so read meta.creditsCharged.
This feed is intermittently unavailable on Instagram's side. When it is, the call answers 503 temporarily_unavailable with a Retry-After header and charges nothing, so retry the same request after a few seconds. For a hashtag use GET /v2/instagram/hashtags/{hashtag}; for keyword Reel search use GET /v2/instagram/reels/search.
Instagram Popular topics API FAQ
How do I get an Instagram Popular topic via API?
Call GET /v2/instagram/topics/{topic} with your Social Fetch API key (x-api-key) and the topic in the path, URL-encoded if it has spaces. Read data.lookupStatus, data.topic and data.media, and keep following data.page.nextCursor while data.page.hasMore is true.
How much does the Instagram topics endpoint cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth. Each paginated page is a separate billed request.
What can I pass as the topic?
A word or phrase such as music or harry potter (write the space as %20 in a URL), or the link of the topic's Instagram Popular page, such as https://www.instagram.com/popular/music/. A link to anything else on Instagram is a 400 that says what to send instead.
Why is `topic` null, or `lookupStatus` `not_found`?
topic is filled on the first page only; later pages carry posts and a cursor. not_found means Instagram has no Popular page for that topic, so media is empty and nothing more is available. It is billed as a lookup. Try a broader word.
Why did I get a 503?
Instagram's Popular pages are intermittently unavailable. A 503 temporarily_unavailable charges nothing and carries a Retry-After header, so retry the same request after a few seconds.
Do I need Instagram Graph API access for topics?
No. You authenticate to Social Fetch with an API key. The route reads Instagram's public Popular topic pages. Meta's Instagram Graph API is for accounts you manage or that grant your app access, and has no equivalent.
Other Instagram endpoints
- ProfileGET /v2/instagram/profiles/{profile}
- Profile mediaGET /v2/instagram/profiles/{profile}/media
- Profile highlightsGET /v2/instagram/profiles/{profile}/highlights
- Profile storiesGET /v2/instagram/profiles/{profile}/stories
- Profile followingGET /v2/instagram/profiles/{profile}/following
- HighlightGET /v2/instagram/highlights/{highlightId}
- Profile engagementGET /v2/instagram/profiles/{profile}/engagement
- Search reelsGET /v2/instagram/reels/search