TikTok Profile Scraper avatar

TikTok Profile Scraper

Pricing

from $0.94 / 1,000 profile extracteds

Go to Apify Store
TikTok Profile Scraper

TikTok Profile Scraper

Export public TikTok profiles by handle or URL: followers, likes, bios, links, verification, account settings, commerce and seller signals, profile ratios, live status, and recent videos when TikTok exposes them.

Pricing

from $0.94 / 1,000 profile extracteds

Rating

5.0

(1)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

3

Bookmarked

134

Total users

21

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

Export public TikTok profiles from handles or URLs with TikTok Profile Scraper. Collect follower and like counts, bios, verification, avatars, bio links, account settings, commerce signals and recent public video summaries when available.

Use profile rows for creator research, CRM enrichment and comparing account snapshots. Download JSON, CSV or Excel, or read the dataset from your app. TikTok can withhold fields or recent posts from logged-out requests.

Quick start

  1. Enter at least one TikTok handle or public profile URL.
  2. Start with one profile and turn off recent videos if you only need account data.
  3. Run the Actor, then open its dataset to view or export results.
{
"handles": ["tiktok"],
"maxProfiles": 1,
"includeRecentVideos": false
}

Use handles, profileUrls, or both. The Actor combines and deduplicates valid targets.

Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.

Ready-to-run examples

Choose an existing public example, then adjust its targets and limits before running it.

What you get

  • One row per profile: Account identifiers, display name, bio, avatar, verification and public bio link.
  • Public account metrics: Follower, following, like and video counts, plus derived profile ratios.
  • Additional public signals: Region, language, account settings, commerce category, seller status and live-room information when exposed.
  • Optional recent posts: Nested video and slideshow summaries with engagement, captions, music and media fields when available.
  • Availability context: Recent-post status and warnings in profile rows, with skipped-target reasons in RUN_SUMMARY.

Who is it for?

  • Creator researchers reviewing visible public profile signals.
  • Partnership teams enriching known creator records with bios and public links.
  • Brand analysts retaining dated account snapshots for their own comparisons.
  • Data and AI developers joining structured profile and optional post summaries.

How you can use the data

  • Enrich the existing TikTok account target. Use handle tiktok with a one-profile cap and recent videos off. Keep canonical profile identity, bio link and source-exposed follower, like and video totals without inventing missing account data.
  • Review a small exposed-post preview. Use the existing @tiktok URL recipe with a one-profile cap and up to three recent summaries. Keep recentVideosStatus and warning beside caption and engagement fields: an empty array can mean unavailable or not requested rather than no posts.
  • Compare public creator snapshots in your own CRM. Use the existing natgeo and duolingo request examples with a two-profile cap and videos off. Retain scrapedAt with counts and derived ratios rather than treating a one-time snapshot as growth or independently verified campaign performance.
  • Keep durable video references for content notes. Retain permanent videoUrl values when exposed, since signed media, cover and music links can expire. Use the existing separate n8n workflows below for Sheets exports or your own repeated-snapshot comparisons and alerts. The Actor itself does not maintain those comparisons or collect a complete posting history.

Input settings

Supply valid targets in handles, profileUrls, or both. If no valid targets are supplied, the run succeeds with an empty dataset and a warning before extraction or the custom start charge. Invalid targets in a mixed batch are skipped while valid profiles are processed.

SettingJSON keyPurpose
TikTok handleshandlesUsernames with or without @.
TikTok profile URLsprofileUrlsPublic profile URLs as request objects.
Maximum profilesmaxProfilesLimit unique profiles to 1–500. Form default 5, omitted API value 50.
Include recent videosincludeRecentVideosRequest available summaries. Default true.
Maximum videos per profilemaxVideosPerProfileReturn up to 0–50 available summaries. Default 12. Zero skips lookup.
ConnectionconnectionModeChoose Direct or Automatic. See field help for defaults and saved settings.
Maximum concurrencymaxConcurrencyProcess 1–10 profiles in parallel. Default 3.
Processing deadlinerunTimeSecsBound processing to 30–270 seconds. Default 180.
Saved/API proxy settingsproxyConfigurationExisting specialized connection settings. See input help.

Profile URL input recipe

{
"profileUrls": [{"url": "https://www.tiktok.com/@tiktok"}],
"maxProfiles": 1,
"includeRecentVideos": true,
"maxVideosPerProfile": 3
}

Output data

Each saved row represents a public profile. Optional values can be null or absent when TikTok does not expose them.

Illustrative shape only, not a measured account snapshot:

