Instagram Creator Leads Scraper avatar

Instagram Creator Leads Scraper

Pricing

$4.00 / 1,000 lead results

Go to Apify Store
Instagram Creator Leads Scraper

Instagram Creator Leads Scraper

Find outreach-ready Instagram creators and business accounts by niche, hashtag, keyword, or seed profile. Export flat CSV-friendly leads with profile metrics, bio signals, recent activity, and contact hints.

Pricing

$4.00 / 1,000 lead results

Rating

1.0

(1)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

1

Bookmarked

46

Total users

7

Monthly active users

10 days ago

Last modified

Share

Finding the right Instagram creators takes hours of scrolling, tab-switching, and copy-pasting bios into a spreadsheet — and you still end up with a list of handles, not a list of leads.

Instagram Creator Leads Scraper finds accounts by keyword, hashtag, seed profile, or URL and returns one flat, CRM-ready row per lead: public contact details, follower and engagement metrics, posting activity, niche, location, and a transparent lead-quality score with the reasons behind it.

No Instagram login, no cookies, public data only — and your first 5 leads in every run are free.

Instagram Creator Leads Scraper

What does this actor do?

Instagram Creator Leads Scraper is an Apify Actor that discovers and exports Instagram creator and business account leads in a flat, stable, CSV-friendly format. It is designed for influencer discovery, outreach list building, creator sourcing, UGC prospecting, and local business prospecting.

Unlike generic Instagram scrapers, this actor is lead-generation-first — it finds commercially relevant accounts and outputs one clean lead per row, ready for CRM import, outreach, or analysis.

Each lead row includes:

  • Profile identity — username, full name, profile URL, user ID
  • Classification — account type, category, verified/business/creator flags
  • Bio signals — email hints, phone hints, WhatsApp hints, location hints, keywords
  • Audience metrics — followers, following, posts, size buckets
  • Engagement snapshot — average likes/comments/views, engagement rate, posting frequency
  • Lead quality — rule-based quality scoring with transparent reasons
  • Commercial context — niche classification, creator size class, brand safety flags
  • Geography hints — country, city, language derived from bio and profile data

How it works

  1. Discovery — Finds Instagram usernames via search engines, with a hosted-API fallback if those are blocked
  2. Enrichment — Fetches full public profile data via Instagram's public profile API (no login required)
  3. Analysis — Parses bios for contact hints, computes engagement metrics, scores lead quality
  4. Export — Outputs flat, CSV-friendly lead rows with all derived fields

The actor runs browserless — no Chromium, no page rendering. Every request is a direct HTTP call, which keeps runs fast and cheap.

Discovery modes

Keyword discovery

Search by niche terms to find matching Instagram accounts.

{ "searchTerms": ["beauty creator australia", "fitness coach sydney"] }

Hashtag discovery

Find active creators from hashtag-related searches.

{ "hashtags": ["ugccreator", "canberrafood", "beautycreator"] }

Seed account discovery

Start from seed accounts and discover related creators via bio keywords, category, and niche expansion.

seedDiscovery must be set to true — without it, usernames and profileUrls are enriched directly and no expansion happens.

{
"usernames": ["examplebrand1", "examplebrand2", "examplebrand3"],
"seedDiscovery": true
}

Direct profile enrichment

Enrich a list of known usernames or URLs into standardized lead rows.

{ "profileUrls": ["https://www.instagram.com/example/"] }

Mixed inputs are supported — all provided input types are processed in a single run.

Sample input

Example 1 — Keyword search for beauty creators in Australia

{
"searchTerms": ["beauty creator australia", "skincare influencer sydney"],
"maxLeads": 50,
"maxProfilesPerInput": 25,
"includeRecentPosts": true,
"recentPostsLimit": 6,
"deduplicateProfiles": true,
"sortBy": "relevance"
}

Example 2 — Mixed discovery with filters

{
"searchTerms": ["fitness coach melbourne"],
"hashtags": ["ugccreator"],
"usernames": ["examplebrand"],
"maxLeads": 100,
"maxProfilesPerInput": 30,
"includeRecentPosts": true,
"recentPostsLimit": 12,
"deduplicateProfiles": true,
"minFollowers": 1000,
"maxFollowers": 250000,
"requireBusinessOrCreator": true,
"requireExternalLink": false,
"requireEmailHint": false,
"sortBy": "engagement",
"proxyConfiguration": {
"useApifyProxy": true
}
}

