TikTok Influencer Finder — Creator Search & Public Contacts avatar

TikTok Influencer Finder — Creator Search & Public Contacts

Pricing

from $5.00 / 1,000 results

Go to Apify Store
TikTok Influencer Finder — Creator Search & Public Contacts

TikTok Influencer Finder — Creator Search & Public Contacts

Find TikTok influencers by niche keyword, follower range, region and detected language. Export profiles, follower counts, bios and available public email or social contacts to CSV or JSON. Public-contact shortlisting, not hidden or verified email discovery.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Coor Yu

Coor Yu

Maintained by Community

Actor stats

0

Bookmarked

47

Total users

19

Monthly active users

an hour ago

Last modified

Share

Find TikTok influencers by niche keyword, follower range, region and detected language. Export creator profiles, follower counts, bios and available public email or social contacts to CSV, JSON or Excel for sponsorship shortlists and creator research. Discovery starts from keyword-matched public videos, rather than a complete influencer directory.

Test deployment: timeout guards (0.2 / timeout-test)

This isolated test version adds source-failure circuit breaking, stale-page detection, and a platform-deadline work budget. Use build=timeout-test explicitly; deploying this version does not promote it to latest.

Choose your influencer discovery workflow

GoalStarting configurationWhat to expect
Explore creators in a nicheExplicit keywords, onlyWithContact: false, small maxCreatorsPerKeywordCan include creators without a recognized contact; these retained rows are also billed.
Build a public-contact shortlistonlyWithContact: true (default)A recognized email or supported social contact, not an email on every row.
Find micro-influencersSet both minFollowers and maxFollowersInclusive follower range; unknown counts do not pass active bounds.
Narrow by market or languageAdd countries and/or languagesSource/heuristic signals, not verified residence, audience geography or calibrated language accuracy.

Start with one explicit keyword and 5 creators. Inspect the discovery evidence and contacts before expanding. This Actor does not reveal hidden emails, verify account ownership or delivery-test email addresses.

Discovery and filters

This live, HTTP-first Actor searches a third-party video feed and fetches authors' public TikTok profile HTML. There is no provided-data/mock mode, complete creator directory or independent niche-specialization check.

  • Country and language selections add localized query variants; the original keyword is retained.
  • keywordExpansion: "auto" adds related searches only when base/localized discovery falls short. Curated aliases take priority, followed by hashtags supported by at least two discovered authors and generic keyword suffixes.
  • broad accepts single-author hashtag evidence and more variants. off disables semantic expansion, but still uses country/language-localized queries.
  • All variants share the original keyword's output cap and candidate budget. Usernames are deduplicated across the run; an overlapping creator is not emitted again for a later keyword.
  • A keyword with no qualifying rows and a classified HTTP-source fault can trigger a TikTok Scraper child call while candidate/time/billing capacity remains. Normal empty results and a short list alone do not trigger it. At most one child is started per run; its wall-time/runtime and event budget are bounded, but it can incur additional platform costs. Residential fallback is disabled. Unknown START responses are never replayed; abort failures are reported as unconfirmed.
  • Profile source data and recent-video evidence use bounded, run-local caches (up to 1,000 entries each). Query attribution and language/region decisions are rebuilt for the current discovery context; failed requests are not cached. Already-saved creators are skipped before another profile download.
  • Profiles are consumed in discovery order with bounded lookahead. Recent-video evidence uses at most two concurrent requests, still sharing the original 2.2-second Tikwm request-start interval. Reaching the result/billing limit stops further dispatch and cancels no-longer-needed requests. The platform deadline also stops new work before the cleanup window; filters are never relaxed.

onlyWithContact: true requires a recognized email, Instagram, X/Twitter or YouTube contact; generic websites alone do not qualify. false also saves/bills contact-empty matches. Parsing uses bio/bio-link strings, without website crawling or email delivery checks.

Quick start

Paste this illustrative input into the Actor's Input tab:

{
"keywords": ["skincare"],
"maxCreatorsPerKeyword": 5,
"minFollowers": 1000,
"onlyWithContact": true,
"keywordExpansion": "auto"
}

For an API integration, save your JSON as input.json and use your Apify API token:

curl -sS -X POST \
"https://api.apify.com/v2/acts/HZzigBNpS4mTtXS8i/runs?build=timeout-test" \
-H "Authorization: Bearer ${APIFY_TOKEN}" \
-H "Content-Type: application/json" \
--data-binary @input.json

