Instagram Search Scraper - Users, Hashtags, Places
Eimantas V · @amethyst
Search Instagram by keyword without logging in: profiles with exact followers, hashtags with post counts, places with addresses, and popular reels.

About
Instagram Search Scraper searches Instagram the way its search box does: enter a keyword and get matching profiles (with exact follower counts), hashtags (with post counts), places (with address, phone and coordinates) or popular reels (with plays, likes and comments). No login, no API key, no browser.
profile zing.coach Zing Fitness Coach 180,267 followers facebook.com/ZingFitnessCoach
hashtag #streetfoodindia 1.5M posts frequent
place Bakeshop Praha Bakery · Kozi 918/1, 110 00 · +420 222 316 823 · 50.0897, 14.4224
reel instagram.com/reel/DH_6ylByiUa @mikeyteetimes 7.1M plays · 104,305 likes · 334 comments
1,315 profiles for 5 keywords in 59 seconds; 220 hashtags in 7 seconds; 450 popular reels with full details in about 2 minutes.
What does Instagram Search Scraper do?
Instagram Search Scraper turns keywords into Instagram data. Pick one search type per run, add as many keywords as you like, and set how many results you want for each. Each row says which keyword found it, so one run can research a whole niche, city or product category.
- Profiles by keyword. Accounts matching your words, with exact follower counts, the verified badge, category and the linked Facebook Page. Turn on Profile details for the bio, emails and phones from the bio, website links, following and post counts, and engagement over the 12 latest reels.
- Hashtags by keyword. Up to hundreds of hashtags per keyword with their exact post counts and a frequent / average / rare label, for picking hashtags that fit your reach.
- Places by keyword. Restaurants, shops, venues and other locations with address, postal code, phone, category, price range, coordinates, opening status and their top posts.
- Popular reels by keyword. The reels Instagram shows as top results for a keyword, with plays, creator and caption. Turn on Reel details for likes, comments, exact date, music, location, tagged users and the newest comments.
- Related searches. When a keyword has fewer results than you asked for, the Actor also searches Instagram's own related keywords (cakes prague → chimney cake prague, cake prague) and keeps only those that still contain all your words.
- Clear errors, no duplicates. Keywords with no results or that Instagram refuses return an error row instead of failing the run, and results already delivered earlier in the run are skipped.
- Built for automation. Run it on a schedule, call it from the API, or connect it to an AI agent through the Bytewells MCP server.
Why it is fast and cheap
Instagram's own search box needs a login, so this Actor reads the public pages and endpoints that answer the same questions without one: Meta's advertiser search (it links Facebook Pages to their Instagram accounts and shows exact follower counts), Instagram's hashtag search, its public popular-reels pages and its location pages. Everything goes over plain HTTP from the platform's own addresses, with no browser and no paid proxy, so a search takes seconds and costs a fraction of a cent. Only the optional Profile details uses residential addresses, because Instagram shows full profiles to nobody else; it is the one option that adds residential proxy traffic to a run.
What data can you extract from Instagram search?
Every row starts with recordType (profile, hashtag, place or reel), searchTerm (your keyword as you typed it), matchedQuery (the keyword or related keyword that found it), searchSource, rank and url.
Profiles (search type "Profiles")
| Field | Example | What it is |
|---|---|---|
username | cakeshopprague | Instagram username |
fullName | CakeShop Prague | Display name (the linked Facebook Page's name until details are read) |
followersCount | 4525 | Exact follower count |
isVerified | false | Verified badge |
category | Coffee shop | Category of the linked Facebook Page |
facebookPageUrl, facebookPageLikes | facebook.com/cakeshopprague, 941 | The linked Facebook Page |
foundInReel | instagram.com/reel/DPm3nJDCdRw/ | For creators of the keyword's popular reels |
biography, emails, phones | 100% Vegan Bakery... Email [email protected] | With Profile details: bio and the contacts written in it |
followsCount, postsCount, isPrivate | 1540, 9891, false | With Profile details |
externalUrl, externalUrls | happyzoeveganbakery.com | With Profile details: the bio links |
avgReelLikes, avgReelPlays, engagementRate, reelsPerWeek | 15, 671, 0.058, 11.54 | With Profile details: from the 12 latest reels |
latestReels | 12 reels | With Profile details: plays, likes, comments, caption, date, media |
Hashtags (search type "Hashtags")
| Field | Example | What it is |
|---|---|---|
name | streetfoodindia | The hashtag, without # |
postsCount | 1575920 | Exact number of posts using it |
postsCountText | 1.5M posts | Instagram's rounded count |
popularity | frequent | frequent (1M+ posts), average (100k-1M) or rare (under 100k) |
Places (search type "Places")
| Field | Example | What it is |
|---|---|---|
name, category | Bakeshop Praha, Bakery | Place name and category |
address, zip, city | Kozi 918/1, 110 00 | Address as Instagram has it (city is usually empty: Instagram rarely fills it) |
phone, priceRange | +420 222 316 823, 3 | Phone, price range 1-4 |
lat, lng | 50.0897287, 14.42240711 | Coordinates |
postsCount, openingStatus | 3082, Open until 9:00 PM | Posts tagged there, opening status at run time |
instagramUsername, followersCount | cakeshopprague, 4525 | The place's own Instagram account, when it has one |
topPosts | 12-18 posts | The posts shown on its location page, with likes, comments, date and author |
Popular reels (search type "Popular reels")
| Field | Example | What it is |
|---|---|---|
url, shortCode | instagram.com/reel/DH_6ylByiUa/ | The reel |
ownerUsername, ownerIsVerified | mikeyteetimes, true | The creator |
playCount, timestamp | 7119750, 2025-04-03T21:00:00Z | Plays and publish time |
caption, hashtags, mentions | The best drill to perfect your backswing... | Caption and what it tags |
displayUrl, videoUrl | CDN links | Thumbnail and video file |
likesCount, commentsCount | 104305, 334 | With Reel details |
musicInfo, locationName, taggedUsers, coauthors | Sunny Bossa, Boston | With Reel details |
latestComments | 10-15 comments | With Reel details: the newest comments, with author, likes and date |
How to scrape Instagram search results
- Click Try for free and enter your keywords in Search terms, one per line (restaurant prague, fitness coach, #vegan). Instagram links work too: a popular page, a hashtag page or a location page.
- Choose the Search type: Profiles, Hashtags, Places or Popular reels.
- Set Results per search term and Max results, which caps the whole run.
- Click Start. Most searches take a few seconds per keyword. Read the results from the run's dataset as JSON.
How much does it cost to scrape Instagram search results?
One flat monthly rental, shown on this page, with a free trial. There is no per-result fee: scrape as many results as you need.
Runs use your credits for compute and proxy traffic, as every Actor does. Searches run from the platform's own addresses without a residential proxy; only the optional Profile details uses residential traffic. Measured on Bytewells: a profile search in 8 seconds at 1 GB for $0.0003 of credits.
Input
{
"searchTerms": ["restaurant prague", "coffee shop london"],
"searchType": "user",
"searchLimit": 50,
"maxItems": 1000,
"includeRelated": true,
"profileDetails": false
}
| Field | Default | Notes |
|---|---|---|
| Search terms | restaurant prague | Keywords, #hashtags or Instagram links, one per line |
| Search type | Profiles | Profiles, Hashtags, Places or Popular reels |
| Search terms (comma-separated) | empty | The same, as one line: inputs written for apify/instagram-search-scraper (search, searchType, searchLimit) work unchanged |
| Results per search term | 50 | Up to 1,000 |
| Max results | 1,000 | Total across all keywords |
| Related searches | on | Fills each keyword's limit from Instagram's related keywords |
| Profile details | off | Profiles only; reads each profile over the residential proxy |
| Reel details | off | Popular reels only; about a second per reel |
| Top posts of places | on | Places only |
Output
Each result is one row in the dataset. The dataset has a view per search type (Profiles, Hashtags, Places, Popular reels) and one for errors; every export includes all fields. A profile with Profile details:
{
"recordType": "profile",
"searchTerm": "vegan bakery",
"matchedQuery": "Vegan Bakery",
"searchSource": "popular-reels",
"rank": 12,
"username": "happyzoeveganbakery",
"url": "https://www.instagram.com/happyzoeveganbakery/",
"fullName": "Happy Zoe Vegan Bakery",
"followersCount": 25887,
"isVerified": false,
"category": "Dessert Shop",
"id": "538591747",
"facebookPageUrl": "https://www.facebook.com/happyzoeNY",
"facebookPageLikes": 16137,
"foundInReel": "https://www.instagram.com/reel/DPm3nJDCdRw/",
"dataLevel": "full",
"biography": "100% Vegan Bakery. Do you need a vegan birthday cake? Vegan Gluten free cake or cheesecake? Email [email protected]",
"followsCount": 1540,
"postsCount": 9891,
"isPrivate": false,
"externalUrl": "http://happyzoeveganbakery.com/",
"emails": ["[email protected]"],
"phones": ["+12019662263"],
"latestReelAt": "2026-11-02T15:33:36.000Z",
"avgReelLikes": 15,
"avgReelPlays": 671,
"engagementRate": 0.058,
"reelsPerWeek": 11.54
}
A keyword that finds nothing, or cannot be read, becomes a row with "recordType": "error" and an errorCode instead of failing the whole run:
errorCode | Meaning |
|---|---|
NO_RESULTS | Instagram has nothing for this keyword in this search type; try fewer or more general words |
NOT_FOUND | A pasted location link that does not exist |
BLOCKED / RATE_LIMITED | Instagram refused every address the run tried; run it again later |
SOURCE_CHANGED | Instagram or Meta changed a page this Actor reads; it needs an update |
Tips and limits
- Profiles and places are found by name. The search matches account and business names, so add the city or niche to the keyword (restaurant prague, dentist miami). Results whose name does not contain your words are left out.
- Places in one city. "hotel paris" returns hotels with Paris in their name, almost all in Paris; when a keyword's own places sit in one area, places from its related searches outside that area are left out. Names travel, though: "Cafe London" and "Bar New York" exist in many countries and all match those keywords. Filter on
latandlngwhen you need one city only. - About 250 profiles per keyword. The keyword, its related keywords, the creators of its popular reels and the keyword followed by each letter (coffee a, coffee b...) together give about 200-300 accounts for a broad word; a narrow keyword gives fewer.
- 12 popular reels per keyword page. Instagram shows logged-out visitors the top 12 reels of each keyword; related searches add 12 more per related keyword.
- Places need an address. Brands and online shops that match your words but have no address are skipped.
- Profile details are what Instagram shows logged-out visitors. Business emails and phones behind the profile's buttons stay hidden; the Actor returns the ones written in the bio and links. Private accounts have no reels to measure.
FAQ
Is it legal to scrape Instagram search results?
This Actor collects only data that Instagram and Meta show publicly, without logging in. Results can still contain personal data, which laws such as the GDPR protect. Scrape personal data only for a legitimate purpose, and ask a lawyer if you are unsure. Instagram and Facebook are trademarks of Meta; this Actor is not affiliated with or endorsed by them.
Can I use it through the API?
Yes. Every run can be started through the API and its dataset read as JSON. Runs can also be scheduled and can trigger webhooks.
Can AI agents use it?
Yes. Agents connected to the Bytewells MCP server can find and run this Actor as a tool.
Can I switch from apify/instagram-search-scraper?
Yes. Its input names (search as a comma-separated string, searchType with place, user, hashtag or popular, and searchLimit) work here unchanged. The output fields have their own names, listed above.
Why did I get fewer results than I asked for?
The keyword has fewer matches than your limit, or the run reached its timeout. The log says which, and nothing collected before that is lost.
Related scrapers
- Facebook Pages Scraper: emails, phones and followers of the Facebook Pages linked to the accounts you find.
- TikTok Video Scraper: the same research on TikTok.
Support
Missing a field, or found a keyword that does not work? Report it with the input you used, and it will be looked at quickly.
FAQ
- What can I search for on Instagram?
- Four search types: profiles (accounts with exact follower counts), hashtags (with post counts), places (with address, phone and coordinates) and popular reels for a keyword. It can also follow Instagram's related searches, and full profile details (bio, emails, reels) are available on request.
- Do I need an Instagram account or login?
- No. Searches use what Instagram and Meta show to visitors who are not logged in. No account, cookies or API key are needed, so nothing can be banned.
- How much does it cost?
- One flat monthly rental, shown on this page, with a free trial and no per-result fee. Runs use your Bytewells credits for compute; searches need no residential proxy, only the optional Profile details does. Measured on Bytewells: a profile search in 8 seconds for $0.0003 of credits.
- How many profiles can I get per keyword?
- About 200-300 for a broad keyword. The Actor combines the keyword, its related keywords, the creators of its popular reels and letter variants (coffee a, coffee b...). A narrow keyword gives fewer. Popular reels come 12 per keyword, plus 12 per related keyword.
- How do I find places in one city?
- Add the city to the keyword, for example "dentist miami". Places are matched by name, and names like "Cafe London" exist in many countries, so filter on lat and lng when you need one city only. Places without an address are skipped.
- Can I switch from apify/instagram-search-scraper?
- Yes. Its input names (search as a comma-separated string, searchType with place, user, hashtag or popular, and searchLimit) work here unchanged. The output fields have their own names.
- Can I use it through the API or from AI agents?
- Yes. Start runs through the Bytewells API (bytewells.com/docs/api), schedule them and read the dataset as JSON; webhooks work too. The API is Apify-compatible, so apify-client works with the Bytewells base URL. AI agents can run it as a tool through the Bytewells MCP server (bytewells.com/docs/mcp).
Input
Preview of the input form. Rent the Actor to fill it in and start runs from the console.
searchTermsOne keyword per line, e.g. restaurant prague, fitness coach, #vegan, nike. Instagram links work too: a popular page, a hashtag page, a keyword search or (for places) a location page.
searchTypeWhat to find for each keyword: profiles (accounts with followers), hashtags (with post counts), places (venues with address, phone and coordinates) or popular reels (Instagram's top reels for the keyword).
searchThe same as "Search terms", as one comma-separated line (restaurant, restaurant prague). Kept so inputs written for apify/instagram-search-scraper work unchanged. Use either field, or both.
searchLimitThe most results to return for each keyword. Instagram's own answer gives 10-15 profiles, up to 55 hashtags or 12 reels per keyword; related searches (below) fill the rest of this limit.
maxItemsStop after this many results in total, across all keywords. You pay per result, so this is also your cost cap for the run.
includeRelatedWhen a keyword has fewer results than your limit, also search Instagram's related keywords for it (cakes prague -> cake prague, chimney cake prague, ...), and for profiles the creators of its popular reels. Each row says which keyword found it. Off: only the keyword itself.
profileDetailsProfiles only. Adds the full profile to each account: bio, emails and phones from the bio, posts and following counts, links, business category, 12 latest posts and engagement rate. Charged as a separate event per profile read; slower.
reelDetailsPopular reels only. Opens each reel for likes, comments, exact date, duration, music, location, tagged users, collaborators and the newest comments. No extra charge; about one second more per reel.
placePostsPlaces only. Includes the place's top posts as Instagram shows them on its location page (caption, likes, comments, date, author). No extra charge.
The defaults are tuned for speed and cost. The Actor chooses its own addresses (this run's IP, then Apify datacenter proxy); there is nothing to configure.
maxConcurrencyHow many search terms are processed at the same time.
requestTimeoutSecsHow long to wait for one response before trying another address.
maxRetriesRetries for failed connections on the same address before moving to another one. Timeouts are not retried.
API
Bytewells speaks the Apify API. Existing integrations keep working: point apify-client at https://bytewells.com/api and use your Bytewells API token (Console → Settings → API access). The Actor ID is amethyst/instagram-search-scraper (or amethyst~instagram-search-scraper in URLs).
JavaScript · apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.BYTEWELLS_TOKEN,
baseUrl: 'https://bytewells.com/api',
});
const input = {
"searchTerms": [
"restaurant prague"
],
"searchType": "user",
"searchLimit": 50,
"maxItems": 1000,
"includeRelated": true,
"profileDetails": false,
"reelDetails": false,
"placePosts": true,
"maxConcurrency": 4,
"requestTimeoutSecs": 30,
"maxRetries": 1
};
const run = await client.actor('amethyst/instagram-search-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Python · apify-client
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["BYTEWELLS_TOKEN"], api_url="https://bytewells.com/api")
run_input = {
"searchTerms": [
"restaurant prague"
],
"searchType": "user",
"searchLimit": 50,
"maxItems": 1000,
"includeRelated": True,
"profileDetails": False,
"reelDetails": False,
"placePosts": True,
"maxConcurrency": 4,
"requestTimeoutSecs": 30,
"maxRetries": 1
}
run = client.actor("amethyst/instagram-search-scraper").call(run_input=run_input)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)HTTP · curl
curl -X POST "https://bytewells.com/api/v2/acts/amethyst~instagram-search-scraper/runs" \
-H "Authorization: Bearer $BYTEWELLS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchTerms":["restaurant prague"],"searchType":"user","searchLimit":50,"maxItems":1000,"includeRelated":true,"profileDetails":false,"reelDetails":false,"placePosts":true,"maxConcurrency":4,"requestTimeoutSecs":30,"maxRetries":1}'Runs are billed as compute from your credit balance. Paid Actors need an active rental or trial; otherwise the API answers 402 rental-required.
Related
More Actors from the same publisher.

