Instagram Reels Search Scraper
Search Instagram Reels by keyword: shortcode, caption, views, likes, author and URL. Bring your own session cookie.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
searchQueries,hashtags,maxReels(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.0004 per result = $0.4 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Result returned | Charged once per genuine result row. Samples, diagnostics and blocked runs are never charged. | $0.0004 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.001 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-04, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
searchQueries | Up to five keyword searches. Each keyword is searched directly against Instagram's Reels search surface and returns ranked Reels for that keyword. | array |
hashtags | Optional direct hashtags. Each is searched as #tag on the same Reels search surface. | array |
maxReels | Hard run-wide maximum of genuine Reels written and charged. | integer |
sessionCookies | Optional, and normally not needed — runs work with no cookie at all. Supply your own Instagram account cookie here to run on your own account's rate limit, and to reach feeds the no-setup route does not cover. In Chrome: F12 -> Application -> Cookies -> https://www.instagram.com -> copy the sessionid value. Use an account you own and are authorized to automate. Cookie values are never logged or written to output. | array |
maxAttempts | Bounded retries across rotating configured accounts and sticky datacenter proxy sessions. | integer |
requestTimeoutSeconds | Timeout for each authenticated Instagram Reels search request. | integer |
maxRunSeconds | Hard wall-clock bound for authenticated Reels search and extraction. | integer |
What you get
A structured dataset — each result includes fields like:
authorUsernamecaptionplayCountlikeCountcommentCountdurationSecondssourceQuerysourceHashtagreelUrlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
17 ready-to-run use cases
Track beauty and skincare Reels trends
Track beauty and skincare Reels trends. Searches Reels for "skincare routine" and "makeup tutorial". No login needed.
Infer best posting hours from Reels timestamps
Infer best posting hours from Reels timestamps. Searches Reels for "daily vlog". No login needed.
Track comedy and meme Reels formats
Track comedy and meme Reels formats. Searches Reels for "comedy skit" and "funny". No login needed.
Build a competitor Reels swipe file
Build a competitor Reels swipe file. Searches Reels for "brand campaign" — caption, views, likes, comments, video URL, creator and timestamp. No login needed.
Track finance and investing Reels
Track finance and investing Reels. Searches Reels for "personal finance" and "investing tips". No login needed.
Discover fitness Reels for content research
Discover fitness Reels for content research. Searches Reels for "home workout" and "gym motivation". No login needed.
Find product-review Reels for competitor research
Find product-review Reels for competitor research. Searches Reels for "product review" and "honest review". No login needed.
Find real-estate tour Reels
Find real-estate tour Reels. Searches Reels for "house tour" and "property tour". No login needed.
Collect recipe Reels for food content ideas
Collect recipe Reels for food content ideas. Searches Reels for "easy recipe" and "meal prep". No login needed.
Extract opening hooks from high-performing Reels
Extract opening hooks from high-performing Reels. Searches Reels for "hook" and "storytime". No login needed.
Benchmark Reels engagement across a niche
Benchmark Reels engagement across a niche. Searches Reels for "fitness" — caption, views, likes, comments, video URL, creator and timestamp. No login needed.
Find trending Instagram Reels by keyword
Find trending Instagram Reels by keyword. Searches Reels for "trending" — caption, views, likes, comments, video URL, creator and timestamp. No login needed.
Find travel Reels by destination keyword
Find travel Reels by destination keyword. Searches Reels for "travel tips" and "hidden gems". No login needed.
Find trending audio inside a niche
Find trending audio inside a niche. Searches Reels for "trending audio" — caption, views, likes, comments, video URL, creator and timestamp. No login needed.
Source UGC Reels for paid-ad creative testing
Source UGC Reels for paid-ad creative testing. Searches Reels for "ugc" and "product demo". No login needed.
Find viral Reels worth repurposing into clips
Find viral Reels worth repurposing into clips. Searches Reels for "viral clip". No login needed.
Spot Reels riding a viral sound or format
Spot Reels riding a viral sound or format. Searches Reels for "viral" — caption, views, likes, comments, video URL, creator and timestamp. No login needed.
Related tools in Developer & Research Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
GitHub Scraper
Search GitHub repos or users and export clean rows: stars, forks, language, topics, license, plus user bio, company, location and follower count.
Stack Overflow / Stack Exchange Scraper
Search Stack Overflow and Stack Exchange by keyword or tags. Get structured questions with score, answers, views, tags, author, and link as JSON or CSV.
Package Registry Scraper (npm + PyPI)
Get npm and PyPI package metadata - version, license, repo, keywords, and npm download counts. Search by keyword or look up exact names. No API key needed.
arXiv Scraper
Search arXiv and get clean JSON: titles, abstracts, authors, categories, DOI, dates and PDF links. No API key. Sort by relevance or date; push to Notion.
OpenAlex Scholarly Works Scraper
Search 250M+ OpenAlex papers by keyword. Get titles, authors, venue, year, citations, concepts, OA links and full abstracts as structured JSON. No API key.
Crossref Scholarly Works Scraper
Search 150M+ scholarly works on Crossref and export DOI, authors, journal, citation count, and abstracts as JSON or CSV. Filter by type and date.
Where this tool sits
- Categories
- Developer & Research Tools
Instagram Reels Search Scraper
Discover public Instagram Reels by keyword or hashtag. Each term is searched directly against Instagram's own Reels search surface — the one the mobile app uses for the Reels tab — and only video or clips records are returned. There is no keyword-to-hashtag detour: a keyword gets the Reels Instagram ranks for that keyword, not whatever happens to be sitting in a hashtag it loosely matched.
$0.40 per 1,000 reels ($0.0004 each), plus $0.001 each time a run starts. Flat rate — no volume tiers, no plan gates — and you are charged only for reels actually returned. Keyword-driven Reels discovery is a capability most Instagram tooling does not offer at all: it takes a hashtag or a profile and stops there.
What you need to know before you run it
Runs work out of the box. No login, no cookie, no app review, nothing to supply. Reels search is a surface Instagram serves only to a signed-in caller — there is no logged-out route to it, at any price — so this actor reads it through a licensed data source. You supply your search terms and nothing else.
A run can stop short of the limit you asked for. This is the one real limitation and it is worth knowing before you start: the licensed source is bought per request under a per-run ceiling we set, so a run asking for a large maxReels across several terms can land on fewer reels than requested. Everything it collected is delivered and correct, and one uncharged row tells you it stopped and why — never a silent empty result, and never a charge for the stop. Re-run to collect more.
Your own cookie takes priority when you supply one. Put it in sessionCookies to run on your own account's rate limit instead:
- In Chrome:
F12→ Application → Cookies →https://www.instagram.com→ copy thesessionidvalue. Pasting the whole cookie string works too. - Your cookie is tried first, for every term. Only the terms it cannot answer at all are bought from the licensed source, and if it returns nothing anywhere, every term falls back. Either way you are charged the same per-reel price and never twice for the same reel.
- Use an account you own and are authorized to automate.
Cookie values, proxy URLs, and request headers are never logged or written to output. Logs contain only slot numbers, retry reasons, and result totals.
Input
searchQueries: up to five keywords. Each is searched as-is against Instagram's Reels search.hashtags: up to five direct hashtags. Each is searched as#tagon the same surface.maxReels: hard run-wide limit of 1-100 genuine Reels; default 30.sessionCookies: optional. Your own Instagram account cookie, for a rate limit nobody else shares. Leave it empty and the licensed source answers the search.proxyConfiguration: optional proxy configuration, applied to the requests made with your own cookie. Rotating Apify datacenter addresses are used by default; your ownproxyUrlsare honoured exactly as supplied. Metered groups (RESIDENTIAL,GOOGLE_SERP) are not offered and are replaced with datacenter addresses.maxAttempts: 1-12 bounded attempts, used only for the cookie lane; default 8.requestTimeoutSeconds: 5-30 seconds per cookie-lane request.maxRunSeconds: 20-180 second hard run deadline. The one exception: if the cookie lane spends the whole budget and delivers nothing, the licensed source is given a short grace period past that deadline rather than handing you an empty run.
Empty or invalid input emits exactly one clearly labeled _sample record. It makes no Instagram request, proxy connection, or billing event. The sample is solely an output-shape preview.
What you are charged for
You are charged per delivered Reel row, once each, and for nothing else.
Reels are deduplicated by ID across both lanes, so the same Reel is never delivered twice or charged twice no matter which lane found it. Every other outcome is free and clearly labeled: sample rows, terms that genuinely return no Reels, blocked or failed requests, problems on our own upstream, and runs that stop early all arrive as uncharged diagnostic rows carrying an errorCode and a plain-English explanation. A run that returns nothing costs nothing beyond the start fee.
How it works
One search request per term. With no cookie supplied, each term goes straight to the licensed source — no attempts are spent discovering that a gated request will be refused. With a cookie, that lane runs first, paired with one sticky datacenter proxy session and rotating to a fresh one on 403, 429, a login redirect, or server and network failures, within the configured bound; only what it cannot answer is bought.
Each genuine Reel is written to the dataset before it is billed. Video files are never downloaded, so you are not paying for video bandwidth.
Failures are named for what they are rather than flattened into one generic error: a rate limit reads as a rate limit, a no-result search reads as a no-result search, and a problem on our side is reported as ours instead of being dressed up as Instagram refusing you. Every run ends with a STATUS line carrying the number of Reels delivered.
Output
Each genuine Reel includes its ID, shortcode and URL, caption, parsed hashtags and mentions, play/like/comment counts, duration, thumbnail and video URLs, creator information, available audio metadata, timestamp, and the source term that found it.
sourceQuery is the term as searched — the keyword, or #tag for a hashtag input. sourceHashtag is the hashtag for a hashtag input and null for a keyword, because keywords are searched directly rather than routed through a hashtag first.
Pricing
| Event | When | Price |
|---|---|---|
| Actor start | Once per run, per GB of run memory | $0.001 |
| Reel returned | Each genuine Reel row written to the dataset | $0.0004 ($0.40 / 1,000) |
Because maxReels is capped at 100 per run, a full run costs at most $0.041. A run with empty or invalid input returns one _sample row, makes no Instagram request and no proxy connection, and is charged only the start fee.
Limits, stated plainly
- Reels search is login-gated. There is no logged-out route to it, so every result comes either from the licensed data source or from your own cookie. You do not have to bring anything, but the licensed source runs under a per-run request ceiling we set, which is why a run can finish with fewer Reels than requested and say so in an uncharged row.
- 100 reels per run, 5 keywords, 5 hashtags per run. These are hard input caps, not throttles that lift at higher volume.
- Unmetered proxy egress. The cookie lane pins one sticky datacenter session, rotating on
401,403,429, server or network failures, up tomaxAttempts. Metered residential egress is never used. - Hard run deadline.
maxRunSeconds(20–180) ends the run cleanly rather than letting a blocked search burn time, with the single documented grace above for a cookie lane that returned nothing.