TikTok Public Profile & Video Scraper avatar

TikTok Public Profile & Video Scraper

Pricing

Pay per usage

Go to Apify Store
TikTok Public Profile & Video Scraper

TikTok Public Profile & Video Scraper

Extract public profile info and recent public video metadata from any TikTok username. No login, no API key, private accounts always skipped.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Proyecto Apify

Proyecto Apify

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Share

Give it any public TikTok username and get back structured profile and video data — no login, no API key, no bypassing privacy. Private accounts are detected and skipped with a clear log entry, never bypassed.

What it does

For each TikTok username or profile URL you provide, the Actor:

  1. Navigates to https://www.tiktok.com/@<username> with a realistic browser fingerprint (rotating User-Agent, viewport, locale) and Apify's proxy configuration.
  2. Extracts profile-level data: username, display name, bio, follower count, following count, total likes, video count, private/public flag, verified badge, avatar URL.
  3. If the profile is public and includeVideoDetails is true, scrolls the video grid to load up to maxVideosPerProfile videos and extracts per-video metadata: video URL, caption, view/like/comment/share counts, duration (seconds), publish date, and extracted hashtags.
  4. Deduplicates videos by URL within a single run.
  5. Detects and cleanly handles blocking states: CAPTCHA, login wall, rate limit, not-found, and private accounts — emitting a flagged row rather than crashing.

Input

FieldTypeDefaultDescription
usernamesarray<string>["tiktok"]TikTok usernames or full profile URLs (mixed input OK).
maxVideosPerProfileinteger20Cap on videos per public profile (1–200).
includeVideoDetailsbooleantrueIf false, returns profile-level data only.
resultsType"profiles" | "profiles+videos""profiles+videos"Output scope hint. "profiles" forces profile-only.
maxRequestRetriesinteger3Retries per failed profile page.
scrollDelayMsinteger1500Base delay between scrolls (jittered ±50%).
proxyConfigurationobjectResidential Apify proxyRequired for production runs. TikTok blocks datacenter IPs within a few requests.

Output

One dataset row per profile, schema declared in actor.json:

{
"username": "tiktok",
"displayName": "TikTok",
"bio": "Make Your Day",
"followerCount": 92000000,
"followingCount": 0,
"totalLikes": 350000000,
"videoCount": 200,
"isPrivate": false,
"isVerified": true,
"avatarUrl": "https://...",
"profileUrl": "https://www.tiktok.com/@tiktok",
"extractedAt": "2026-07-27T10:00:00.000Z",
"status": "ok",
"error": null,
"videos": [
{
"videoId": "7234567890123456789",
"videoUrl": "https://www.tiktok.com/@tiktok/video/7234567890123456789",
"description": "Best moments of the week #tiktok #fyp",
"hashtags": ["tiktok", "fyp"],
"viewCount": 1200000,
"likeCount": 89000,
"commentCount": 1200,
"shareCount": 4500,
"duration": 30,
"publishDate": "2026-07-20T12:00:00.000Z",
"coverUrl": "https://..."
}
]
}

Status field values: ok | private | captcha | login_wall | not_found | rate_limited | extraction_failed | request_failed.

Private accounts always produce a row with isPrivate: true, status: "private", error: "private account, no public data available", and an empty videos array.

Proxy configuration

TikTok is hostile to scraping from datacenter IPs. Use residential proxies for any non-trivial run:

{
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Each profile request uses a fresh browser context with a single-use session, so IP rotation happens automatically.

Privacy & compliance

  • Reads only publicly visible, non-authenticated data from TikTok's public web interface.
  • Never logs in, never sends cookies, never uses session tokens.
  • Never bypasses privacy controls, CAPTCHAs, or rate limits. Private accounts are detected and skipped.
  • Never performs engagement actions (no likes, follows, comments, video downloads).
  • For research, analytics, brand monitoring, and content analysis. You are responsible for complying with TikTok's Terms of Service and applicable law when using the extracted data.

Running locally

npm install
apify run # uses INPUT_SCHEMA.json prefill
apify run --input ./my-input.json