Instagram Reels Search Scraper: Reels by Keyword avatar

Instagram Reels Search Scraper: Reels by Keyword

Pricing

from $0.37 / 1,000 reels

Go to Apify Store
Instagram Reels Search Scraper: Reels by Keyword

Instagram Reels Search Scraper: Reels by Keyword

Instagram reels search by keyword, no login: the public reels Instagram lists for each phrase, #hashtag or Boolean keyword, plus related searches. Rows carry plays, likes, comments, date, length, music, location and creator. Filters on plays and dates. JSON, CSV or API; pay per reel.

Pricing

from $0.37 / 1,000 reels

Rating

0.0

(0)

Developer

Automation Craft

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

3 days ago

Last modified

Share

Instagram Reels Search Scraper: Reels by Keyword

Search Instagram reels by keyword and get every public reel Instagram shows for your words, with its plays, likes, comments, posting time, length, music, location and creator, without an Instagram account, cookies or login. Give one keyword or 500, a #hashtag, an instagram.com/popular/ or /explore/tags/ link or a Boolean keyword such as ("latte art" OR barista) -giveaway, and get one row per reel plus a free row per keyword that says what Instagram listed and why the search stopped.

  • Reels by keyword, no login. The Actor reads Instagram's own public reel search for each keyword (about 96 reels a search) and, when you ask, the related searches Instagram lists next to it, close variants of broad words, and more reels from the creators it found.
  • Every number Instagram shows logged out. Plays, likes (or that the creator hides them), comments, posting time, length, width and height, the song or original sound, the tagged location with coordinates, collaborators, the paid partnership label, Instagram's AI label, and links to the video file and its audio only track with the time they expire.
  • Filters that cost nothing. Minimum plays, likes and comments, a posting date window, words that must appear, Boolean keywords and the caption's language. Reels a filter leaves out are never charged.
  • Your order. Instagram's own order, newest first or most played first.
  • Add-ons when you need them. Each creator's followers, following, post count, category, account type, links and bio, and up to 50 comments per reel.
  • Fair billing. Each reel is charged once per run, even when several keywords find it. Searches that find nothing, failed calls, repeats and refused entries are free rows. A reel whose details could not be read is delivered free.

Quick start

  1. Open the Actor's Input tab and type your keywords, one per line (for example nail art, home bakery, dubai hotels).
  2. Set Max reels per keyword (about 96 is the most one Instagram search lists; related searches find more).
  3. Optional: add filters (minimum plays or likes, posted since), an order, or the creator details and comments add-ons.
  4. Click Start. Each reel arrives as a row of the dataset, followed by one keyword row per keyword and a run summary.
  5. Download the dataset as JSON, CSV or Excel, or read it through the Apify API, a schedule, Make, n8n or Zapier.

What you get

One reel row per reel. The fill rates below were measured on 534 distinct reels with details read on the platform on 2026-10-27 (21 test runs).