Input reference

FieldTypeDefaultDescription
searchTermsstring[][] (Console prefills an example)Niche/market search phrases
hashtagsstring[][]Hashtags for discovery (with or without #)
usernamesstring[][]Direct usernames — or seeds, when seedDiscovery is on
profileUrlsstring[][]Direct profile URLs — or seeds, when seedDiscovery is on
seedDiscoverybooleanfalseTreat usernames/profileUrls as seeds and discover related creators from them. Off = enrich only the profiles you listed
maxLeadsinteger25Max total leads to return
maxLeadsPerSearchTerminteger25Max profiles per individual search term, hashtag or seed
maxProfilesScannedinteger500Safety cap on total profiles fetched, including ones your filters reject
analysisDepthstring"standard"profileOnly · standard (6 posts) · deep (12 posts) · custom
recentPostsLimitinteger6Posts to analyze — only used when analysisDepth is custom
deduplicateProfilesbooleantrueRemove duplicate profiles
minFollowers / maxFollowersintegerFollower range filter
minEngagementRate / maxEngagementRateintegerEngagement rate range, as a percentage (e.g. 2 = 2%)
minPostsCountintegerSkip near-empty and dormant accounts
contactRequirementstring"any"any · email · phone · whatsapp · externalLink · anyContact
validateEmailsbooleantrueMX + disposable check on extracted emails (no per-lead cost)
excludePrivateAccountsbooleantrueSkip private accounts (never billed)
excludeVerifiedAccountsbooleanfalseSkip blue-tick accounts
excludeUsernamesstring[][]Skip accounts already in your CRM — re-run weekly without paying twice
requireBusinessOrCreatorbooleanfalseOnly business/creator accounts
requireExternalLinkbooleanfalseOnly profiles with external link
requireEmailHintbooleanfalseSuperseded by contactRequirement
preferredCountrystringTwo-letter country code; also pins the proxy exit country
preferredLanguagestringTwo-letter language code (e.g. en, es, fr)
sortBystring"relevance"Sort: relevance, followers, engagement, recentActivity
proxyConfigurationobjectApify proxy settings

Renamed fields keep working: maxProfilesPerInput, countryHint, languageHint and includeRecentPosts are still accepted, so existing API calls and saved tasks do not break.

Output

Each lead row is flat and CSV-friendly — no nested JSON arrays. The output is organized into four views on Apify:

All Leads (default view)

Overview of every lead with key profile details, audience metrics, and quality signals.

All Leads table view

{
"username": "askellenbeauty",
"fullName": "Ellen Malone",
"profileUrl": "https://www.instagram.com/askellenbeauty/",
"accountType": "creator",
"categoryName": "Makeup Artist",
"isVerified": true,
"followersCount": 136241,
"followsCount": 1356,
"postsCount": 2350,
"followersBucket": "100k-250k",
"creatorSizeClass": "mid",
"biography": "Pro MUA, trust the process💄 🎨 Sydney ✈️ ADE Australia. Fashion and Beauty Creator of the Year 🏆 PR/enquiries: ellen@slpmgmt.com.au",
"externalUrl": "http://askellenbeauty.bio.link/",
"externalDomain": "askellenbeauty.bio.link",
"hasContactHint": true,
"hasExternalLink": true,
"leadQualityBucket": "high_intent",
"sourceType": "keyword",
"sourceInput": "beauty creator australia"
}

Lead Quality

Lead scoring details with quality bucket, reason, niche classification, and brand safety.

{
"username": "ruthxli",
"fullName": "Ruth | Australian UGC Creator",
"followersCount": 7886,
"followersBucket": "5k-10k",
"creatorSizeClass": "nano",
"accountType": "creator",
"isVerified": false,
"hasExternalLink": true,
"hasContactHint": true,
"hasContactValue": false,
"hasBusinessCategory": true,
"hasRecentActivity": true,
"leadQualityScore": 75,
"leadQualityBucket": "strong",
"leadQualityReason": "public|has_followers|has_link|contact_hint|has_category|professional_account|recent_activity|engagement_present",
"leadScoreVersion": "2.0",
"worksWithBrands": true,
"nichePrimary": "beauty",
"nicheSecondary": "entertainment",
"brandSafetyFlags": "none",
"sourceType": "keyword",
"sourceInput": "beauty creator australia"
}

Engagement

Recent post engagement metrics including likes, comments, views, engagement rate, and content format mix.

{
"username": "maddysbeautytalk",
"fullName": "Maddy | Beauty Content Creator 🌸",
"followersCount": 7582,
"avgLikesRecent": 157,
"avgCommentsRecent": 75,
"avgVideoViewsRecent": 197,
"maxLikesRecent": 245,
"maxCommentsRecent": 116,
"engagementRateApprox": 0.0306,
"engagementBucket": "average",
"engagementConfidence": 100,
"recentPostsAnalyzed": 12,
"latestPostTimestamp": "2026-07-21T10:02:25.000Z",
"daysSinceLatestPost": 2,
"recentPostingFrequencyBucket": "medium",
"recentPostsPerWeek": 3.49,
"reelShareRecent": 0.92,
"carouselShareRecent": 0.08,
"imageShareRecent": 0
}

Contact Details

Parsed contact values (email / phone / WhatsApp), a contactability rating, email-domain validation, external links, and geography for outreach.

{
"username": "askellenbeauty",
"fullName": "Ellen Malone",
"profileUrl": "https://www.instagram.com/askellenbeauty/",
"contactEmail": "ellen@slpmgmt.com.au",
"contactEmailSource": "instagram_bio",
"contactEmailConfidence": 85,
"contactEmailDomain": "slpmgmt.com.au",
"contactEmailDomainValid": true,
"contactEmailIsDisposable": false,
"contactEmailIsFreeProvider": false,
"contactPhone": null,
"contactWhatsApp": null,
"contactabilityScore": 42,
"contactabilityBucket": "direct",
"contactabilityReason": "bio_email|external_link",
"biographyHasEmail": true,
"biographyHasLocationHint": true,
"externalUrl": "http://askellenbeauty.bio.link/",
"externalDomain": "askellenbeauty.bio.link",
"countryHint": "AU",
"cityHint": "Sydney",
"languageHint": "en",
"categoryName": "Makeup Artist"
}

Full output record

Each lead contains all fields across all views. Here is a complete record:

discoveryMethod records which source actually found that particular creator, so it varies row to row within one run:

ValueFound by
instagram_searchInstagram's own search
external_searchWeb search fallback, when Instagram search is unavailable or thin
tikhub_searchPaid keyword-search fallback, used to top up a short result set
tikhub_hashtagPaid hashtag feed, in hashtag mode
direct_profileYou supplied the username or profile URL directly

A creator found by more than one source is credited to the first one that found it.

scanBudgetCappedByPlan is true when the Apify Free plan lowered this run's profile-scan budget. It describes the budget, not the result — see Free plan limitations.

Use cases

  • Influencer discovery — find creators in a specific niche for partnerships
  • UGC outreach — build lists of UGC creators by hashtag or keyword
  • Local business prospecting — find local businesses by search terms (e.g. "melbourne cafe", "sydney dentist")
  • Competitor research — discover creators similar to competitor accounts using seed mode
  • CRM import — export flat CSV directly into your CRM or outreach tool
  • Agency workflows — automate lead list building for client campaigns

Lead quality scoring

Every lead gets a leadQualityScore from 0–100, a leadQualityBucket, and a leadQualityReason explaining exactly which signals produced the number. The score and the explanation are derived from the same signal list, so they can never disagree.

Published rubric

SignalPointsMeaning
contact_value25A real, parsed email / phone / WhatsApp number
recent_activity15Posted within the last 45 days
professional_account12Business or creator account
has_followers10At least 100 followers
has_link10External link in bio
engagement_present10Measurable engagement on recent posts
has_category8Instagram business category set
contact_hint5Bio signals contact intent
public5Public account

Contactability carries the most weight because an unreachable lead cannot be outreached however good it looks on paper.

BucketScore
high_intent80–100
strong60–79
usable35–59
weak0–34

leadScoreVersion is emitted on every row (currently 2.0). If we change the rubric, that number changes — so a saved workflow thresholding on leadQualityScore can tell a scoring change from a market change.

Engagement is benchmarked by creator size

Engagement rate falls predictably as an audience grows, so engagementBucket compares each account against others of its own size, not against a fixed number. A 0.8% rate is below_average for a nano creator and average for a mega one.

Size classFollowerstopabove_averageaverage
nano< 10k≥ 8%≥ 4%≥ 2%
micro10k–100k≥ 6%≥ 3%≥ 1.5%
mid100k–500k≥ 3.5%≥ 1.8%≥ 0.8%
macro500k–1M≥ 2.5%≥ 1.2%≥ 0.5%
mega1M+≥ 2%≥ 1%≥ 0.4%

engagementConfidence (0–100) tells you how much to trust the figure — it rises with the number of posts analysed and falls when a single viral post distorts the average.

Contactability — can you actually reach them?

leadQualityScore answers "is this a good lead?". contactabilityScore (0–100) answers a different question: "can I reach them, and how directly?" A perfect-fit creator with no contact route is unworkable; a mediocre one with a business email can be pitched today. Sort by both.

BucketMeaning
directA usable email, phone or WhatsApp number is in the row
indirectOnly an external link, a DM invitation, or an email whose domain is dead
noneNo route at all

contactabilityReason lists the channels found. Emails sourced from Instagram's own business-contact field score higher than ones parsed out of bio text, and an address whose domain cannot receive mail is penalised rather than counted.

Email validation — domain, not mailbox

When validateEmails is on (default), each extracted address is checked for syntax, a disposable/throwaway provider, and whether its domain publishes MX records — i.e. whether it can receive mail at all.

FieldMeaning
contactEmailDomainThe domain part
contactEmailDomainValidDomain publishes MX records — null if the lookup was inconclusive
contactEmailIsDisposableKnown throwaway provider
contactEmailIsFreeProviderGmail, Outlook, etc. — not a negative, just useful for segmentation

This checks the domain, not the mailbox. It cannot tell you whether anyone reads that inbox, and no address is ever marked "verified" — confirming a mailbox requires intrusive SMTP probing we deliberately do not do. This adds no per-lead cost: it is DNS only, cached per domain for the run.

Brand collaboration — demonstrated, not stated

worksWithBrands tells you whether a creator has actually done disclosed commercial work, detected from disclosure markers in their recent captions — #ad, #sponsored, #gifted, [gifted PR], "paid partnership with", affiliate codes.

FieldMeaning
worksWithBrandsTrue / false — null when no captions were available
brandCollabPostsRecentHow many recent posts were disclosed collaborations
brandCollabShareRecentThat count as a share of analysed posts
recentBrandMentionsBrand handles from those posts, pipe-delimited
brandCollabEvidenceWhich markers matched, so you can audit the call
lastBrandCollabTimestampMost recent disclosed collaboration

This is evidence, not intent. A bio saying "DM for collabs" is a creator offering; #gifted on a post is proof they have already been booked, know how to disclose properly, and are used to working to a brief. Brand handles are only collected from posts already identified as commercial, so tagging a friend in a holiday photo does not register as a partnership.

Audience quality — signals to review, never a verdict

audienceQualityFlag surfaces statistical patterns associated with inflated audiences: engagement far below the norm for the account's size, follow/unfollow ratios, unusual comment-to-like ratios, large audiences with almost no posts, erratic per-post performance.

FlagMeaning
review_recommendedStrong signals — worth a manual look before outreach
minor_signalsSomething to note, not to act on alone
no_signalsNothing unusual detected
insufficient_dataToo small or too little engagement data to judge

This does not detect fake followers and must not be read as doing so. Every signal has an innocent explanation — a viral post, a revived dormant account, a niche where lurking is normal. audienceQualitySignals lists exactly what fired and audienceQualityConfidence reflects how much evidence backed it, so you can judge rather than take a verdict on trust.

Brand safety flags

brandSafetyFlags is a keyword-based triage signal, not a compliance decision. It scans the bio for terms associated with adult content, gambling, alcohol, tobacco/vaping, weapons, and crypto-promotion, and returns a pipe-delimited list of categories matched, or none. Because it is keyword-driven it produces both false positives (a bar review account flags alcohol) and false negatives (visual-only content is invisible to it). Treat it as a prompt to review a profile manually, never as an automated reject.

How much time this saves

TaskManualWith this actor
Find 50 niche creators4–6 hours~10 minutes
Pull follower + engagement figures~30 s per profileAutomatic
Read every bio for a contact emailCopy-paste per profileAutomatic
Filter by size, engagement, contactabilityEyeballingPre-filtered before you pay
Rank by fitSubjective0–100 score with reasons
Record where each lead came fromManual notessourceType / sourceInput per row

Proxy configuration

The actor works without proxy for small runs. Apify Datacenter proxy is the default and is enough for higher volume — the actor sends only small JSON requests.

{
"proxyConfiguration": {
"useApifyProxy": true
}
}

🚦 Proxy policy

Use Apify Datacenter proxy or no proxy for normal runs — both work reliably for Instagram profile/search JSON at this actor's conservative concurrency. The actor sends only small JSON requests — no images, no video, no page rendering — so bandwidth per run is tiny.

Apify Residential proxy is not supported. The actor will fail at startup if apifyProxyGroups includes RESIDENTIAL. Reason: in pay-per-event actors, residential bandwidth (~$8/GB) is billed to the developer, not the run user, so a single bandwidth-heavy run could exceed the per-result event revenue.

The exit country is pinned to US. An unpinned exit can land on an IP that Instagram serves a localized redirect to, which returns no data — pinning avoids that failure mode. This is independent of Preferred Country: that setting shapes result ranking and geo hints only, because Apify Datacenter has usable exit IPs in just a few countries and pinning to an unsupported one would fail every request.

If you genuinely need residential routing, supply your own residential provider via the proxy editor's Custom proxy URLs field — that traffic goes through your provider, not Apify, and is unaffected:

http://user:pass@proxy.iproyal.com:12321
http://user:pass@proxy.brightdata.com:22225
http://user:pass@proxy.oxylabs.io:7777

Pricing

Pay-per-event: you are charged per unique lead row, not for runtime, compute, or requests. See the Pricing tab for the current rate on your plan.

Your first 5 leads in every run are free

Every run has a free allowance covering its first 5 billable leads, so you can always check output quality before paying anything. Run 5 leads and you pay nothing at all.

What is and isn't billable

ChargedA unique lead row with real profile data
🆓 FreeThe first 5 billable leads of every run
Never chargedEmpty runs · failed runs · accounts not found · blocked or unavailable profiles · duplicates removed by deduplication · profiles filtered out by your criteria · private accounts with no usable data · error rows

Because charging happens per row written, a run that returns nothing costs nothing.

Free plan limitations

On the Apify Free plan, Max Profiles Scanned is capped at 100 (paid plans use whatever you set, up to 5,000). Nothing else changes — leads, filters, contact and email discovery, email validation, engagement and audience analysis, and scoring all run exactly as they do on a paid plan. Your first 5 leads are still free, on every plan.

Free planAny paid plan
Leads returned, filters, scoring, analysis✅ Unrestricted✅ Unrestricted
Contact + email discovery and validation✅ Included✅ Included
First 5 leads free every run✅ Yes✅ Yes
Max Profiles ScannedCapped at 100Up to 5,000

Why this and not a lead cap: we pay per profile fetched, but you pay per lead that passes your filters — so a very strict search can scan hundreds of profiles and return a handful. Capping the scan budget limits that case without limiting how many leads you get directly.

How many leads you actually receive depends on discovery yield and your filters, not on this cap alone — a search that only surfaces 30 profiles returns at most 30 leads whether the budget is 100 or 500. When the cap is genuinely what stopped a run, the log says so explicitly: Scan cap reached: N profiles fetched. Without that line, the cap was not the limiting factor.

If the cap binds, you'll see it in the log and in the run's status message — the run is never failed because of it.

Worked examples

RunLeads returnedBilled leads
Testing with maxLeads: 10100 — fully covered by the free allowance
Typical run, maxLeads: 252515
Larger run, maxLeads: 10010090
Run with strict filters100 scanned → 12 passed2
Search returns nothing00

Filtering happens before billing — profiles that fail your minFollowers, requireEmailHint or other criteria are never charged, even though the actor had to fetch them to evaluate them.

The actor also respects your Apify spending limit: when it is reached, the run stops gracefully and keeps everything collected so far.

This README deliberately quotes no currency amounts — rates vary by subscription plan and change over time. The Pricing tab is always authoritative.

FAQ

Why did I get fewer leads than maxLeads? maxLeads is a ceiling, not a target. Deduplication, your filters, private accounts and Instagram's rate limits all reduce the final count. Broader search terms and a higher maxProfilesPerInput both help.

Am I charged for leads that got filtered out? No. Filters are applied before billing. You are only charged for rows that actually appear in your dataset.

What happens if I hit my spending limit? The run stops gracefully and everything collected up to that point is kept and available for export.

Why is contactEmail empty for some leads? Not every creator publishes an email. We extract addresses from the public bio and from Instagram's business-contact field; when neither exists, the field is empty rather than guessed. Use requireEmailHint to keep only profiles with a contact signal.

Do I need an Instagram login or session cookies? No. This actor reads only public data and never asks for your credentials, so there is no risk to your Instagram account.

Do I need a residential proxy? No. The actor sends only small JSON requests, so Apify Datacenter proxy or no proxy is fine at any volume. Apify Residential is not supported (the run fails at startup); if you specifically need residential routing, supply your own provider via the proxy editor's Custom proxy URLs field.

Why does your engagement rate differ from other tools? engagementRateApprox is (avg likes + avg comments) ÷ followers, computed from the most recent posts only. Tools that sample different post counts, or include views, will report different figures. It is a comparison signal, not an audited metric.

Can I re-run weekly without paying for the same leads twice? Within a single run, deduplication guarantees one row per account. Across runs, keep your own list of already-seen usernames for now — a built-in suppression list is on the roadmap.

Known limitations

  • Public profiles only. Private accounts are detected and excluded from results (and never billed).
  • Engagement filters need engagement data. minEngagementRate / maxEngagementRate require recent-post analysis, so they reject profiles where no engagement could be measured. Setting analysisDepth: "profileOnly" together with an engagement filter will return nothing.
  • status on every row. Rows carry success / partial / private / not_found / blocked / error plus errorCode and errorMessage, so a bulk API caller can reconcile every input rather than inferring from an absent row.
  • Contact details are extracted, not verified. No mailbox, MX or deliverability check is performed. An extracted address is what the creator published publicly — it may be stale or unmonitored. contactEmailConfidence reflects the source: Instagram's own business-contact field scores higher than a value parsed out of free-text bio.
  • Location and language are inferred hints, not verified fields. countryHint, cityHint and languageHint are derived from bio text and profile signals. They can be incomplete or wrong, and are named "hint" for that reason.
  • Engagement is a sample. Metrics come from the most recent posts available on the profile, not lifetime history. Accounts with very few posts may return partial or empty engagement data.
  • Instagram rate limits apply. Large runs are paced deliberately to stay within them. This is why a 500-lead run takes considerably longer than 10× a 50-lead run.
  • Discovery breadth varies by niche. Specific phrases ("beauty creator australia") consistently outperform broad ones ("beauty").
  • Niche and brand-safety flags are heuristic — derived from bio text and category, and intended for triage rather than compliance decisions.

Integrations

Output is flat, one row per lead, so it drops straight into whatever you already use — no reshaping, no nested JSON to flatten.

Export formats: CSV, JSON, Excel (XLSX), HTML, JSONL, RSS.

Connect directly to: Google Sheets · Make · Zapier · Slack · Airbyte · GitHub · AWS S3 · Google Cloud Storage · Azure Blob Storage · Keboola · Webhooks.

Call it from code — the actor works with the standard Apify clients and the REST API:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('coregent/instagram-creator-leads-scraper').call({
searchTerms: ['beauty creator australia'],
maxLeads: 25,
contactRequirement: 'email',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("coregent/instagram-creator-leads-scraper").call(run_input={
"searchTerms": ["beauty creator australia"],
"maxLeads": 25,
"contactRequirement": "email",
})
items = client.dataset(run["defaultDatasetId"]).list_items().items

Recipe: a weekly creator pipeline into Google Sheets

  1. Create a Task with your search terms, contactRequirement: "anyContact" and your follower range.
  2. Schedule it weekly.
  3. Add a Google Sheets integration on the task so each run appends to your sheet.
  4. Paste the usernames you have already contacted into excludeUsernames so repeat runs return only new creators — and you are not billed for leads you already have.

Recipe: push new leads straight to your CRM

Add a webhook on the ACTOR.RUN.SUCCEEDED event pointing at your CRM or automation tool. The payload carries the dataset ID; fetch the rows and map contactEmail, fullName, profileUrl and leadQualityScore onto your contact fields. Use status == "success" to skip the non-billable status rows.

Tips for best results

  • Start small — test with maxLeads: 10 to verify results before running large batches
  • Use specific search terms — "beauty creator australia" works better than "beauty"
  • Enable recent postsincludeRecentPosts: true gives you engagement data for lead scoring
  • Use filters — set minFollowers to skip very small accounts, or requireBusinessOrCreator to focus on professional profiles
  • Proxy — Apify Datacenter proxy (the default) is enough even for large runs; Apify Residential is not supported

Local development

cd actor
npm install
npm start # Run with INPUT.json
npm run dev # Run with local storage