{
"profileUrl": "https://www.tiktok.com/@example",
"handle": "example",
"nickname": null,
"signature": null,
"followers": null,
"bioLink": null,
"recentVideosStatus": "not-requested",
"recentVideos": []
}
FieldDescription
profileUrlCanonical TikTok profile URL
handleTikTok username
userIdPublic TikTok user ID when available
secUidPublic TikTok secure user ID when available
nicknameDisplay name
signatureBio text
verifiedWhether the profile is verified
privateAccountWhether the account is private
secretPublic secret flag when available
regionProfile region when available
languageProfile language when available
avatarUrlProfile image URL
followersFollower count
followingFollowing count
likesTotal profile likes
videosCountPublic video count
diggCountDigg count when available
friendCountFriend count when available
bioLinkLink shown in the profile bio
shareTitlePublic profile share title
shareDescriptionPublic profile share description
accountCreatedAtPublic account creation timestamp when exposed
handleModifiedAt / nicknameModifiedAtPublic profile-change timestamps when exposed
commentSetting / duetSetting / stitchSetting / downloadSettingTikTok's public numeric account-setting values
commerceUser / commerceCategoryCommerce-account signal and category
tiktokSeller / isOrganizationSeller and organization flags
liveRoomId / isLivePublic live-room signal
likesPerVideoTotal likes divided by public video count
followerFollowingRatioFollowers divided by following count
recentVideosAvailable / recentVideosCountWhether TikTok exposed video summaries and how many were returned
recentVideosStatusavailable, not-requested, no-public-posts, or unavailable so an empty list is not mistaken for zero posts
recentVideosSourceSource of the returned summaries when available
recentVideosWarningExplanation when recent posts could not be returned
recentVideosOptional recent video or slideshow summaries with engagement, media, hashtag, mention, and music fields
scrapedAtTimestamp of extraction

Recent video summary fields

When TikTok makes recent posts available through either public route, each recentVideos entry can include:

GroupFields
Identity and timingvideoId, permanent videoUrl, description, createdAt, textLanguage
EngagementplayCount, diggCount, commentCount, shareCount, collectCount
Content flagsisAd, isPinned, hashtags, mentions
Video metadataduration, width, height, ratio, format
Media linkscoverUrl, dynamicCoverUrl, originalCoverUrl, playUrl, downloadUrl, imageUrls
MusicmusicId, musicTitle, musicAuthor, musicOriginal, musicDuration, musicPlayUrl, musicCoverUrl

The Actor can recover a small public video preview when the usual recent-post request is unavailable. A preview may contain fewer summaries and fewer engagement fields than your requested maximum; missing values are not estimated.

recentVideosStatus distinguishes available summaries, a deliberate opt-out, no public posts and unavailable summaries. An empty list alone does not establish that an account has no posts. RUN_SUMMARY in the key-value store reports saved profiles, skipped targets and reasons.

Download your results

Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.

See Apify's download and export guide for the available formats and field options.

Pricing

This Actor uses pay-per-event pricing. One start event is charged when a valid run begins after connection setup. One profile event is charged for each saved profile. Skipped targets do not incur a profile event. A run with no saved profiles can still incur the start charge.

Recent videos are nested in profile rows and are not separately charged as video rows. Use maxProfiles to limit profile results. Optional-video settings and the processing deadline bound additional work. Apify platform usage may also apply.

See the live Pricing tab for current rates and discounts.

Tips for best results

  • Start with one profile. Confirm that the available fields meet your needs before submitting a larger list.
  • Disable recent videos for account enrichment. Set includeRecentVideos to false when you only need account-level fields.
  • Keep video requests small. Increase maxVideosPerProfile only when you need more available summaries.
  • Check availability status. Review recentVideosStatus and warnings before interpreting missing posts.
  • Compare saved snapshots yourself. Repeated runs collect fresh observations, but change detection belongs in your workflow.

Limits and caveats

  • Public, logged-out data only. No private profile content, follower lists, login cookies or complete post-history export.
  • Availability varies by account and network access. Optional recent posts may be unavailable while a complete base profile is still saved.
  • Signed media, cover and music URLs can expire. Use permanent videoUrl values for durable references.
  • When TikTok explicitly marks an account private, any public profile metadata it exposes is returned with privateAccount: true and no restricted posts. If no usable public metadata is exposed, the target is reported unavailable.
  • Profiles explicitly restricted by TikTok's audience controls for logged-out viewers return no row and a login-required reason. This Actor does not bypass those controls or accept login cookies.
  • Proven unavailable targets can complete successfully with an empty dataset and per-target reasons. Inaccessibility alone does not prove privacy or deletion.
  • Useful mixed-batch rows are preserved when isolated extraction fails. A run with only unresolved extraction failures fails. Invalid input and essential storage or billing failures also fail.
  • Spending limits and the processing deadline can leave targets unprocessed. Review RUN_SUMMARY before assuming complete coverage. Start a new run for a fresh lookup rather than resurrecting a completed or interrupted run.
  • Public counts can differ from TikTok's app because of caching or delayed updates.

