Instagram Creator Discovery Keyword Niche
Pricing
from $4.00 / 1,000 discovered accounts
Instagram Creator Discovery Keyword Niche
Pricing
from $4.00 / 1,000 discovered accounts
Rating
0.0
(0)
Developer
Delowar Munna
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Instagram Creator Discovery by Keyword / Niche

Find public Instagram creators and business accounts by keyword or niche. Export flat, CSV-friendly discovery results with profile metrics, bio signals, activity snapshot, follower buckets, and lead-fit fields for outreach, research, and creator scouting.
This is a discovery-first specialist actor — not a generic Instagram scraper. It turns niche ideas into structured account lists you can open in Google Sheets, Airtable, Notion, or a CRM without cleanup.
What it does
- Takes a list of keywords or niche phrases (e.g.
"fitness coach australia","melbourne beauty creator","sydney electrician"). - Runs an account search for each keyword (up to 50 accounts per keyword).
- Enriches each discovered account with lightweight public profile data (bio, followers, category, external link, etc.).
- Computes match signals (bio/name keyword match, business/creator/local signals), follower bucket, and a 0–100
leadFitScorewith a plain-EnglishleadFitReason. - Deduplicates the same account across multiple keywords and emits one flat row per account.
You can also skip the search and pass handles or profile URLs in seedUsernames — they're enriched and scored the same way.
Input
| Field | Type | Description |
|---|---|---|
keywords | string[] | Keywords or niche phrases to discover accounts for. Provide keywords, seedUsernames, or both. |
seedUsernames | string[] | Instagram handles or profile URLs to enrich directly, skipping search. |
maxResultsPerKeyword | integer | Cap per keyword (default 50, maximum 50). |
searchType | string | profile (default) or mixed. Both run the same account search. |
countryHint | string | Optional country hint for localSignal / locationHint heuristics. |
languageHint | string | Optional two-letter language hint. |
minFollowers / maxFollowers | integer | Follower-range filters (0 = disabled). See Filters and the lookup cap. |
requireBusinessSignals | boolean | Only keep accounts that look business/creator-like. |
requireExternalLink | boolean | Only keep accounts with a public external URL. |
includeProfileEnrichment | boolean | Fetch each account's public profile and recent posts (default true). Without it, rows carry only the search preview: no follower counts, bio or activity fields. |
dedupeAcrossKeywords | boolean | Default true. |
includeKeywordMetadata | boolean | Include keyword context fields on each row. |
maxConcurrency | integer | Profiles fetched in parallel (default 1, maximum 5). |
See input_schema.json for the full schema.
Example inputs
Two niche keywords plus one seed account, about 10 accounts each — the run behind the sample output and screenshot below:
{"keywords": ["fitness coach australia", "melbourne beauty creator"],"seedUsernames": ["kayla_itsines"],"maxResultsPerKeyword": 10,"countryHint": "Australia","languageHint": "en","includeProfileEnrichment": true,"dedupeAcrossKeywords": true,"includeKeywordMetadata": true,"maxConcurrency": 2}
Lead list for outreach — small-to-mid accounts that link out to a website or booking page:
{"keywords": ["sydney personal trainer", "brisbane yoga studio", "perth pilates instructor"],"maxResultsPerKeyword": 50,"countryHint": "Australia","minFollowers": 1000,"maxFollowers": 100000,"requireExternalLink": true,"includeProfileEnrichment": true,"dedupeAcrossKeywords": true}
Enrich known accounts only, no search:
{"keywords": [],"seedUsernames": ["@kayla_itsines", "https://www.instagram.com/bhanu_padmini/"]}
Output
One flat row per discovered account. Field groups (PRD §11):
- A. Discovery context:
inputKeyword,normalizedKeyword,searchType,resultRank,keywordResultPosition,discoverySource,discoveryTimestamp,runId - B. Account identity:
username,fullName,profileUrl,instagramUserId,isVerified,isPrivate,isBusinessAccount,categoryName - C. Profile summary:
biography,externalUrl,hasExternalUrl,profilePicUrl,followersCount,followsCount,postsCount,reelsCount,followersBucket - D. Niche / match:
matchedKeyword,bioKeywordMatch,nameKeywordMatch,keywordMatchType,nicheHint,businessSignal,creatorSignal,localSignal,locationHint - E. Activity / quality:
lastPostTimestamp,daysSinceLastPost,recentPostCount,recentReelCount,recentActivitySignal,engagementSnapshotAvailable,avgLikesRecent,avgCommentsRecent,engagementRateEstimate,contentFormatMix(best-effort, nullable) - F. Commercial / outreach:
contactabilitySignal,hasEmailInBio,hasPhoneInBio,externalUrlDomain,commercialIntentSignal,brandCollabSignal,leadFitScore,leadFitReason - G. Metadata:
scrapedAt,sourceType,actorVersion
Follower buckets
0-999 · 1k-4.9k · 5k-9.9k · 10k-49.9k · 50k-99.9k · 100k-499.9k · 500k+
Dataset views
Three ready-made table views are configured. Each one shows a different set of columns over the same rows; sort or filter by leadFitScore, isVerified or isBusinessAccount in the Console or your spreadsheet to narrow the list.
- Discovered Accounts — keyword context, identity, profile metrics, match signals and the lead-fit score
- Qualified Leads — outreach columns: category, followers, bio, external link, bio email/phone, score and reason
- Verified or Business Accounts — verification and business flags, category, followers and score
Discovered Accounts (from the example run above):