Facebook Pages Scraper - Emails, Phones & Followers
Eimantas V · @amethyst
Scrape Facebook Pages by link, username or ID: email, phone, website, address, exact followers, category, rating and social links. No login or cookies.
Lead generationSocial mediaMarketing$19/mo7-day free trial
Facebook Posts Scraper - Pages, Profiles & Reactions
Eimantas V · @amethyst
Scrape posts from public Facebook Pages and profiles: text, date, reactions by type, comments, shares, video views and media. Date filters and new-post alerts.
Social mediaMarketingLead generation$19/mo7-day free trial
Instagram Profile Scraper - Followers, Posts & Emails
Eimantas V · @amethyst
Scrape Instagram profiles by username or URL: exact followers, following and posts, bio, links, emails and phones from bios, engagement rate, latest posts.
Social mediaLead generationMarketing$19/mo7-day free trial
TikTok Creator & Profile Scraper
Eimantas V · @amethyst
Scrape TikTok creator profiles in bulk: exact followers, likes and video counts, verified and business flags, Shop seller status, bio links and bio emails.
Social mediaMarketingLead generation$19/mo7-day free trial
Facebook Ads Library Scraper - Meta Ads, All Countries
Eimantas V · @amethyst
Scrape the Facebook Ads Library in any country: ad copy, images, videos, landing pages, CTAs, run dates and advertiser Pages. No login, no token needed.
MarketingSocial mediaBusiness$29/mo7-day free trial
Google Search Results Scraper - SERP API
Eimantas V · @amethyst
Scrape Google search results by keyword: organic results with ranks, places, top stories, knowledge panel, related searches, News and Videos. Any country.
SEO toolsMarketingLead generation$19/mo7-day free trial