The response provides data.id and data.defaultDatasetId. Inspect completion/status/logs before exporting JSON, CSV or Excel. No TikTok login/API key is requested; Apify authentication and separately billed usage still apply.

Input reference

All fields are optional.

FieldDefaultSupported behavior
keywords20 common nichesString array; at most 50 trimmed, case-normalized unique keywords. An omitted or empty array uses built-in niches.
minFollowers / maxFollowers0 / 0Inclusive follower bounds; 0 disables that bound. Unknown counts are excluded when a bound is active.
maxCreatorsPerKeyword501–1000 output creators per original keyword, not per query variant; an upper bound, not a guaranteed count.
onlyWithContacttrueRequire one recognized public email or supported social contact.
keywordExpansionautoauto, broad or off; broader discovery may increase requests and runtime.
maxRelatedKeywords41–10 related keyword roots per original keyword.
countries[]Country/region codes such as US, GB, DE; unknown regions fail an active filter.
languages[]Content-language codes listed below; unknown or below-threshold detections fail an active filter.
minimumLanguageConfidencemediumhigh, medium, low; applied only with a language filter. low can accept profile-setting-only evidence.
maxConcurrency81–12 parallel public-profile requests; not the search-feed request rate.
maxRequestRetries20–3 retries for temporary HTTP/API failures.
proxyConfigurationdisabledLegacy field, ignored by this implementation.

Supported language codes: en, zh, es, pt, fr, de, it, ja, ko, ar, ru, hi, id, ms, vi, th, tr, bn, ur, nl, pl, uk, fil, fa.

Output and billing unit

One dataset row represents one retained creator. Useful fields include:

  • Identity/profile: username, nickname, userId, secUid, profileUrl, avatar, signature, bioLink, verified.
  • Source counts: followerCount, followingCount, videoCount, heartCount; unavailable values can be null. verified is the platform's badge flag, not this Actor's identity verification.
  • Contacts: email, emails, instagram, twitter, youtube, links, primaryContactType, primaryContact. Primary contact preference is email, then Instagram, X/Twitter, YouTube.
  • Discovery evidence: keyword, matchedQuery, expansionSource, matchedVideoText (up to 500 characters).
  • Targeting evidence: region, regionSource, language, languageConfidence, languageConfidenceScore, languageSource, profileLanguage, plus ISO scrapedAt.

Filtered, deduplicated rows use Actor.pushData and apify-default-dataset-item; excluded profiles have no result event. The first retained row is saved immediately, followed by batches of up to ten rows and a flush at each discovery-page boundary. Free/budget limits can truncate output. Zero saved creators causes failure. Incomplete discovery due to time/source/safety stops is marked PARTIAL and exits with a failed platform status while retaining previously confirmed rows. Normal source exhaustion may yield fewer than the requested maximum and still complete successfully. Billing/free-plan stops keep their distinct limit semantics. An uncertain dataset write stops the run without retry or child fallback to avoid duplicate result charges; previously confirmed writes remain saved.

Current pricing

EventFREE planBRONZE–DIAMOND plans
Creator dataset row$0.025$0.005
Actor Start$0.00005/event$0.00005/event

The startup event is charged per GB of allocated memory, with a minimum of one event per run—not one fixed fee at every memory setting. It can apply to empty or failed runs. Apify compute, transfer and storage are billed separately to the running user. Child Actor execution can add usage/event costs; a result-fee example is not an all-inclusive total. The Pricing tab is authoritative.

Developer-set Free-plan limit: at most 50 dataset rows globally per run, across all keywords. Paid plans have no developer-set 50-row cap, but input, safety, source and budget limits still apply. FREE is a plan label, not zero-priced results.

Reliability and interpretation

Discovery has a calculated ceiling of 5,000 candidates per keyword, 300 pages per HTTP query and up to 24 query variants (40 in broad). It can stop before exhaustion. Unavailable/blocked profile responses are skipped; exposed metadata does not grant private-content access, and retries/fallback do not guarantee completion.

Incremental saving makes confirmed results available before a whole keyword finishes; it does not guarantee a fixed speedup or prevent every timeout. Logs include request/retry counts, cache hits, first-save latency, stage timings and explicit completion reasons. Stage durations can overlap and must not be summed as wall-clock runtime.

