Instagram Reels Search API
The Instagram Reels Search API searches Instagram for reels matching a keyword or hashtag. Returns reels with shortcodes, captions, view counts, thumbnails, and author details. No Instagram account required.
Endpoint
https://api.socialkit.dev/instagram/reels-searchExample Request
GET https://api.socialkit.dev/instagram/reels-search?access_key=<your-access-key>&query=cats&page=1Response
{
"success": true,
"data": {
"query": "cats",
"page": 1,
"items": [
{
"id": "DU6Fh3QEZ2d",
"shortcode": "DU6Fh3QEZ2d",
"url": "https://www.instagram.com/reel/DU6Fh3QEZ2d/",
"type": "reel",
"isVideo": true,
"caption": "Which one suits me best? \n\n#cats_of_instagram #foryou #kittenlife #cats #catslovers",
"views": 35828358,
"plays": 35828358,
"likes": 0,
"comments": 0,
"duration": 0,
"timestamp": 1771435687,
"thumbnailUrl": "https://scontent.cdninstagram.com/v/t51.71878-15/...",
"width": 1080,
"height": 1920,
"author": {
"username": "gush.thecat",
"fullName": "Gush",
"isVerified": false,
"profilePicUrl": "https://scontent.cdninstagram.com/v/t51.82787-19/..."
}
}
],
"count": 12,
"hasMore": true
}
}Parameters
query string Required
The keyword or hashtag to search. Both bare keywords (cats) and hashtag forms (#cats, %23cats) are accepted — leading # is automatically stripped, and the keyword is normalized to lowercase.
access_key string Required
Your API access key. Can be provided via the access_key query parameter, x-access-key header, or request body.
page number Optional Defaults to 1
1-indexed page number. Each page returns up to 12 reels. Maximum value is 2 — Instagram caps anonymous search results at ~24 reels per query.
Response Fields
Top-level Fields
query: The normalized search query (lowercase, no leading#)page: Current page number (1-indexed)count: Number of reels in this responsehasMore:trueifpage=2is available,falseif you’ve reached the end (max 2 pages per query)
Reel Item
Each entry in the items array contains:
id: Instagram media identifier (matchesshortcodefor search results)shortcode: The reel shortcode used ininstagram.com/reel/<shortcode>/url: Canonical Instagram reel URLtype: Always"reel"for this endpointisVideo: Alwaystruefor reelscaption: Reel caption text (when available)views: View count for the reelplays: Play count (typically equalsviews)likes: Like count (often0from search results — fetch the reel via/instagram/statsfor fresh likes)comments: Comment count (often0from search results — same caveat)duration: Reel duration in seconds (when available)timestamp: Reel creation time as Unix timestamp (seconds, when available)thumbnailUrl: Best-quality cover image URLwidth: Original video width in pixelsheight: Original video height in pixelsauthor: Object withusername,fullName,isVerified, andprofilePicUrl(populated for the first 12 results)
Use Cases
- Trend Discovery: Find the top-viewed reels for any keyword or hashtag in your niche
- Influencer Discovery: Surface creators producing high-performing content for a topic
- Hook Mining: Pull captions from top-performing reels to study what hooks rank well
- Content Inspiration: Build a swipe file of viral reels per niche for your own content team
- Competitor Tracking: Monitor which reels compete for visibility on a target keyword
- Social Listening: Track which reels surface for branded keywords or competitor mentions
Notes
- Hashtag and keyword queries return the same result —
#catsandcatsare equivalent - Instagram limits anonymous search results to ~24 reels per query, so
pageis capped at2 - The first call for a previously-unseen query takes ~10–15 seconds (browser render). Subsequent calls hit a 30-minute cache and return in under 2 seconds.
- View counts come from Instagram’s public popular-search render — they reflect what Instagram shows publicly. For fresh per-reel likes/comments, fetch each reel via
/instagram/stats?url=<reel-url>. - Thumbnail URLs are signed Instagram CDN links and expire after several hours
- The endpoint normalizes the query (strips
#, URL-decodes%23, lowercases, removes spaces) - Returns
success: falseif Instagram blocks the render attempt — retry once, the next IP usually succeeds