Instagram hub

Instagram Reels search API

Search public Instagram Reels by keyword and page through them with a cursor — ids, captions, owners, metrics, audio and media URLs in structured JSON.

GET /v2/instagram/reels/search

1 credit Failed requests are free

About this endpoint

GET /v2/instagram/reels/search takes a required query string and an optional cursor, and returns matching public Reels in the shared Social Fetch envelope (meta.version is v2). Reels come in Instagram's own relevance order, so popular Reels rank first. Read data.media and data.page: when data.page.hasMore is true, pass data.page.nextCursor as cursor on the next call and keep the same query. A page can hold only a few Reels (the first page often does), or none while hasMore is still true, so keep paging until it is false. Narrow queries end early; broad ones run for many pages.

Each item is the same media object every v2 endpoint returns: a digit id, shortcode, url, kind (always reel here), caption, createdAt (ISO-8601), owner as a profile summary, metrics (playCount, likeCount, commentCount, shareCount, likesHidden), videoUrl, durationSec, dimensions, audio, coauthors and location. Every field is always present and null when Instagram doesn't say. Bill from meta.creditsCharged.

There is no page number and no datePosted; sending either is a 400. For recent posts under a tag use GET /v2/instagram/hashtags/{hashtag}/media with tab=recent. Account discovery is GET /v2/instagram/profiles/search. A single Reel by URL or shortcode is GET /v2/instagram/media/{media}.

Instagram Reels search API FAQ

How do I search Instagram Reels with the v2 API?

Call GET /v2/instagram/reels/search with your Social Fetch API key (x-api-key) and a required query parameter. Read data.media and data.page. When data.page.hasMore is true, send data.page.nextCursor as cursor with the same query.

How much does Instagram Reels 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.

Why is a page of Reels short or empty?

Instagram mixes accounts and photos into search pages, and only Reels are returned, so a page holds as many Reels as it had. The first page usually has a handful. An empty data.media with data.page.hasMore true is a normal page: request the next cursor. hasMore: false with no Reels means the query has no matches.

How deep can I page?

Broad queries page for many pages (a keyword like coffee ran past a dozen pages with no repeated Reels). Narrow queries end sooner, and the last page has hasMore: false and a null cursor. Cursors do not depend on a session, so a cursor from a recent page can be used again later. A cursor only works with the query it was issued for; another query is a 400 bad_request.

Do I need Instagram Graph API access to search Reels?

No. You authenticate to Social Fetch with an API key. The route reads public Reels search results. Meta's Instagram Graph API is for accounts you manage or that grant your app access, not arbitrary public Reels keyword search.