Instagram hub

Instagram Popular search API

Pull Instagram's curated Popular topic page into structured JSON — posts, topic title, and suggested terms without GraphQL scrapers or creator OAuth.

GET /v1/instagram/search/popular

1 credit per successful request.

About this endpoint

GET /v1/instagram/search/popular takes a required query string and returns Instagram's curated Popular topic page in the shared Social Fetch envelope. The first page can include title, totalMediaCount, description (plainText, sourceUris, linkedTerms), and suggestedTerms plus posts. Later pages keep the same query and pass cursor; topic metadata is null on those pages. Each post can include id, shortcode, url, type, caption, displayUrl, videoUrl, metrics.plays, and owner (platformUserId, handle, verified, avatarUrl) when Instagram exposes them. displayUrl, videoUrl, and owner avatarUrl are Instagram CDN links when present — they can expire. This route does not include post timestamps; for a full post card pass posts[].url to GET /v1/instagram/posts. When data.page.hasMore is true, pass data.page.nextCursor as cursor on the next call. Bill from meta.creditsCharged.

This route is a curated topic page, not hashtag search (GET /v1/instagram/search/hashtags) and not Reels keyword search (GET /v1/instagram/search/reels). Native typeahead for accounts, hashtags, and places is GET /v1/instagram/search.

Instagram Popular search API FAQ

How do I search Instagram Popular topics via API?

Call GET /v1/instagram/search/popular with your Social Fetch API key (x-api-key) and a required query parameter. Read data.query, data.posts, topic fields, and data.page in the JSON response. See the API docs for parameters and examples.

How much does Instagram Popular search 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 fields does each Popular search post include?

Posts can include id, shortcode, url, type (for example reel), caption, displayUrl, videoUrl, metrics (plays), and owner (platformUserId, handle, verified, avatarUrl) when Instagram exposes them. This route does not include post timestamps, likes, or comments. Use posts[].url (not posts[].id) with GET /v1/instagram/posts when you need a full post card.

Are displayUrl and videoUrl permanent?

No. displayUrl, videoUrl, and owner avatarUrl are Instagram CDN URLs when Instagram exposes them. They can expire or fail with signature errors outside the original fetch. Do not treat them as durable embeds. For a hosted copy of a known post, call GET /v1/instagram/posts with that post's url and downloadMedia=true.

Popular search vs hashtag search vs Reels keyword search?

Use this route for Instagram's curated Popular topic page. Use GET /v1/instagram/search/hashtags for posts under a tag. Use GET /v1/instagram/search/reels for Reels-only keyword search. Native typeahead is GET /v1/instagram/search. They are separate operations on the Instagram hub.

How does pagination work on Instagram Popular search?

Each response includes data.page.nextCursor and data.page.hasMore. When hasMore is true, pass nextCursor as the cursor query param on the next request. Repeat the same query on later pages. Topic metadata (title, totalMediaCount, description, suggestedTerms) is populated on the first page and null on later pages. The cursor is opaque.

What does an empty posts list mean?

HTTP 200 with data.posts as an empty array and data.page.hasMore false is a valid success when the topic has no curated posts on this page, not an error. Confirm billing with meta.creditsCharged.

Do I need Instagram Graph API access to search Popular topics?

No. You authenticate to Social Fetch with an API key. The route reads public Popular topic results for enrichment-style discovery. Meta's Instagram Graph API is for accounts you manage or that grant your app access — not arbitrary public topic browsing.