FieldWhat it holdsFilled
keyword, searchedAs, foundVia, rank, searchPageyour keyword, the text sent to Instagram, how the reel was found (search, related, variant, creator), its place in Instagram's list100%
code, id, urlthe reel's code, id and link100%
caption, hashtagsthe caption as Instagram serves it, and its hashtags99.3%, 85.8%
playCountplays100%
likeCount, likesHiddenlikes, or likesHidden: true when the creator hides them (likeCount is then null, never 0)92.7% shown, 7.3% hidden
commentCount, commentsDisabledcomments, and whether comments are off where Instagram says so100%, rarely set
postedAt, postedAtTimestamp, createdAtFromIdwhen the reel was posted, and when it was created (read from its id)100%
durationSeconds, width, height, hasAudiothe video's length and size99.6%, 100%
videoUrl, videoUrlExpiresAtthe MP4 file link and when Instagram's signed link expires100%
audioUrlthe audio only track94.9%
audiotype (music or original), title, artist, audioId, isExplicit93.8% (music 41.0%)
locationid, name, lat, lng, url of the tagged place33.0%
coauthors, isPaidPartnershipcollaborators and the paid partnership label, as creators set them9.9%, 0.9%
aiLabel, fbLikeCountInstagram's "AI content" label, likes of the reel's Facebook cross post6.0%, 7.7%
ownerthe creator's username, id, fullName, isVerified, isPrivate, profilePicUrl, url100% (full name 97.8%)
keywordMatch, matchedTermshow the caption, hashtags and username match your keyword: all, some or none100% (all 71.3%)
captionLanguagethe caption's language, our own estimate (see the FAQ)32.8%
viewCountthe reel's view counter from its embed page, a counter apart from plays (opt in)when asked
creatoradd-on: followerCount, followingCount, postsCount, category, accountType (personal, business or creator), externalUrl, bioLinks, biography; links to Instagram, Facebook, Messenger, Threads or WhatsApp only with Include personal datawhen asked
commentsadd-on: up to 50 comments with text, createdAt, likeCount, ownerUsernamewhen asked
mentions, taggedUsersthe @usernames in the caption and the accounts tagged in the reel: empty unless you turn on Include personal datawhen asked

Example row (from a run on home bakery; caption and links cut short):

{
"type": "reel",
"keyword": "home bakery",
"searchedAs": "home bakery",
"foundVia": "search",
"rank": 2,
"code": "DeevznutHxo",
"url": "https://www.instagram.com/reel/DeevznutHxo/",
"caption": "5 things I learned building a cookie business from scratch...",
"hashtags": ["montrealcookies", "montrealdessert", "mtldesserts", "montrealfoodie", "griffintown"],
"keywordMatch": "all",
"matchedTerms": ["home", "bakery"],
"playCount": 72589,
"likeCount": null,
"likesHidden": true,
"commentCount": 52,
"postedAt": "2026-10-14T15:52:19.000Z",
"durationSeconds": 5.455,
"videoUrl": "https://scontent-iad3-2.cdninstagram.com/o1/v/t2/f2/m86/...mp4",
"videoUrlExpiresAt": "2026-10-29T02:33:01.000Z",
"audio": { "type": "music", "title": "Dracula (Instrumental) [feat. JENNIE]", "artist": "Tame Impala" },
"location": { "name": "Montreal, Quebec", "lat": 45.5038, "lng": -73.5744 },
"owner": { "username": "obsession.cookies", "isVerified": false },
"creator": { "followerCount": 1615, "followingCount": 193, "postsCount": 66, "category": "Bakery", "accountType": "creator", "externalUrl": "https://flavrr.ca/order/obsessioncookies" },
"comments": [{ "text": "Cookie", "createdAt": "2026-10-27T14:22:38.000Z", "likeCount": 0 }]
}

The keyword row (free). One per keyword: its status (ok, no_reels, no_matching_reels, failed, stopped), finished, stopReason, how many reels were listed, delivered and left out by each check (reelsLeftOut), every search read with its pages and whether it reached Instagram's end, the related keywords Instagram lists for it, and Instagram's own short description of the keyword with its sources (keywordSummary). The last row of every run is a free summary row with the run's counts.

How much does it cost to scrape Instagram reels?

You pay per result (pay per event). Prices per 1,000 events:

EventFreeBronzeSilverGold
Reel (one reel delivered as a row, with its details)$0.51$0.46$0.42$0.365
Reel search (one search that delivered at least one charged reel)$0.42$0.38$0.34$0.30
Creator profile (add-on, once per creator per run)$1.33$1.21$1.10$0.95
Comment (add-on, per comment delivered)$0.27$0.24$0.22$0.19

Platinum and Diamond plans pay the Gold price. Each run also pays the Actor start event of $0.0075 (256 MB), which has no plan discount. The Store pricing card shows these same prices per 1,000 events: "$0.365 / 1,000" on the Reel row means one reel costs about four hundredths of a cent.

