TikTok Profile Scraper - Real Follower Stats, $0.35/1k
Pricing
Pay per event
TikTok Profile Scraper - Real Follower Stats, $0.35/1k
Real TikTok follower numbers, not the decoy stats other tools return. Paste any list of usernames and get followers, following, total likes, video count, bio, verified badge, avatar and profile URL. $0.35 per 1,000 profiles plus a $0.001 run-start fee, flat on every Apify plan.
Pricing
Pay per event
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
0
Monthly active users
13 hours ago
Last modified
Categories
Share
⚡ TikTok User Scraper — Profiles, Followers & Stats (No Login, No API Key, No Proxy)
Get full TikTok profile data without a login, API key, or proxy. Feed it usernames and get back followers, following, total likes (hearts), video count, bio, verified status, avatar and secUid — ideal for influencer discovery, creator vetting, lead lists and audience research. Export to JSON, CSV or Excel, call the API, or deliver to Notion. $0.35 per 1,000 profiles plus a $0.001 run-start fee, flat on every Apify plan — the cheapest TikTok profile scraper on the market.
No account. No proxy. Paste handles and run.
Why this scraper wins
- 🔓 Keyless & proxy-free — no login, no API key, no cookies to paste, and no proxy to buy. Paste handles, press Start.
- 🛡️ Real numbers, not degraded ones — TikTok serves rounded or decoy stats to clients it has flagged. This Actor is built so the follower, like and video counts match what you see on the profile page while logged in.
- 💸 One flat rate — $0.35 / 1,000 profiles plus $0.001 per run start. No volume tiers, no plan gates, and the cheapest rate on the market for this job.
- 🧾 Only successful look-ups are billed — misses, blocks, duplicates and empty runs cost nothing beyond the start fee.
- 🧹 Clean, flat records — one tidy object per profile, no nesting to unpack, ready for a spreadsheet or a CRM import.
- 📬 Built-in Notion delivery — push results straight into Notion via Apify connectors, zero code.
Input
| Field | Notes |
|---|---|
profiles | TikTok usernames to look up, with or without the @ (e.g. tiktok, @nba). |
startUrls | Or paste full profile URLs (https://www.tiktok.com/@tiktok); the handle is parsed out for you. |
proxyConfiguration | Off by default — this scraper needs no proxy. Only add one at very high volume. |
notionConnector | Optional. Deliver each profile to your connected Notion via Apify MCP connectors. |
notionParentId | Optional Notion database / data-source id to create the pages in. |
Mix profiles and startUrls freely in one run; duplicates are looked up once. Input field names follow
the conventions used across similar Actors, so switching over is usually a drop-in change — point your
existing input at this Actor and it will normally run as-is.
Input example
{"profiles": ["tiktok", "@nba", "khaby.lame"],"startUrls": ["https://www.tiktok.com/@zachking"]}
That run looks up four creators (the URL is reduced to the handle zachking) and returns four rows.
Output (one record per profile)
{"ok": true,"type": "profile","id": "107955","uniqueId": "tiktok","secUid": "MS4wLjAB...","nickname": "TikTok","signature": "Make every second count.","verified": true,"avatar": "https://p16-sign-va.tiktokcdn.com/....jpeg","followerCount": 94514481,"followingCount": 6,"heartCount": 460588561,"videoCount": 1536,"diggCount": 0,"url": "https://www.tiktok.com/@tiktok"}
Field reference
| Field | What it is |
|---|---|
ok | true on a real profile row, false on a diagnostic row — filter on this to split the two. |
type | Always profile for this Actor. |
id | TikTok's numeric user id. |
uniqueId | The @handle, without the @. |
secUid | TikTok's stable internal id for the account. It survives handle changes — store it if you plan to re-look-up a creator later. |
nickname | The display name shown above the bio. |
signature | The bio text, exactly as written, newlines included. |
verified | true for the blue check. |
avatar | Highest-resolution avatar URL TikTok exposes for the account. |
followerCount / followingCount | Follower and following totals. |
heartCount | Lifetime likes across all of the creator's videos ("Likes" on the profile). |
videoCount | Public videos currently on the profile. |
diggCount | Likes the creator has given out. Most accounts keep this private, so it is usually 0. |
url | Canonical profile URL, handy as a spreadsheet link column. |
Every field above comes from TikTok's own profile payload, so followerCount and heartCount are the
real totals rather than rounded or degraded figures.
When a handle doesn't resolve
You get an explicit diagnostic row instead of a silent gap. Diagnostic rows carry ok: false, an
errorCode, a human-readable error, and the profile that caused it:
{"ok": false,"errorCode": "NOT_FOUND","error": "The requested resource was not found (404) or is private/suspended.","profile": "handle_that_no_longer_exists"}
errorCode | Meaning |
|---|---|
NOT_FOUND | The username does not exist, or the account was removed or suspended. |
BLOCKED | The look-up was refused for that handle. Re-running usually clears it. |
RATE_LIMITED | Throttled mid-run after the built-in retries. Split the batch or re-run the misses. |
NETWORK | A transport error reaching the source. Transient; retry. |
NO_RESULTS | Emitted once, at the end, when nothing in the whole run resolved. |
None of these are charged, so feeding in a stale handle list costs you nothing for the misses — you only ever pay for rows that came back with real data.
Pricing
$0.35 per 1,000 profiles ($0.00035 each), plus $0.001 each time a run starts — flat on every Apify plan, including the free one. No volume tiers, no plan gates, and only successful look-ups are charged. This is the cheapest rate on the market for TikTok profile data.
| Profiles in the run | Per-profile cost | Start fee | Total |
|---|---|---|---|
| 10 | $0.0035 | $0.001 | $0.0045 |
| 100 | $0.035 | $0.001 | $0.036 |
| 1,000 | $0.35 | $0.001 | $0.351 |
| 10,000 | $3.50 | $0.001 | $3.501 |
Because the start fee is charged once per run, batching handles into one run is materially cheaper than looping one-handle runs: 100 handles in a single run costs $0.036, where 100 separate runs would cost $0.135.
Billing mechanics
Two events exist and nothing else bills:
- Actor start — $0.001, charged once when a run begins (per GB of memory; this Actor runs at 1 GB).
- Profile returned — $0.00035, charged the moment a real profile row is written to the dataset.
Diagnostics, duplicates, blocked look-ups and no-result runs never trigger the per-profile fee. A run that returns nothing costs only the $0.001 start fee.
Limitations — read before you scale
Stated plainly, because you should know them before you build on this:
- Look-ups are paced. The Actor deliberately spaces requests roughly one per second to stay well inside the source's limits. Expect around 45–50 profiles per minute; a 3,000-handle run takes about an hour. The default run timeout is 60 minutes, so split very large lists across runs (or raise the timeout in the run options).
- No videos here. This Actor returns profile records only. It does not return a creator's video list, comments, hashtags or search results — use the companion TikTok Scraper for those.
- No follower or following lists. TikTok does not expose the actual list of accounts behind
followerCount/followingCountwithout an authenticated session, and this Actor never logs in, so only the counts are available. - No emails or phone numbers. Only what a logged-out visitor can see on the profile: bio text,
counts, avatar, verified badge. If a creator writes their email into their bio it lands in
signature, but there is no separate contact field. diggCountis usually 0. Most accounts hide their liked-videos count; the field is reported as TikTok reports it rather than guessed.- Private and region-blocked accounts return
NOT_FOUNDorBLOCKEDrather than partial data. That is deliberate — a diagnostic row you can act on beats a half-populated row you might trust. - Counts are point-in-time. Follower numbers move constantly; re-run on a schedule if you need a trend rather than a snapshot.
- Empty input stops the run. If you supply neither
profilesnorstartUrls, the run stops immediately with aBAD_INPUTmessage and no per-profile fee is charged.
FAQ
Do I need a TikTok account, cookies, or a proxy? No. It is fully keyless and runs proxy-free by default. The proxy input exists only for very high-volume users who want to bring their own.
Why are the follower counts different from what other tools return? TikTok serves degraded or decoy stats to clients it has flagged. This Actor is built to avoid that, so the numbers match what you see on the profile page.
How many handles can I pass in one run? As many as you like — there is no cap in the input. Practical limits come from pacing and the run timeout (see Limitations). The start fee is charged once per run, so batching is always cheaper.
Can I schedule it? Yes. Apify schedules work normally — a daily run over the same handle list gives you a clean follower-growth time series in the dataset.
How do I get the data out? Download the dataset as JSON, CSV, Excel or XML from the run page, hit the
Dataset API from your own code, or set notionConnector to push each profile into Notion automatically.
What happens to duplicates? They are de-duplicated by handle before the look-up and again by
uniqueId after it, so you are never charged twice for the same creator in one run.
Want the videos too? Use the companion TikTok Scraper for videos, hashtags, comments and search.