How to run a Instagram reels search
GET request to /v1/instagram/reels-search with your input. You get clean JSON back in seconds for 2 credits per call — no OAuth, scraping or platform SDKs. Cascade: native (session residential + Android tag feed) → Decodo → Apify. Max 50. Flat 2 credits.How to run a Instagram reels search (step by step)
- 1
Get a free API key
Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.
- 2
Call the Instagram Reels Search API
Send an authenticated GET request to /v1/instagram/reels-search with your input. No OAuth, no scraping setup.
- 3
Read the JSON response
Parse the clean JSON response. Pass cache=true for a free 24h cache hit; default is always fresh.
Code example
curl "https://api.captapi.com/v1/instagram/reels-search?q=travel" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."What the response looks like
{
"success": true,
"data": {
"query": "travel",
"totalReturned": 2,
"results": [
{
"platform": "instagram",
"url": "https://www.instagram.com/p/DayDvvttHtI/",
"id": "3941229099090213704",
"postType": "Video",
"productType": "clips",
"caption": "🌊 Kıbrıs’ın en yeni aquaparkını keşfettim! 😍\nKaydıraklar, çocuk alanı ve yazın serinlemek için tam bir kaçış noktası. 💦☀️\n\nAquaparkın giriş ücreti, konumu için yoruma \"BİLGİ\" yazman yeterli! 📩💦\n\n📍 Kıbrıs’taki en güzel mekanlar ve keşifler için takip etmeyi unutma. \n\n#reels #viral #fyp #travel #travelreels",
"description": "🌊 Kıbrıs’ın en yeni aquaparkını keşfettim! 😍\nKaydıraklar, çocuk alanı ve yazın serinlemek için tam bir kaçış noktası. 💦☀️\n\nAquaparkın giriş ücreti, konumu için yoruma \"BİLGİ\" yazman yeterli! 📩💦\n\n📍 Kıbrıs’taki en güzel mekanlar ve keşifler için takip etmeyi unutma. \n\n#reels #viral #fyp #travel #travelreels",
"publishedAt": "2026-07-14T17:47:27.000Z",
"durationSeconds": 12.333,
"thumbnailUrl": "https://scontent-cph2-1.cdninstagram.com/v/t51.82787-15/746421066_18088964012323578_1371556212593119396_n.jpg?...",
"videoUrl": "https://scontent-cph2-1.cdninstagram.com/o1/v/t2/f2/m86/AQPRKXt1G6vrSNMtCD3y4roRhkZUU-SMO5R75U3-eAFEbtFGU6IzDJptEbfwWLTINTa9ZX5y-KO_OvBo4mp57r_n0PDYo7Wj368K6KU.mp4?...",
"author": {
"username": "bencekibris",
"displayName": "Melisa Yıldırım",
"url": "https://instagram.com/bencekibris"
},
"engagement": {
"views": 37937,
"likes": 297,
"comments": 641,
"viewsInstagram": 30350,
"viewsFacebook": 7587
},
"hashtags": [
"reels",
"viral"
],
"mentions": [],
"isPaidPartnership": false,
"isAd": false,
"isAffiliate": false
},
{
"platform": "instagram",
"url": "https://www.instagram.com/p/DazJr5PBcC3/",
"id": "3941536697690734775",
"postType": "Video",
"productType": "clips",
"caption": "It’s officially Hot summer night in mid July just like miss #lanadelray said #hotsummernights #midjuly #travel",
"description": "It’s officially Hot summer night in mid July just like miss #lanadelray said #hotsummernights #midjuly #travel",
"publishedAt": "2026-07-15T03:58:01.000Z",
"durationSeconds": 16.972,
"thumbnailUrl": "https://scontent-cph2-1.cdninstagram.com/v/t51.82787-15/746042012_18609462409002256_3222197168337217329_n.jpg?...",
"videoUrl": "https://scontent-cph2-1.cdninstagram.com/o1/v/t2/f2/m86/AQNjviBRPVEuheQRRrMOf2adQ6sKXUyWQeRvrbuKRr3QVWU2sUiizNhM7M5gYgXUSNGk-cDMur_ViWKTYaYps7oQxcxCqohZg4xAuzw.mp4?...",
"author": {
"username": "rammyun",
"displayName": "⠀⠀⠀✨Ram | 람 Lam 🌎",
"url": "https://instagram.com/rammyun"
},
"engagement": {
"views": 5572,
"likes": 378,
"comments": 12,
"viewsInstagram": 4458,
"viewsFacebook": 1114
},
"hashtags": [
"lanadelray",
"hotsummernights"
],
"mentions": [],
"isPaidPartnership": false,
"isAd": false,
"isAffiliate": false
}
]
}
}Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.
Request parameters
| Name | Type | Required | Description |
|---|---|---|---|
| q | string | Yes | Hashtag (without #) or keyword (min 2 characters). |
| limit | integer | No | Max items to return (default 20, max 50). Flat 2 credits per call. |
| datePosted | string | No | last_24_hours | last_week | last_month | last_year (aliases: today, this_week, this_month, this_year). |
| cache | boolean | No | Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. |
Frequently asked questions
What does the Instagram Reels Search API do?
The Instagram Reels Search API lets you search and return matching results from a public Instagram query using one GET request to /v1/instagram/reels-search. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the Instagram Reels Search API cost?
Each successful call costs 2 credits. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a Instagram API key or OAuth?
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Why did Playground sit on Fetching… for 110 seconds and return a timeout 502?
Decodo used to consume the whole 110s ceiling, so hydrate and Apify never started. Native (Evomi/Webshare + session sticky-residential) is first; Decodo is capped at 12s and skipped on a login wall; Apify listing is last and cannot be killed by APIFY_BLOCK_ENDPOINTS. A hang with a last-good grid is 200 stale at 0 credits; 502 timeout only when there is no snapshot.
I asked for 30 Reels and got 25. Were 5 lost?
Read hydrateFailures and hydrateSkipped. listingHits is the winning path's count (not a promise that native listed 20 and Apify still ran). hydrateFailures did not become a row (TLS / login wall / not a video); hydrateSkipped were queued but the deadline cut them. requested / listingHits / hydrateFailures / hydrateSkipped / totalReturned is the identity.
Is reels-search a pipeline? Why do I see Apify time on a 20-hit response?
Cascade, not pipeline. Native (Evomi/Webshare, then session sticky-residential + Android i.instagram.com) hydrates first; Decodo is skipped on a classified login wall; Apify's hashtag actor is last and cannot be killed by APIFY_BLOCK_ENDPOINTS. source names who served the body. listingHits is the winning path's count. A wall with a last-good grid is 200 stale at 0 credits.
Is the Instagram Reels Search API suitable for production use?
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
Ready to run a Instagram reels search?
Start free with 100 credits — no credit card required.
Get your free API key