Examples at the Gold price: 50 reels of one keyword (one search) cost $0.0075 + 50 x $0.000365 + $0.0003 = $0.026; 500 reels of ten keywords, 50 each, cost $0.0075 + 500 x $0.000365 + 10 x $0.0003 = $0.193. A keyword whose reels come from more than one search (Boolean branches, related searches, variants) pays one Reel search for each search that delivered a charged reel.

Free: keyword rows, status rows, the summary, reels another keyword of the run already delivered, reels a filter leaves out, carousel posts, searches that list nothing, failed calls, refused entries, invalid input, and reels whose details could not be read (delivered free). An invalid input charges only the run's start fee.

Input

SettingWhat it doesDefault
keywordsone keyword per entry, up to 500 (see below)required
maxReelsPerKeywordthe most reels delivered for one keyword, its related, variant and creator reels included (1 to 1,000)50
maxReelsstop the run after this many reels in all (keywords are read in the order given)none
sortByrelevance (Instagram's order), newest or mostPlayedrelevance
searchRelatedKeywordsalso search this many of Instagram's related keywords per keyword (0 to 10)0
tryVariantsWhenEmptyfor a keyword without reels, also try "off
includeCreatorReels, maxReelsPerCreatoradd the newest reels of the creators found that match your keyword (1 to 12 per creator)off, 2
requireKeywordMatchkeep only reels whose caption, hashtags or username hold every word of the keywordoff
postedSince, postedUntila posting window: a day as 2026-10-01 or 30 days (from the run's start), and an end daynone
minPlays, minLikes, minCommentsminimum counts (reels with hidden likes fail a likes minimum)none
captionLanguageskeep only captions estimated in these languages (44 two letter codes)any
includeDetailsread each reel's details (likes, comments, date, music, location and more); off delivers what the search lists, fasteron
includeViewCountadd the reel's view counter from its embed page (one more read per reel, included in the Reel price)off
includeCreatorDetailsthe Creator profile add-onoff
maxCommentsPerReelthe Comment add-on: up to this many comments per reel (0 to 50)0
includePersonalDatafill mentions and taggedUsers, and keep links to Instagram, Facebook, Messenger, Threads or WhatsApp in the creator's website and bio links and in the keyword description's sourcesoff
maxRunSeconds, requestTimeoutSecs, maxRetriesa time limit, the request timeout (5 to 60 s) and retries per request (0 to 5)none, 30, 2
proxyConfigurationApify Proxy setting (see below)Apify Proxy

Keywords. A phrase (nail art), a #hashtag (searched as its word: Instagram itself redirects logged out visitors of tag pages such as /explore/tags/travel/ to the same popular search, and a tag page link is searched the same way), a link to an instagram.com/popular/<words>/ or instagram.com/explore/tags/<tag>/ page, or a Boolean keyword: AND, OR, NOT in capitals, parentheses, "quoted phrases" and -word; a space means AND; at most 10 OR branches. Each OR branch is searched, and a reel is delivered only when its caption, hashtags or username match the whole expression (whole words; a phrase also matches the same words run together, as in #nailart). Keywords are searched in Instagram's lower case form. Specific phrases ("wedding photographer", "keto recipes", "paris bakery") list more reels than single broad words; Instagram shows no public reels for some broad words ("coffee", "fitness") and screened words, and such a keyword gets a free no_reels row (turn on tryVariantsWhenEmpty to search "coffee ideas" and the like instead). An entry that is empty, a link of another kind, holds an @ (an e-mail address or a handle), looks like a token or API key, or repeats an earlier keyword is refused with one free row per reason that names its position (the value is never shown); the other keywords run.

Proxy. By default the Actor reads from its own server address first and moves a request type to Apify's datacenter proxy when Instagram refuses that address. Choose a proxy group or country to read only through Apify Proxy, or give your own proxy links. A residential group is read through the datacenter pool instead, at no extra cost, and a free status row says so.

Work that earns nothing. Searches that list nothing, filters no reel passes and calls Instagram answers badly cost time but deliver nothing. A run spends at most a small fixed amount of such work before its first charged reel, and more as it delivers; when it is spent the run stops with a free skipped row naming the keywords not searched (a test list of 150 keywords that all found nothing stopped after 31). A details read that Instagram keeps failing (half the reads of two rounds in a row) stops the run as instagram_failing, and the run's status message names Instagram as the failing side.

API examples

curl -X POST "https://api.apify.com/v2/acts/automation_craft~instagram-reels-search-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": ["nail art", "home bakery"], "maxReelsPerKeyword": 24, "minPlays": 10000}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('automation_craft/instagram-reels-search-scraper').call({ keywords: ['latte art'], sortBy: 'newest', postedSince: '30 days' });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((row) => row.type === 'reel').length);
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("automation_craft/instagram-reels-search-scraper").call(run_input={"keywords": ["dubai hotels"], "includeCreatorDetails": True})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
if row["type"] == "reel":
print(row["url"], row["playCount"], row["creator"])