Sample output
One real row from the example run (profilePicUrl omitted for length):
{"inputKeyword": "melbourne beauty creator","normalizedKeyword": "melbourne beauty creator","searchType": "profile","resultRank": 11,"keywordResultPosition": 1,"discoverySource": "tikhub_v2_search_users","username": "bhanu_padmini","fullName": "Bhanu Karanam | Melbourne Beauty Creator","profileUrl": "https://www.instagram.com/bhanu_padmini/","instagramUserId": "8653260855","isVerified": false,"isPrivate": false,"isBusinessAccount": false,"categoryName": "Digital creator","biography": "🇮🇳 - 🇦🇺 \n Makeup, Skincare & Some Hair care. \n🫶🏻 Acne Prone With Scarring. \n💌 bhanukaranam9@gmail.com\n#acneproneskinapproved","externalUrl": "https://linktr.ee/Embraceyourself","hasExternalUrl": true,"followersCount": 3562,"followsCount": 3742,"postsCount": 336,"followersBucket": "1k-4.9k","matchedKeyword": "melbourne beauty creator","bioKeywordMatch": false,"nameKeywordMatch": true,"keywordMatchType": "exact","nicheHint": "Digital creator","businessSignal": true,"creatorSignal": true,"localSignal": false,"locationHint": null,"lastPostTimestamp": "2026-10-28T05:50:59.000Z","daysSinceLastPost": 0,"recentPostCount": 12,"recentReelCount": 6,"recentActivitySignal": true,"engagementSnapshotAvailable": true,"avgLikesRecent": 13,"avgCommentsRecent": 12,"engagementRateEstimate": 0.7,"contentFormatMix": "images:6|videos:0|reels:6","contactabilitySignal": true,"hasEmailInBio": true,"hasPhoneInBio": false,"externalUrlDomain": "linktr.ee","commercialIntentSignal": true,"brandCollabSignal": true,"leadFitScore": 80,"leadFitReason": "name matches keyword; exact phrase match; business signal; has external link","scrapedAt": "2026-10-29T02:02:22.417Z","sourceType": "instagram","actorVersion": "1.0"}
Activity fields are best-effort: an account whose recent posts aren't returned has null for lastPostTimestamp, recentPostCount, avgLikesRecent and the rest of group E. localSignal and locationHint are read from the bio (a 📍 pin, "based in …", or your countryHint), not from the username.
Filters and the lookup cap
The follower, link and business filters need each account's profile, so they apply after the profile is fetched. A run that fetches 25 profiles producing no row (filtered out or unavailable), and at least three times as many as it returns, stops looking up new profiles and skips its remaining keywords. Normal runs never reach this; very strict filters can return fewer accounts than exist. RUN_SUMMARY.workCap shows whether it applied. To get more accounts, loosen the filters or add more specific keywords.
Lead-fit score
leadFitScore is a 0–100 heuristic adapted from PRD §13. Positive signals: keyword match in name or bio, verified, business/creator signal, external link, strong follower range, recent activity. Negative signals: private account, empty bio, no keyword match, inactive account. leadFitReason is a short plain-English explanation — not a definitive quality truth.
Pricing
Pay-per-event:
- Discovered Account — one event per account row delivered to your dataset, after all filters pass. Accounts removed by your filters, duplicates across keywords, and profiles that could not be fetched are not charged.
- Actor start — Apify's standard start fee, charged by Apify when a run starts and scaled by the run's memory.
Your bill is the start fee plus charged_events × price_per_event. Live rates, which can differ by Apify plan, are on the actor's Pricing tab; this README deliberately doesn't quote figures.
Compliance
Only public Instagram data is used, retrieved through TikHub (a third-party Instagram data API). The actor does not:
- access private content
- bypass account permissions
- guarantee contact extraction
- automate outreach or messaging
Local development
cd actornpm install$env:TIKHUB_API_KEY = "<key>" # TikHub key; on Apify it comes from a secretnpm start # run with INPUT.jsonnpm run dev # run with local storage
Do not run apify push unless you are the repository owner deploying the actor — deployment is a manual step.