100 free credits on signup · no card required

Instagram Reels Search API

One keyword in. Clean JSON out.

Give this endpoint a keyword and it returns the Reels Instagram is currently surfacing for that term, as an array of JSON objects with view and like counts attached. Billing is per result returned, at 3 credits each, so a 20-result search costs 60 credits. No login, no Graph API app review, no headless browser to babysit.

Credits 3 / result
Input ?query=
Cache 15m–7d
Paging limit
GET · BEARER
Request composing…
P @plannerpro

How I plan a week of posts in 30 minutes

▶ 0♥ 5,120
Fresh when it matters
age-aware cache
Works with your stack
cURL Python Node.js Zapier n8n Make MCP
One key · one credit balance · plain REST

The difference

Stop parsing markup. Start reading fields.

On the left, what a headless browser hands you. On the right, what the endpoint hands you.

Scraping it yourself raw HTML · every call
<article class="_aagv _ab8w x1n2onr6" role="presentation"><div class="x9f619 xjbqb8w x78zum5"><div class="_aagu"><img alt="Photo by @creator" class="x5yr21d xu96u03" src="https://scontent.cdninstagram.com/v/t51...blob"/></div><section class="x6s0dn4 x78zum5 xdt5ytf"><span class="x1lliihq _aacl _aaco">55,210 likes</span><div class="_a9zs"><span dir="auto">Three settings you should change today</span></div><span class="_aacl _aaco x1i10hfl">View all 981 comments</span></section><time class="_aaqe" datetime="2026-07-03T12:00:00.000Z">18h</time></div><script type="application/json" data-sjs>{"require":[["ScheduledServerJS","handle",null,[{"__bbox"...
×Class names rotate; your selectors break weekly ×Headless browsers, proxies, blocks to babysit ×Counts arrive as strings, not numbers
One GET request 13 typed fields
{
"data": [
{
"id": "v_77120",
"url": "https://example-result-url",
"caption": "How I plan a week of posts in 30 minutes",
"author": {
"handle": "plannerpro"
},
"metrics": {
"views": 88210,
"likes": 5120
},
"posted_at": "2026-07-08T16:20:00Z"
}
],
"meta": {
"count": 2,
"limit": 20,
"item": "result"
},
"request_id": "req_01JZX4M8Q2TE9W"
}
Stable field names, documented nulls No proxies, no browser, no login session Counters are integers you can sort on

The payload

What comes back

{ data, meta?, request_id }
01 One object per Reel

An array. Each element is one Reel: its shortcode, its permalink, the caption, the engagement counters, how long the clip runs, when it went up, a thumbnail URL and the account that posted it. The shape is identical to what the other Instagram post endpoints emit, so a search result and a post pulled from a profile feed can go into the same table without a translation layer.

02 Instagram's ranking, not ours

Ordering comes from Instagram's own popularity ranking for the keyword, not from a date sort and not from anything we compute. That has a practical consequence worth internalising: the same query run tomorrow can return a different set in a different order. This is a discovery tool, not a stable index. If you need to follow specific Reels over time, take the ids out of a search once and then poll those ids directly.

03 One plain keyword per call

One keyword goes in per call. There is no boolean syntax, no AND/OR, no field qualifiers, no date filter. Instagram's search box is what is underneath, and it takes plain terms.

Field explorer Pick a key to see its type and the caveats.
number|null Nullable Sortable metric
views

Public play count. Null on items where Instagram is not publishing a view figure.

{
"id": "v_77120",
"url": "https://example-result-url",
"type": "…",
"caption": "How I plan a week of posts in 30 minutes",
"views": 88210,
"likes": 5120,
"comments": 0,
"shares": "…",
"duration_sec": 0,
"posted_at": "2026-07-08T16:20:00Z",
"author": { … },
"thumbnail": "…",
"hashtags": ["…"]
}
Good fit

Reach for this when

  • Trend spotting on a topic — run the same keyword daily, store what comes back, and watch which Reels and which accounts keep reappearing.
  • Finding creators who already post about your category, when you have a subject but no handles yet. The author object on every result is your prospect list.
  • Sizing a content angle before you commit to it: search the phrase, look at the spread of view counts, and see whether the format is saturated or ignored.
  • Building a swipe file. Thumbnails, captions and durations for the top-performing Reels on a term, refreshed on a schedule.
  • Seeding a wider pipeline — take the ids from a search, then fan out to the transcript, comments or profile endpoints for the ones worth a closer look.
Different job?

There's an endpoint for that

  • You already know whose Reels you want. Pulling one account's posts is cheaper and deterministic through the Instagram Channel Posts API.
  • You want everything under a hashtag rather than a ranked keyword sample — this endpoint searches popular Reels, not hashtag feeds.
  • You need the numbers on one specific Reel you already have a URL for. Use the Instagram Stats API; a search is the wrong shape and costs more.
  • You want the video file itself. That is the Instagram Download API.

Pricing

Start free, pay for what comes back

Billing is per Reel returned, at 3 credits — about 1.5¢ each on the monthly plan — so a 20-result search runs 60 credits, roughly 30¢, and a search that finds nothing still costs 1 credit.

Estimate your bill
$10/ month
30 results/day × 3 credits × 365 days = 32,850 credits/yr, or $117/yr on the annual plan plus 21 top-up blocks Whichever plan is cheaper for that volume, divided by 12.
30
102,000
Credits / yr 32,850
Plan Annual $54/yr
Per result

Estimate only, on a full-year basis. 3 credits per returned result. Monthly: $5 per 1,000 credits with $4/1,000 top-ups. Annual: $54 per 12,000 credits with $3/1,000 top-ups. We show whichever plan is cheaper for your annual volume, divided by 12. Failed calls are never charged; cache hits cost the same as fresh calls.

Free trial
100 credits

On signup, no card. Your key is on screen immediately.

Get your free API key
Monthly $5/mo 1,000 credits. Top-ups $4 per extra 1,000.
Annual $54/yr 12,000 credits. Top-ups $3 per extra 1,000.

Entry price, side by side

Cheapest way to start

Verified July 2026 from each vendor's live pricing page
ScraperSocial
$5 / mo 1,000 credits · 100 free credits, no card
Supadata
$5 / mo 300 credits, annual commitment · 100 free/mo
SocialKit
$29 / mo 12,000 credits · 20 free credits
Dumpling AI
$40 / mo Billed annually · free tier size unpublished
ScrapeCreators
$47 pack 25,000 credits, no subscription · 100 free once

Credits are not equivalent units across vendors — each meters differently. Price your own workload on both before deciding on entry price alone. At high volume, several of these are cheaper per credit than we are.

Engineering notes

Docs you can build on

We document exactly how every endpoint behaves — nulls, caching, billing — so what you ship on day one is still running in month six. No surprises, no support tickets.

Failed calls are never charged Public data only, no login session Built for parallel traffic

Billing is 3 credits per item in the array, not 3 per call. A search that returns 20 Reels costs 60 credits, roughly 30 cents on the monthly plan. Set your limit deliberately rather than accepting a default and being surprised by the bill on a crawl of 500 keywords.

Instagram may return fewer items than you ask for on a narrow term. You are only charged for what actually comes back.

Popularity ranking shifts through the day. Two calls with the same keyword an hour apart will overlap heavily but not exactly, and something ranked third in the morning can be absent by evening. Do not build a test that asserts on a specific result position.

If your job needs a fixed set, snapshot the ids once and treat the search as the seed step rather than as the source of truth.

One plain keyword or phrase per call. Operators are not supported and will be treated as literal characters — a search for "yoga AND pilates" looks for that string, not for the intersection. Run separate calls and merge on id if you need boolean logic.

Non-English terms work, and language is inferred from the query rather than settable. Very generic single words tend to return broad, low-relevance results; two or three word phrases are usually better.

Instagram is inconsistent about which counters it publishes on search surfaces. Expect a meaningful share of results with a null views or likes value, and write your ranking code so a null sorts rather than throws. shares is null on every Instagram item without exception.

Searches sit in the fast cache class, so re-running an identical query inside the window returns in milliseconds and sets x-cache: hit. Cached responses are billed the same as fresh ones. Pass fresh=true when you specifically need to bypass the cache, such as the first call of a scheduled trend run.

Questions

Frequently asked

Send a GET to /v1/instagram/reels-search with a query parameter and your API key. Instagram's Graph API has no public keyword search for Reels at all — it only reaches media on accounts that have authorised your app — which is why keyword discovery generally cannot be built on it. This endpoint reads the same public search results you would see logged out, and returns them as JSON.

3 credits per result returned. Ask for 20 Reels and you spend 60 credits; ask for 5 and you spend 15. Credits are $0.005 each on monthly billing and $0.0045 on annual, so 20 results is about 30 cents. Failed calls are not charged, and a search that returns fewer items than requested only bills for the items you got.

You set the limit on the request. Instagram controls the actual ceiling for any given term and often returns fewer items than asked for on narrow or niche keywords. Because billing is per result, a high limit on a broad term is the expensive case to watch. Start at 10 to 20 while you are calibrating a query.

Because the ordering is Instagram's live popularity ranking, which moves throughout the day as engagement accumulates. The endpoint does not sort or filter — it returns what the platform surfaces at call time. For repeatable work, run the search once, keep the ids, and fetch those specific Reels afterwards instead of re-searching.

Not in the query. The endpoint takes a keyword and nothing else — no date range, no minimum views, no operators. Every result carries posted_at and views, so filter client-side after the call. Be aware that you are billed for results before you filter them, so a tight keyword beats a broad one plus aggressive post-filtering.

No. Only public content that appears in logged-out search is reachable. Private accounts, deleted Reels and region-restricted posts do not appear in results. We do not log in, do not bypass anything, and do not have access to anything you could not open in an incognito window yourself.

Reels search starts from a topic and returns Reels from accounts you have never heard of, ranked by Instagram. Channel posts starts from a handle you already know and returns that account's recent posts in order. Discovery versus monitoring. Most pipelines use search to find accounts, then switch to channel posts to track the ones that matter.

Next

Pairs well with

Full Instagram API reference →
/v1/instagram/channel-posts
Instagram Channel Posts API Latest posts from an Instagram account with per-post metrics. 2 cr / post
/v1/instagram/stats
Instagram Stats API Likes, comments and view counts for an Instagram post or reel. 1 cr / post
/v1/tiktok/search
TikTok Search API Keyword search over TikTok videos. 4 cr / result
/v1/instagram/comments
Instagram Comments API Paginated comments on an Instagram post; charged per comment returned. 3 cr / comment

More Instagram endpoints

/v1/instagram/transcript Full transcript of an Instagram reel with timestamped segments. 40 credits / reel /v1/instagram/summary Short AI summary of an Instagram reel, built on its transcript. 42 credits / reel /v1/instagram/stats Likes, comments and view counts for an Instagram post or reel. 1 credit / post /v1/instagram/comments Paginated comments on an Instagram post; charged per comment returned. 3 credits / comment /v1/instagram/channel-stats Follower counts, bio and profile metadata for an Instagram account. 3 credits / profile /v1/instagram/channel-posts Latest posts from an Instagram account with per-post metrics. 2 credits / post /v1/instagram/channel-reels Latest reels from an Instagram account with per-reel metrics. 3 credits / reel /v1/instagram/download Resolves a downloadable media URL for an Instagram reel (URL expires within 1h). 40 credits / video

Try the Instagram Reels Search endpoint free

100 trial credits on signup — no card, key on screen immediately.

1 Sign up free no card · 30 seconds
2 Copy your key sk_live_...
3 GET the endpoint /v1/instagram/reels-search
Get your free API key