Instagram Reels search API
Search Instagram Reels by keyword against Instagram's own reels search and get matching reels with view, like and comment counts, caption, creator and duration. Results are relevance-ranked, not chronological. We remove overlap with recent pages, but older reels may reappear during a long search. nextCursor is null when a page contains only reels seen in recent pages. For a web-search-index view of the same keyword, with a recency filter and numbered pages, use instagram.web_reels_search.
$1.10/1k req, pay per request, no subscription.
{"shortcode": "Cx4Wj2rNqKp","url": "https://www.instagram.com/reel/Cx4Wj2rNqKp/","caption": "Our first collab is finally here 🤝 Two creators, one kitchen, zero rules","thumbnail": "https://scontent.cdninstagram.com/v/t51.2885-15/collab_reel_1_cover.jpg","views": 2140000,"likes": 96500,"comments": 1284,"durationSeconds": 41.5,... 22 more fields}
Pricing and providers
Instagram Reels search API pricing: one API, 3 interchangeable providers
The cheapest provider serves first. If it fails, the next one takes over in the same call.
Try it
Get Instagram reels search in one request
This sample shows 23 of 35 fields. See every field
{
"found": true,
"data": {
"reels": [
{
"shortcode": "Cx4Wj2rNqKp",
"url": "https://www.instagram.com/reel/Cx4Wj2rNqKp/",
"caption": "Our first collab is finally here 🤝 Two creators, one kitchen, zero rules",
"thumbnail": "https://scontent.cdninstagram.com/v/t51.2885-15/collab_reel_1_cover.jpg",
"views": 2140000,
"likes": 96500,
"comments": 1284,
"durationSeconds": 41.5,
"createdUtc": 1758201600,
"username": "cookwithnoa",
"verified": false,
"paidPartnership": false
},
{
"shortcode": "Cy1Fp9sMabX",
"url": "https://www.instagram.com/reel/Cy1Fp9sMabX/",
"caption": "Collab drop with @packlight.jules: the carry-on we designed together is live, link in bio",
"thumbnail": "https://scontent.cdninstagram.com/v/t51.2885-15/collab_reel_2_cover.jpg",
"views": 890000,
"likes": 41200,
"comments": 632,
"durationSeconds": 28,
"createdUtc": 1757683200,
"username": "farflungtravel",
"verified": true,
"paidPartnership": true,
"id": "3015509827740198412",
"videoUrl": "https://scontent.cdninstagram.com/v/t50.2886-16/collab_reel_2.mp4",
"hasAudio": true,
"productType": "clips",
"userId": "4471902358",
"displayName": "Far Flung Travel",
"avatarUrl": "https://scontent.cdninstagram.com/v/t51.2885-19/farflungtravel_150x150.jpg"
},
{
"shortcode": "Cz7Km3vRstY",
"url": "https://www.instagram.com/reel/Cz7Km3vRstY/",
"caption": "How I land brand collabs as a small creator (under 10k followers)",
"thumbnail": "https://scontent.cdninstagram.com/v/t51.2885-15/collab_reel_3_cover.jpg",
"views": 512000,
"likes": 27800,
"comments": 415,
"durationSeconds": 55.3,
"createdUtc": 1756819200,
"username": "creatorjules",
"verified": false,
"paidPartnership": false
}
],
"nextCursor": "eyJvZmZzZXQiOjI0LCJxIjoiY29sbGFiIn0="
}
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
One request, one response shape.
Every field you send and every field you get back, each with a real example.
Last verified 2026-11-01 · uptime and latency measured over 30d
Request body
JSON, posted to this endpoint.
- querystring
collab
Search keyword (e.g. "crossfit").
- cursorstring
Pagination cursor from a previous response's nextCursor.
- requireFieldsarray
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `locationName`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a reel that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.
Response
JSON, one example value per field.
Wrapper holding the reels array, or null when nothing was found.
- nextCursorstring
eyJvZmZzZXQiOjI0LCJxIjoiY29sbGFiIn0=
Opaque cursor for the next page of reels, or null when this lane has no more. Pass it back as cursor to continue. Instagram relevance-ranks reels search, so a later page can repeat reels from an earlier one.
Reels matching the search. Populated whenever the provider has data for the entity.
- audioIdstringcan require
Instagram audio id of the post's sound, licensed track or original audio, the audioId instagram.audio_reels takes to list other reels using it. Absent when the post has no sound. Null when the serving source does not report it.
- avatarUrlstring
Profile picture URL of the author.
- captionstring
Our first collab is finally here 🤝 Two creators, one kitchen, zero rules
Reel caption text. Populated whenever the provider has data for the entity.
- commentsinteger
1284
Number of comments on the reel.
- countsHiddenboolean
Whether the author has hidden the like and view counts.
- createdUtcnumber
1758201600
UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
- displayNamestring
Display name of the author.
- durationSecondsnumber
41.5
Reel duration in seconds.
- hasAudioboolean
True when the reel carries an audio track.
- hashtagsstring[]
Hashtags carried in the caption, each including its leading #. Populated whenever the provider has data for the entity.
- idstring
Reel media identifier.
- likesinteger
96500
Number of likes on the reel.
- locationIdstringcan require
Instagram location id the post is tagged at. Absent when the post has no location. Null when the serving source does not report it.
- locationLatnumbercan require
Latitude of the tagged location, in decimal degrees. Null when the serving source does not report it.
- locationLngnumbercan require
Longitude of the tagged location, in decimal degrees. Null when the serving source does not report it.
- locationNamestringcan require
Name of the location the post is tagged at. Null when the serving source does not report it.
- mentionsstring[]
Accounts @mentioned in the caption, each including its leading @. Populated whenever the provider has data for the entity.
- paidPartnershipboolean
false
True when the reel is a paid partnership.
- productTypestring
Instagram product type of the media, for example clips.
- resharesinteger
Number of times the post has been reshared, when Instagram reports it. Populated whenever the provider has data for the entity.
- shortcodestring
Cx4Wj2rNqKp
Instagram media shortcode. Populated whenever the provider has data for the entity.
- soundAuthorstring
Credited artist of a licensed track, or the username of the account whose original audio it is. Absent when the post has no sound. Populated whenever the provider has data for the entity.
- soundTitlestring
Name of the sound on a reel or a post with music. "Original audio" means the creator's own audio rather than a licensed track. Absent when the post has no sound. Populated whenever the provider has data for the entity.
- thumbnailstring
https://scontent.cdninstagram.com/v/t51.2885-15/collab_reel_1_cover.jpg
URL of the reel thumbnail image. Populated whenever the provider has data for the entity.
- urlstring
https://www.instagram.com/reel/Cx4Wj2rNqKp/
Canonical URL of the reel. Populated whenever the provider has data for the entity.
- userIdstring
Instagram user id of the author.
- usernamestring
cookwithnoa
Username of the account that posted the reel. Populated whenever the provider has data for the entity.
- verifiedboolean
false
True when the posting account is verified.
- videoUrlstring
Direct URL to the reel video.
- viewsinteger
2140000
Play count of the reel.
- foundboolean
true
True when matching reels were found; false when the search returned nothing.
- reason"not_found"
Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.
Selling this API? See the full schema your endpoint must return.
FAQ
About the Instagram Reels search API
The AnyAPI Instagram Reels search API returns Instagram reels search data as normalized JSON from one POST call to /v1/run/instagram.reels_search. Search Instagram Reels by keyword against Instagram's own reels search and get matching reels with view, like and comment counts, caption, creator and duration. Results are relevance-ranked, not chronological. We remove overlap with recent pages, but older reels may reappear during a long search. nextCursor is null when a page contains only reels seen in recent pages. For a web-search-index view of the same keyword, with a recency filter and numbered pages, use instagram.web_reels_search. AnyAPI routes each request across 3 sources and falls back automatically when one fails. It costs from $1.10 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 100.0% of Instagram reels search calls through AnyAPI succeeded, with a median response time of 5.2 seconds across 153,959 measured calls.
