Instagram Keyword Search Scraper avatar

Instagram Keyword Search Scraper

Pricing

from $5.00 / 1,000 instagram profile founds

Go to Apify Store
Instagram Keyword Search Scraper

Instagram Keyword Search Scraper

Find public Instagram profiles by niche, brand, profession or local-business keyword. Rows include username, name, profile URL and matched keyword, plus bio, followers, category, verified and business flags, bio links and any email or phone in the bio when search returns them.

Pricing

from $5.00 / 1,000 instagram profile founds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

1

Bookmarked

184

Total users

24

Monthly active users

3 days ago

Last modified

Share

What is Instagram Keyword Search Scraper?

Find public Instagram profiles by niche, brand, profession or local-business keyword, and get one clean row per unique username. Each row has the username, display name, profile URL and the keyword that found it, plus the bio, follower count, business category, verified and professional flags, bio links and any public email or phone written in the bio when Instagram search returns them. No login or cookies are needed.

You giveYou getPrice
One or more keywords such as fitness coach or vegan bakery londonOne row per unique public profile with identity, bio, audience counts, category, flags, links and bio contacts$5 per 1,000 profiles (instagram-profile-found), plus Apify platform usage

Best fit for this Actor

Choose this Actor when your workflow starts with keywords and you need a list of matching public Instagram profiles: creators in a niche, local businesses in a city, or brands in a category. To add contact-button emails, recent posts and related profiles for the usernames you keep, continue with the Instagram Profile Scraper and pass the username values into its input.

A practical creator-discovery scenario

A partnership manager needs Italian and Latin American mid-tier fitness coaches (roughly a 10k to 100k audience). She runs the keywords fitness coach and personal trainer with minimumFollowers 10000 and maximumFollowers 100000. The Actor reads the search pages, skips profiles outside the range, deduplicates usernames across keywords and saves the matches. She sorts by followerCount, keeps the rows where hasContact is true, and sends the rest to the Instagram Profile Scraper for deeper enrichment.

Quick start input

{
"keywords": ["fitness coach", "vegan bakery london"],
"maxResultsPerKeyword": 20,
"minimumFollowers": 1000,
"maximumFollowers": 0,
"verifiedOnly": false,
"onlyWithContact": false,
"accountType": "all",
"includePrivateProfiles": false,
"outputMode": "full"
}
InputWhat it does
keywordsPhrases to search. Each phrase is searched on its own; profiles are deduplicated across the run. Up to 25 per run.
maxResultsPerKeywordCap on saved profiles per keyword (1–200, default 20).
minimumFollowers / maximumFollowersFollower range. maximumFollowers 0 means no upper limit.
verifiedOnlyKeep only verified accounts.
onlyWithContactKeep only profiles with a public email or phone in the bio.
accountTypeall, business or professional.
includePrivateProfilesKeep private accounts as identity-only rows.
outputModefull or compact (core identity, bio, contacts, counts and match fields).
maxProviderPagesAdvanced search depth: result pages read per keyword (default 3).

Profiles skipped by a filter are never charged.

What data you receive

FieldMeaning
username, fullName, profileUrl, profileIdPublic profile identity
biography, externalUrl, bioLinksPublic bio text and links
publicEmail, publicPhone, hasContactEmail or phone written in the public bio
followerCount, followingCount, mediaCountPublic counts; null when the search result did not include them
categoryName, isVerified, isBusinessAccount, isProfessionalAccount, isPrivatePublic account signals
matchedKeyword, matchedFrom, positionThe keyword that found the profile and its position
runId, scrapedAtRun and collection time

Example row from a real run (picture URL and links shortened):

{
"profileId": "2526981246",
"username": "saradp_fitnesscoach",
"fullName": "SARA DEL PRETE | FITNESS COACH",
"profileUrl": "https://www.instagram.com/saradp_fitnesscoach/",
"biography": "Fitness Coach & Personal Trainer (Info in Direct)",
"publicEmail": null,
"publicPhone": null,
"hasContact": false,
"bioLinks": [{ "title": "COACHING ON-LINE", "url": "https://saradelprete.taplink.bio/" }],
"externalUrl": "https://saradelprete.taplink.bio/",
"followerCount": 13461,
"followingCount": 1473,
"isPrivate": false,
"isVerified": false,
"isBusinessAccount": false,
"isProfessionalAccount": true,
"categoryName": "Personal Coach",
"matchedKeyword": "fitness coach",
"matchedFrom": "profile",
"position": 2
}

Instagram search sometimes returns only the username and name for a match. Those rows keep counts and bio as null rather than guessing; use the Instagram Profile Scraper to fill them in.

Run through the Apify API

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~instagram-keyword-search-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords":["fitness coach"],"maxResultsPerKeyword":20,"minimumFollowers":1000,"outputMode":"full"}'

Read the default dataset for profile rows and the default key-value store for OUTPUT and RUN_SUMMARY (outcome, counts and per-keyword coverage).

Use with AI agents through Apify MCP

Example prompt:

Find public Instagram profiles for "vegan bakery london" and "plant based cafe london" with a minimum follower count of 500. Return username, profile URL, bio, follower count, category and any public email or phone, then give me a shortlist of the 10 most relevant bakeries.

Give the agent the keywords, filters and a per-keyword cap. Ask it to keep matchedKeyword with each profile so the shortlist shows why each account was included.

Pricing

This Actor uses Pay per event plus Apify platform usage. Each unique profile saved to the dataset is one instagram-profile-found event ($5 per 1,000 profiles), plus a tiny apify-actor-start event per run. Example: 2 keywords × 20 profiles = 40 profiles ≈ $0.20 in profile events. Filtered and duplicate profiles are not charged. See the Pricing tab for current rates.

Best results

  • Use specific niche, profession, brand or location phrases; broad single words return mixed results.
  • Combine minimumFollowers and maximumFollowers to target a creator tier.
  • Turn on onlyWithContact when you only want profiles that list an email or phone in their bio.
  • Raise maxProviderPages when a keyword runs out of matches before maxResultsPerKeyword.

FAQ

Why did I get fewer profiles than I asked for?

Instagram search returns a limited number of matches per keyword, and your filters skip profiles outside the range. Raise the search depth, add related keywords, or relax the filters.

Does every profile include an email?

No. publicEmail and publicPhone are filled only when the address or number is written in the public bio. Contact-button details are not part of search results.

Can I search hashtags or places?

This Actor searches profiles by keyword. Use a hashtag or post Actor for hashtag feeds.

Builder's note

I designed deduplication around the normalized username because the same public profile often appears for several keywords and pages. Saving one row while keeping the keyword that found it gives agents a clean entity list and shows why each profile entered the workflow. Unknown counts stay null so a missing number is never mistaken for zero followers.

Responsible use

Collect public profile data you are authorized to access and follow applicable laws, Instagram terms, and privacy and marketing rules, including consent requirements for any outreach.