What this Actor does NOT do

  • No share counts. Instagram shows a reel's share count only to logged in viewers; this Actor reads logged out only.
  • No transcripts or subtitles. Instagram serves no subtitle track to a logged out reader, and this Actor runs no speech to text and no outside AI service (no AI video descriptions either).
  • No hashtag feeds, stories, photo posts by keyword, or user, place and hashtag search. Hashtag feeds and stories need a login; a #hashtag is searched as its word on the popular search. Photo and carousel posts are left out (they are rare in the reel search). Accounts by keyword are a separate product.
  • No monitoring across runs. There is no memory of earlier runs and no "new reels only" mode; each run reads what Instagram lists at that moment. Schedule runs and deduplicate on code in your sheet or workflow.
  • No delivery into other apps and no custom code. The Actor writes only to its own dataset: it has no input that pushes rows into Notion, Todoist or other apps through connectors (Apify's integrations, webhooks and the API deliver the dataset anywhere), and it runs no mapping function you send (map the dataset in your own tool).
  • No logins, cookies or accounts of yours, and no Facebook play counts or paid partnership sponsors (Instagram serves neither to a logged out reader: the sponsor list was empty on all 20 paid partnership reels of our test runs).
  • No more than Instagram lists. About 96 reels per search; related searches, variants and creator reels widen a keyword.

FAQ

Can I search Instagram Reels by keyword?

Yes. Give your keywords and the Actor returns the public reels Instagram's own reel search lists for each one (about 96 per search), with plays, likes, comments and date on every row; related searches, variants and creator reels find more.

Can you search Instagram without an account?

This Actor does. It reads Instagram's public reel search and each reel's public page data without an account, cookies or login, so your own Instagram account is never involved.

Is there an Instagram search API?

Meta's official API offers hashtag search only to Business or Creator accounts, limited to 30 hashtags in 7 days, and no keyword reel search. This Actor works as a keyword reel search API: call it through the Apify API, a schedule, Make, n8n or Zapier.

How do I find Instagram reels with a minimum number of views?

Set Minimum plays (and Minimum likes or Minimum comments); reels under them are left out and never charged. Add Most played first to get the biggest reels of a keyword first.

How accurate is the caption language filter?

Instagram serves no language for a caption, so the Actor estimates it from the caption text with the franc library. It names a language only when the caption holds 40 letters or more and the result is clear: on 95 captions read by hand it named 94, and 90 of those right. About a third of captions get a language; the filter leaves out the others (short or mixed captions).

Why does this Actor run with limited permissions?

It needs no more: it reads Instagram's public pages and writes only to its own run's dataset and key-value store. Limited permissions keep it from touching anything else in your Apify account.

More data tools by Automation Craft

Changelog

See the Changelog tab: 0.1 (2026-10-27) is the first release.