Automation and integrations

Save your settings for next time

Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.

Run on a schedule

Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.

Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.

Send results to your other tools

Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.

For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.

TikTok profile workflows for n8n

API usage

Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.

The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.

For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~tiktok-profile-scraper/runs' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"handles":["tiktok"],"maxProfiles":1,"includeRecentVideos":false}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/tiktok-profile-scraper').call({
handles: ['tiktok'],
maxProfiles: 1,
includeRecentVideos: false
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/tiktok-profile-scraper').call(run_input={
'handles': ['tiktok'],
'maxProfiles': 1,
'includeRecentVideos': False,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

MCP and AI agents

You can ask your AI assistant to collect data with TikTok Profile Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.

Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.

Easier setup with an Apify plugin

If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.

Use Apify AI in Console

Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's TikTok Profile Scraper. You can describe the data you want and ask questions about the results.

Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.

Choose your assistant

Connect just this scraper

To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/tiktok-profile-scraper"
}
}
}

Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.

Use Apify's general server

Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use TikTok Profile Scraper by Fetch Cat, or give it the identifier fetch_cat/tiktok-profile-scraper.

Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.

Example requests

  • “Use Fetch Cat’s TikTok Profile Scraper to retrieve @tiktok with a one-profile cap and recent videos off. Keep public bio, source links and available account counts without treating missing fields as zero.”
  • “Collect @natgeo and @duolingo public profiles with a two-profile cap and recent videos off. Keep collection times and available account metrics for my own comparison, without calculating built-in growth or accessing private analytics.”
  • “Retrieve @tiktok with a one-profile cap and up to 3 exposed recent video summaries. Keep permanent video links, captions, engagement and availability warnings without claiming a complete or guaranteed latest-post archive.”

Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.

Pay with x402

If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.

Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.

Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.

Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.

Other ways for agents to pay

Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.

This public, limited-permission Actor uses pay-per-event pricing and is eligible for the documented authenticated API/MCP route. Payment setup is provided by Apify, not implemented by this scraper.

This Actor is also part of the Creator & Content Intelligence MCP workflow kit.

FAQ

Does it require a TikTok login?

No. It collects publicly available data without an account cookie. TikTok may withhold optional posts or fields from logged-out access.

Can I use both handles and profile URLs?

Yes. Valid targets are combined and deduplicated before applying maxProfiles.

Is this a TikTok profile API alternative?

It provides structured public profile data through Apify's API and MCP. It is not TikTok's official API and does not provide private account access.

Does it return one row per video?

No. Each row is a profile. Available recent video summaries are nested in recentVideos.

Can I export CSV and track follower growth?

Export your dataset as CSV, JSON or Excel. For growth tracking, collect repeated snapshots and compare them in your own workflow.

What if I receive no profiles or no recent videos?

Check RUN_SUMMARY for target reasons and inspect recentVideosStatus for optional posts. Empty results do not establish that an account was deleted or private.

Can AI assistants run it, and what does it cost?

Use Apify's hosted MCP connection or the API examples above. Normal charges apply. Review the Actor's live Pricing tab before authorizing a run.

  • TikTok Hashtag Scraper — Collect public videos from hashtag feeds, with captions, creators and available engagement counts, when researching a campaign topic beyond one profile.
  • TikTok Video Scraper — Retrieve metadata for specific public TikTok video URLs when you need to inspect captions, creators and available engagement counts for selected posts.
  • TikTok Trends Scraper — Collect Explore topic categories and basic hashtag, sound or video URL records for planning research. These records are not measured popularity rankings.
  • TikTok Creative Center Top Ads Scraper — Collect TikTok Creative Center’s curated Top Ads, including ad text, creative links and available public performance indicators, for paid-creative research.
  • Instagram Stories & Highlights Scraper — Export accessible Instagram Stories and Highlights with media URLs and context for cross-platform content research. An authorized Instagram session cookie is required.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.

Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.

Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.

Made with care for curious people, AI agents and the possibilities in data. ♥