Instagram Reels Search: Reels by Keyword
Pricing
from $0.99 / 1,000 reels
Instagram Reels Search: Reels by Keyword
Instagram reels scraper by keyword: give keywords, #hashtags or a Boolean search and get a row per reel with plays, likes, comments, post date, sound, location, tagged users, caption, hashtags and creator followers. Most relevant or newest first, date and plays filters. No login.
Pricing
from $0.99 / 1,000 reels
Rating
0.0
(0)
Developer
DeepMine
Maintained by CommunityActor stats
0
Bookmarked
186
Total users
90
Monthly active users
13 days
Issues response
5 days ago
Last modified
Categories
Share
Instagram reels scraper by keyword: type a topic like "home workout" and get the reels Instagram ranks for it, with plays, likes, comments, post date, length, sound, location, tagged users, collaborators, caption, hashtags and the creator with their name and follower count, then more reels from the related searches Instagram lists next to it.
| 👤 Creator | 📝 Caption | ▶️ Plays | ❤️ Likes | 🎵 Sound | 🔍 Keyword |
|---|---|---|---|---|---|
| bryanleefitness | Comment “FIT” to get your FREE 7 Days✨App Access📲… | 1,338,989 | 21,027 | Hello (The Sun Is Up Where Are You) | home workout |
| solofit_yt | 3 minutes Easy vs Hard cardio workout no equipment… | 24,299,837 | 649,323 | Original audio | home workout |
| that.gurllisa_ | Comment 'link' for all the product's 💓 For your da… | 662,617 | 12,746 | KALYANI (Remix) | skincare routine |
$1.29 per 1,000 reels on the Starter plan ($1.49 Free, $1.09 Scale, $0.99 Business). The prefilled run (100 reels) costs about $0.13. No start fee, no minimum.
What you get
- Reels about your keyword. By default every reel's caption, hashtags or creator name contains your keyword (cosplay matches #cosplaygirl; filler words like tips, ideas or routine aren't required), in Instagram's own order for the keyword's search, then its related searches (for home workout: home leg workout routines for women, home workout plan for a week, ...). Related searches that drop your keyword are skipped. Turn "Only reels that mention the keyword" off to get everything Instagram groups under the search, loosely related reels included. One keyword can give hundreds of reels.
- Or recent reels first. "Sort by: Newest first" reads the keyword's search and its related searches until they hold enough reels from the last 90 days for your limit and delivers them newest first (big asks go out in a few batches, each newest first).
- Numbers on almost every reel: plays, likes, comments, post date and length, plus the caption, its hashtags and mentions, the cover image, and the creator's username, profile link and verified check.
- The details Instagram shows logged-out visitors, at no extra cost: the video's view count, the song name, artist and sound id (or "Original audio" and whose it is), the tagged location with coordinates, tagged users, collab co-authors and paid partnership where creators set them, the creator's name, picture and follower count, the video's size, and whether comments are off or likes hidden. No share counts: Instagram shows those only to logged-in viewers. Turn "Add reel details" off for the fastest runs.
- A date window up front: "Posted in the last N days" sits on the form's first screen (the prefilled form asks 90; empty = any age).
- Filters that cost nothing: minimum plays, likes and comments. Reels the filters leave out aren't charged.
- Monitoring for scheduled runs: give the run a "History name" and each scheduled run delivers the keyword's reels with
playsSinceLastRun,likesSinceLastRunandcommentsSinceLastRunsince the run before, new ones markedisNew; every reel is charged as a normal result. "Only reels never delivered before" is an optional filter for new reels only (see Daily keyword monitoring). - Boolean keywords:
("home workout" OR pilates) AND NOT giveaway. Each OR branch is searched, and every row's caption or creator matches the whole expression;matchedTermslists the words it holds. - Reels only: the occasional photo or carousel post a topic page lists is left out and never charged, with "Add reel details" on or off. OUTPUT counts them as
notReels. - Video file links (optional): turn on "Include video file link" to get each reel's MP4 link for downloading.
- Transcripts (optional, paid, from November 1, 2026): turn on "Add transcripts" to get what's said in each reel as text (
transcript,transcriptLanguage): Instagram's own speech transcript, read without a login, for reels of any length. $0.0039 per reel with a transcript; reels without speech (music only, silent) aren't charged for it. - No login, no cookies, no account of yours involved. The Actor reads Instagram's public topic pages (instagram.com/popular/...), the same ones anyone can open without an account.
Typical uses: content research for a niche, finding creators who get views on a topic right now, and a daily scheduled run with a history name and "Posted in the last N days" to see what's new and how fast each reel grows.
Want to follow the accounts behind your results? Copy their usernames into Instagram Profile Scraper: one row per profile, with follower counts and recent Reels with view summaries.
Input
{"keywords": ["home workout", "skincare routine"],"maxResultsPerKeyword": 50,"maxAgeDays": 90,"includeRelatedTopics": true,"minPlays": 100000}
Leave out maxAgeDays and the run takes reels of any age, as Instagram ranks them (the form asks for the last 90 days).
- Keywords: phrases, #hashtags or instagram.com/popular/ topic URLs. A #hashtag is searched as a phrase (#latteart finds the topic "latteart"), not as the hashtag's own feed. Specific phrases work best ("skincare routine", "dog training", "b2b saas marketing"). Instagram has no topic page for some single broad words ("fitness", "cosplay"); the Actor then tries a close variant ("fitness ideas") and says so, or reports the keyword as having no topic.
- Boolean keywords: operators in capitals (
AND,OR,NOT),"quoted phrases", parentheses and-word(= NOT word); a space means AND. Each OR branch is searched as its own Instagram topic (positive words only), and a reel becomes a row only when its caption (hashtags included) or its creator's username matches the whole expression, word by word (a plural s/es counts as the same word; a phrase also matches as one hashtag: "home workout" matches #homeworkout). Lowercase and/or/not are plain words, so "mac and cheese" stays a normal keyword. Up to 32 OR branches. Reels the expression leaves out aren't charged. - Max reels per keyword: caps each keyword (default 100; the prefilled form asks 50). Max results (Advanced) caps the whole run.
- Sort by: Most relevant (default: Instagram's ranking for the keyword's search, then its related searches) or Newest first. With Newest first, a keyword whose searches hold fewer recent reels than you ask for is topped up with older ones, still newest first; add "Posted in the last N days" to get only recent ones.
- Only reels that mention the keyword: on by default; off = every reel of the keyword's search and its related searches, as Instagram groups them. Reels left out aren't charged.
- Continue with related searches: on by default; off = only the keyword's own topic (about 45 reels).
- Add reel details: on by default and free; adds the video's views, the creator's name, picture and follower count, the sound, location, tagged users, collaborators, partnership and sponsor fields and the video's size (all keys below marked details).
- Include video file link: adds
videoUrl. - Add transcripts: adds
transcriptandtranscriptLanguage(off by default; $0.0039 per reel whose transcript has 3+ words). Available from November 1, 2026; until then the switch adds nothing and costs nothing. - Posted in the last N days: on the first screen; the prefilled form asks 90, for recent reels; clear it for every age.
- Filters: Min plays, Min likes (reels whose creator hides likes are left out), Min comments.
- History name (Monitoring): the key-value store in your Apify account that remembers delivered reels; a later run with it adds each reel's growth since (
playsSinceLastRun, ...) andisNew. Only reels never delivered before: an optional filter, off by default: only reels no run with this history delivered (empty history name = named after your keywords). See Daily keyword monitoring. - More recent reels from the creators: on by default, used only with "Posted in the last N days". Instagram's topic pages mix years, so a short window can leave a keyword's searches with few reels that recent; the Actor then also reads the newest reels of the creators those searches show and keeps the ones whose caption, hashtags or creator name the keyword (at most 2 per creator, counting the reels the searches gave; their
topicis @creator). Reels left out aren't charged.
Ready-made examples
- Newest Instagram reels for a keyword, last 7 days (pilates)
- Find viral Instagram reels: 500K+ plays for a Boolean keyword search
Open one and press Try for free: it copies the input to your account, where you change the keyword or the numbers.
Use it from an AI agent or the API
Connect the Apify MCP server at https://mcp.apify.com?tools=deepmine/instagram-reels-search (Claude, VS Code or any MCP client), or call the Actor through the Apify API. Give keywords, the only key you must send:
| Key | For | Example |
|---|---|---|
keywords | Required. Phrases, #hashtags, Boolean searches or instagram.com/popular/ links, one per item | ["home workout", "(pilates OR yoga) AND NOT giveaway"] |
maxResultsPerKeyword | Reels per keyword; you pay per reel | 50 |
sortBy | relevance (default) or newest | "newest" |
maxAgeDays | Only reels from the last N days | 7 |
minPlays, minLikes, minComments | Free filters; reels they leave out aren't charged | 100000 |
historyStore | Scheduled runs: growth since the last run | "pilates-watch" |
{"keywords": ["pilates workout"], "sortBy": "newest", "maxAgeDays": 7, "maxResultsPerKeyword": 30}
Each row is one reel: reelUrl, plays, likes, comments, postedAt, caption, hashtags, audioTitle, authorUsername, authorFollowers and more (see Output). A keywords list with nothing in it fails at once with a message and costs nothing.
Output
One row per reel, in the dataset's 📊 Overview view. 👤 Creators shows who made each reel with hashtags and mentions; 📈 Stats shows only the numbers; 🔁 Changes shows what changed for a monitored keyword. The run's OUTPUT record (🧾 Run summary) lists each keyword's status, the Instagram topic it used and counts.
Output fields
cover: the reel's cover image. Instagram signs media links; they stop working after a few days.caption: full caption.captionSnippet: first 50 characters of the caption.transcript: what's said in the reel, Instagram's own speech transcript (its auto-captions) as plain text, no timings; null for reels without speech (transcripts, a paid add-on).transcriptLanguage: the transcript's language (ISO 639-1: en, es, de, ...), null when it's too short to tell (transcripts).authorUsername: the creator's username, without @.authorFullName: the creator's display name (details).reelUrl: https://www.instagram.com/reel/authorVerified: the creator has the blue check.authorFollowers: the creator's follower count (details).plays: play count.views: the video's view count, a separate counter from plays (often a quarter to a half of them), as Instagram's public embed widget shows it; null when the creator hides counts or turned off embedding (details).likes: like count (null when the creator hides it).comments: comment count.playsSinceLastRun: plays gained since the last run that delivered this reel; null for a new reel (monitoring: only with a history name or "Only reels never delivered before").likesSinceLastRun: likes gained since then (monitoring).commentsSinceLastRun: comments gained since then (monitoring).fbLikeCount: likes on the reel's Facebook cross-post, when the creator shares reels to Facebook (details).durationSeconds: length in seconds.mediaType:reel(a Reels post) orvideo(a feed video Instagram lists with reels). Photos and carousels are never rows.postedAt: when it was posted (UTC).rank: position in Instagram's list for the row'stopic(1 = first). With Newest first, rows come in date order, so ranks jump.isNew: true when no earlier run with this history delivered the reel (monitoring).firstSeenAt: when a run with this history first delivered the reel (UTC) (monitoring).lastSeenAt: when an earlier run last delivered it (UTC); null for a new reel (monitoring).audioTitle: the reel's sound: a song name, or Original audio (details).audioArtist: the sound's artist, or the account whose original audio it is.isOriginalAudio: true when the sound is the creator's own audio, false for a song (details).locationName: the place tagged on the reel; about 1 in 7 to 4 in 10 reels have one, depending on the topic (details).taggedUsers: accounts tagged in the reel, each as{username, fullName, id, profilePicUrl, isVerified}(details).collaborators: collab co-authors shown next to the creator, in the same shape (details).isPaidPartnership: marked as a paid partnership (details).sponsors: brands named in the paid partnership label, in the same shape (details); Instagram usually hides them from visitors who aren't logged in, so this is mostly null even whenisPaidPartnershipis true.hashtags: hashtags in the caption, lower case, without #.mentions: accounts mentioned in the caption, without @.hasHiddenLikes: the creator hides the like count (likesis then null) (details).isCommentsDisabled: comments are turned off (details).latitude: the tagged place's latitude (details).longitude: its longitude (details).videoWidth: the video's width in pixels (details).videoHeight: its height (details).videoUrl: direct MP4 link, only with "Include video file link" on (signed; expires after a few days).images: the cover frame in two sizes, full size first, then 320 px wide (signed; expires after a few days) (details).authorAvatar: the creator's profile picture (signed; expires after a few days) (details).authorProfileUrl: the creator's profile.keyword: your keyword this reel was found for.topic: the Instagram search it came from: your keyword, or a related search Instagram lists for it. With "More recent reels from the creators", @creator: a newer reel from that creator's reels.matchedTerms: for a Boolean keyword, the words and phrases of it the reel's caption or creator holds (null for a plain keyword).shortCode: the reel's shortcode.reelId: Instagram's numeric media id.audioId: Instagram's id of the sound; reels with the same id use the same sound (details).locationId: Instagram's id of the tagged place (details).authorId: the creator's numeric user id.scrapedAt: when the run collected it (UTC).
A few reels come with plays but without likes and date, or the other way round (Instagram's two lists for a topic overlap almost but not quite); those fields are null. Key names match our TikTok Video Search Actor where both have the field, so the two go into one sheet.
Example row (video file link and transcripts on):
{"cover": "https://scontent-dfw6-2.cdninstagram.com/v/t51.82787-15/670413347_18580142578021312_365793381181611000_n.jpg?...","caption": "20 Minutes Full body at home. \nBodyweight \n.\n.\n.\n.\n.\n#homeworkout #fitness #bodyweight #coach","captionSnippet": "20 Minutes Full body at home. Bodyweight . . . . .…","transcript": "This joy fills","transcriptLanguage": null,"authorUsername": "summers.coach","authorFullName": "Jake Summers","reelUrl": "https://www.instagram.com/reel/DXNQ7uYjqDZ/","authorVerified": false,"authorFollowers": 32523,"plays": 5200127,"views": 1997955,"likes": 88963,"comments": 230,"fbLikeCount": null,"durationSeconds": 30.2,"mediaType": "reel","postedAt": "2026-04-16T21:15:29Z","rank": 1,"audioTitle": "Original audio","audioArtist": "summers.coach","isOriginalAudio": true,"locationName": "Jersey City, New Jersey","taggedUsers": null,"collaborators": null,"isPaidPartnership": false,"sponsors": null,"hashtags": ["homeworkout","fitness","bodyweight","coach"],"mentions": null,"hasHiddenLikes": false,"isCommentsDisabled": false,"latitude": 40.7114,"longitude": -74.0647,"videoWidth": 1080,"videoHeight": 1920,"videoUrl": "https://scontent-dfw5-1.cdninstagram.com/o1/v/t2/f2/m86/AQNx2IgBQoNh5hbZHfw778XtIOOqGwCpbKobfg4fl7eRoev1hgDQnM_l255_Zmj8eZV90cBSjlagRfh8xTrWwqGRU5peXFxngWcU1so.mp4?...","images": ["https://scontent-dfw6-2.cdninstagram.com/v/t51.82787-15/670413347_18580142578021312_365793381181611000_n.jpg?stp=dst-jpg_e15_tt6&...","https://scontent-dfw6-2.cdninstagram.com/v/t51.82787-15/670413347_18580142578021312_365793381181611000_n.jpg?stp=dst-jpg_e15_p320x320_tt6&..."],"authorAvatar": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-19/587876241_18543930538021312_1279283131141608788_n.jpg?...","authorProfileUrl": "https://www.instagram.com/summers.coach/","keyword": "home workout","topic": "home workout","matchedTerms": null,"shortCode": "DXNQ7uYjqDZ","reelId": "3876829327233294553","audioId": "26462446580048508","locationId": "213196090","authorId": "194197311","scrapedAt": "2026-10-01T00:30:48Z"}
Daily keyword monitoring
Track how reels grow, every day: each run delivers the reels it finds with how much each one grew since the run before, and marks the new ones.
- Set your keywords, "Sort by: Newest first" and "Posted in the last N days" (7 for a daily run).
- Open Monitoring and give the history a name, e.g.
pilates-watch. - Save it as a task and schedule it daily (Schedules in Apify Console).
The first run delivers what's there and remembers it in the key-value store pilates-watch in your account. Each later run delivers every reel it finds again: the ones an earlier run delivered carry what changed since, new ones have isNew: true. The 🔁 Changes view shows the growth, and OUTPUT's monitoring part counts the new and the seen-again reels. A reel read again 13 minutes after a run first delivered it (2026-10-20):
{"plays": 35246,"likes": 1413,"comments": 4,"playsSinceLastRun": 184,"likesSinceLastRun": 9,"commentsSinceLastRun": 0,"isNew": false,"firstSeenAt": "2026-10-20T17:02:39Z","lastSeenAt": "2026-10-20T17:02:39Z"}
What it costs: every reel a run delivers is charged as a normal result, new or seen before: $1.29 per 1,000 reels at Starter. 50 reels a day cost about $0.06 a day, $1.94 for 30 days.
Only new reels instead: turn on Only reels never delivered before (off by default) and a run leaves out every reel an earlier run with this history delivered: they aren't charged, and you get no growth numbers for them.
Apify lets an Actor open only the named stores it made itself, so if a store of that name already exists in your account (made by another Actor or by hand), this Actor keeps its history next to it as pilates-watch-instagram-reels-search; OUTPUT and the status message say so. A new name starts a fresh history; the store keeps the last 100,000 reels.
Pricing
Pay per result: you pay for reels delivered, never for keywords without reels or for reels your filters leave out.
| Plan | Per 1,000 reels |
|---|---|
| Free | $1.49 |
| Starter | $1.29 |
| Scale | $1.09 |
| Business | $0.99 |
On Apify's Free plan a run returns the first 50 reels (charged at the Free price above). Any paid Apify plan gets every result.
Transcripts ("Add transcripts", off by default): $0.0039 per reel with a transcript, on every plan, on top of the reel. Reels without speech (music only, silent) or with fewer than 3 words aren't charged for it. Available from November 1, 2026.
Set a maximum cost on the run and the Actor stops at or before it. Proxies are included: the Actor uses Apify Proxy and switches to residential IPs on its own if Instagram keeps refusing datacenter ones.
Good to know
- Instagram's topic lists, not its logged-in search. Instagram's keyword search (instagram.com/explore/search/keyword/) and its app search only answer logged-in accounts, and this Actor never uses one; the reels here come from the public search pages Instagram shows every visitor (about 45 reels each), ranked its way, plus their related searches. The keyword filter keeps those on your keyword. Suggestive or restricted keywords have small or no public pages, so they give few reels (e.g. 6-9 for "blonde bikini"). Newest first sorts what those pages hold by date; it can't reach reels Instagram puts on no public page.
- Reel details come from each reel's public post page data, its public embed widget (the views: Instagram's own video view counter, a separate one from plays) and its creator's public profile (read once per creator); when Instagram doesn't answer one of them, the others fill in what they can, and a reel still without the follower count is counted in the run summary. Instagram shows share counts only to logged-in app users, so rows have no shares.
- Results change over time as Instagram re-ranks its topic pages.
- If Instagram ever refuses the topic pages to every IP, the run fails with a clear message instead of finishing empty.
- Big runs: the Actor stops a little before the run's timeout and keeps every reel it delivered; raise the timeout in the run options for very large runs (about 5 reels a second).
Related Actors
- The same brand on Facebook: Facebook Posts Scraper returns a page's public posts with reactions, comments and shares, to read next to the reels you found.
- What people say about it on Reddit: Reddit Scraper exports Reddit posts and comment threads for the same keyword.
- Local businesses behind a trend: Google Maps Scraper finds businesses by category and city, with phones, websites and ratings.
- Also need Threads data? Threads Scraper searches Meta Threads by keyword or hashtag and returns posts, replies and profiles with likes and view counts, with no login.
Feedback
Found a bug or missing a field? Open an issue in the Issues tab. If the Actor saves you time, a short review on its Store page helps others find it.