Timeout guards in this test version

  • Two consecutive failed logical search requests open a run-shared circuit; each logical request may contain the configured HTTP retries. Explicit 403/429 blocks open it immediately. The circuit skips same-source expansion without sleeping; after at least 60 seconds (or a longer Retry-After), subsequent natural work may attempt one non-retried probe. Profile failures and valid empty responses do not increment the search-source failure streak.
  • A query stops after three consecutive pages with no new eligible-to-process unique usernames. This checks candidates, not saved rows; new candidates rejected by strict filters still count as progress. Other queries may continue. A stale/cursor/page-budget stop is not proof of source exhaustion.
  • Work uses the actual ACTOR_TIMEOUT_AT deadline, reserving up to 30 seconds for cleanup (20% of initially remaining time for short runs). Fetch/body reads, retries, throttle waits and evidence queues are cancellable. Without a platform deadline, no arbitrary one-hour cap is added.
  • Child fallback lifetime is tracked separately; known unfinished children get one bounded abort attempt. Server-side runtime limits remain the last safeguard if START/abort responses are uncertain.
  • Platform SDK requests have bounded timeouts and no implicit retries. This preserves PPE-aware writes but can fail faster during platform faults. Never blindly rerun an uncertain write or an entire failed job without inspecting its existing dataset.
  • The default key-value store receives RUN_SUMMARY when cleanup time permits, including per-keyword saved/requested counts, completion and stop reasons, unstarted keywords, source circuit and child status. Failed metadata persistence is explicitly logged. PARTIAL is summary text, not an Apify lifecycle enum; these incomplete runs exit FAILED rather than pretending to be complete successes.

These guards may reduce recall in stalled/faulty-source conditions. Compare target fulfillment, saved rows, zero-result rate and FAILED status alongside TIMED-OUT; a lower timeout rate alone does not demonstrate complete scraping.

Country signals are not verified residence/audience location. Discovery-region mismatches can be excluded before profile fetch; retained profiles prefer profile region. Uncertain signals may use up to five recent videos. Language confidence is heuristic, based on bio/captions and profile settings, not calibrated accuracy. Counts/order are source snapshots; scrapedAt is processing time.

Use public data responsibly, respect platform terms and privacy/anti-spam requirements, and manually verify contacts before outreach.

FAQ

Does every row include an email? No. The default filter accepts any supported contact, including a social handle. Extracted emails are neither guaranteed nor delivery-tested.

Will it return exactly my requested number? No. Limits cap output; source availability, overlap, strict filters, safety budgets and billing limits can reduce it.

Does off mean exact keyword-only search? No. It turns off semantic expansion, not localized variants or the upstream search engine's own matching behavior.

Micro-influencer search example

This illustrative request looks for skincare creators with 10,000–100,000 followers and a recognized public contact:

{
"keywords": ["skincare"],
"minFollowers": 10000,
"maxFollowers": 100000,
"maxCreatorsPerKeyword": 10,
"onlyWithContact": true,
"keywordExpansion": "auto"
}

The upper limit is not a promised delivery count. onlyWithContact accepts supported social contacts as well as email. To explore beyond that contact-qualified subset, deliberately set it to false and expect contact-empty matches to be saved and billed. Do not omit keywords unintentionally: the default searches 20 built-in niches.

Batch research, export and troubleshooting

  • Put multiple explicit niches in keywords only after testing one. Keyword variants share the original keyword's cap; overlapping creators are deduplicated across the run, so later keywords may have fewer rows.
  • For longer workloads, use the asynchronous /runs API shown above rather than waiting in a short-lived synchronous HTTP connection. Keep data.id and data.defaultDatasetId.
  • On https://api.apify.com, inspect GET /v2/actor-runs/{runId}, then export GET /v2/datasets/{datasetId}/items?format=json or ?format=csv with the same Apify authorization header and actual IDs. Inspect partial data before repeating a failed run.
  • To understand a small shortlist, review follower bounds, country/language evidence, recognized-contact requirements and candidate exhaustion before broadening the query. No filter is silently relaxed by this guidance.
  • For repeated exports, compare username, matchedQuery, expansionSource and scrapedAt. A returned public contact is a research lead requiring manual validation, not consent for unsolicited messaging.

Complementary Actors