Instagram Search Reels API reference
Your first 10 calls are free, no card needed. Pricing and FAQ
Get a free API keycurl "https://api.insightsocial.app/v1/instagram/search/reels?query=workout%20routine" \ -H "x-api-key: $INSIGHTSOCIAL_API_KEY"
Step-by-step: Brand mention monitoring · Search then enrich
Returns reels matching a keyword, each with its view count, like count, and author; share and save counts are not included on this endpoint.
Use it for keyword based reel discovery; search/hashtag is the better choice when you have a specific tag rather than a phrase. Pass a result URL to post/stats for a reel's share count.
Metered: 10–650 credits. We reserve the ceiling when the call starts and charge what it actually used when it finishes.
Paginates by cursor: see Pagination.
Authorization
apiKey Your key from the dashboard. It starts with isk_.
In: header
Query Parameters
Search keyword or phrase to find Instagram reels
Date posted
Value in
- "last-week"
- "last-month"
- "last-year"
The page number to return.
Two-letter market code (ES, MX, DE, BR, KR, FR) to localise the results. Instagram does not rank search by country, so the market's own name is appended to your query (fitness with ES searches fitness españa), unless the query already names the market or is already written in the market's own script (Hangul for KR), which Instagram localises by itself. It favours creators from the market but does not promise that every creator is from it; send country for that. For a topic about a place, such as eSIMs or travel, a phrasing locals use works better (esim móvil rather than esim). Same price as a plain call. Only these markets are supported; any other code is refused with the list, at no charge. A typo is a free 400.
Value in
- "ES"
- "MX"
- "DE"
- "BR"
- "KR"
- "FR"
Send creator to add each reel's creator card, read from the creator's About this account panel: post.ext.author_country, author_followers, author_following, author_posts_count, author_public_email and author_public_phone, plus the creator's name, avatar and verified flag where the row lacks them. author_country is the country the creator declares there, not where the reel was filmed; it is null when Instagram does not publish one, and nothing is guessed. A typo is a free 400.
Value in
- "creator"
Two-letter market code (ES, MX, DE, BR, KR, FR) to keep only reels whose creator is based in that market. When no row matches, the page is items: [] with the warning country_no_match, and the lookups are still billed. A page left empty only because the creator lookups failed costs nothing. Works with max_pages. A typo is a free 400.
Value in
- "ES"
- "MX"
- "DE"
- "BR"
- "KR"
- "FR"
Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.
Value in
- "1"
Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following next_cursor, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.
Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.
Keep only rows with at least this many views (post.engagement.views). A row whose view count is unknown is discarded, so every returned row meets the floor.
0 <= valueKeep only rows published within this many days (post.published_at), 1 to 3650. A row with no date is discarded.
1 <= value <= 3650views: return the kept rows ordered by view count, highest first, across every page walked. Rows without a view count go last.
Value in
- "views"
1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.
1 <= value <= 5The pagination.next_cursor from the previous page, sent back unchanged. Omit it for the first page.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api.insightsocial.app/v1/instagram/search/reels?query=string"{ "success": true, "platform": "string", "endpoint": "string", "schema_version": "2", "pagination": { "next_cursor": "string", "has_more": true, "page_size": 0, "stopped_at": "since" }, "unavailable": [ "string" ], "credits_used": 0, "credits_remaining": 0, "request_id": "string", "cached": true, "idempotent_replay": true, "charge_reason": "string", "free_call": true, "data": { "items": [ { "post": { "id": "string", "url": "http://example.com", "kind": "string", "content": { "text": "string", "media_urls": [ "http://example.com" ], "thumbnail_url": "http://example.com", "duration_seconds": 0 }, "author": { "id": "string", "username": "string", "display_name": "string", "avatar_url": "http://example.com", "verified": true }, "engagement": { "views": 0, "likes": 0, "comments": 0, "shares": 0, "saves": 0 }, "flags": { "nsfw": true, "spoiler": true, "pinned": true, "deleted": true, "likes_hidden": true, "comments_hidden": true, "shares_hidden": true, "views_hidden": true, "saves_hidden": true }, "published_at": "2019-08-24T14:15:22Z", "language": "string", "ext": { "property1": null, "property2": null } } } ], "total": 0, "truncated": true, "ext": { "property1": null, "property2": null } }}