TikTok Profile Scraper
parseforge/tiktok-profile-scraper
Social mediaLead generationOther
Scrapes TikTok profile metadata and optional video feeds by username or profile URL. Returns follower counts, bios, verified status, and nested video and comment data in a flat schema.
- Total users
- 43
- Monthly active
- 3
- Total runs
- 895
- Bookmarked
- 1
- Rating
- Not rated yet
- Last modified
- 12 days ago
Overview
TikTok Profile Scraper
Scrape TikTok profile data and recent videos for any list of usernames or profile URLs, up to a million profiles per run. Every profile returns follower counts, bio, verified status, and optional video feeds with play counts, likes, comments, music metadata, and hashtags. No login or API key. Export to CSV, JSON, Excel, or XML.
TikTok's official API requires a developer account, app review, and strict rate limits that throttle large-scale profile research. This Actor reads public profile pages directly, so you can feed it a list of usernames or profile URLs and get structured data back without any authentication. It handles millions of profiles per run and optionally dives into each profile's recent videos and their comments, all in one fixed schema.
| Who uses it | What they scrape TikTok for |
|---|---|
| Influencer marketing agencies | Build a database of creator profiles with follower counts, engagement rates, and recent content for campaign vetting. |
| Brand safety analysts | Audit a list of TikTok profiles for bio links, verification status, and content history before partnership decisions. |
| Social media researchers | Track profile growth, posting frequency, and content themes across a cohort of TikTok creators over time. |
| Recruitment teams | Identify niche creators by scraping profiles from a target list and filtering by follower range or content category. |
What it does
This Actor collects TikTok profile metadata and optional video feeds by username or profile URL, and returns each profile as a flat row with nested video and comment objects when enabled.
- ๐ค Profile metadata: username, display name, bio, follower count, following count, likes total, verified badge, and avatar URL.
- ๐ฌ Video scraping: enable to pull recent videos with play count, hearts, shares, comments count, music track, hashtags, and publish date.
- ๐ฌ Comment scraping: nested inside each video, collect comment text, author, and timestamp for deeper engagement analysis.
- ๐ Date filters: restrict videos to a custom date range with publishedAfter and publishedBefore so you only get fresh or historical content.
- ๐ข Engagement filters: set minimum and maximum hearts per video to isolate top performers or low-engagement outliers.
- ๐ Pinned post control: exclude pinned videos from results to focus on organic, chronological content.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with TikTok data
๐ Vet influencer rosters at scale.
An agency feeds a list of 500 TikTok usernames, enables video scraping with a 30-video limit, and exports follower counts, average hearts, and recent hashtags to score each creator for a beauty brand campaign.
๐ Audit brand safety across profiles.
A compliance team scrapes 200 profiles with video comments enabled, filters videos from the last 90 days, and reviews bio links and comment sentiment before approving a sponsorship deal.
๐ Track creator growth week over week.
A researcher runs the Actor weekly on the same 50 usernames, collects follower counts and video publish dates, and plots growth curves to identify rising TikTok personalities in the fitness niche.
๐ต Map music trends by creator.
A music label scrapes 100 dance-creator profiles with video scraping on, extracts music track names from the last 60 days, and spots which songs are gaining traction organically.
Why choose this scraper
| What you get | |
|---|---|
| No API key needed | Scrapes public profile pages directly, bypassing TikTok's developer registration and rate limits. |
| Bulk profile lists | Feed in up to a million usernames or URLs per run from a prefill or your own CSV. |
| Nested video data | Optionally collect recent videos per profile with play counts, likes, shares, and music metadata. |
| Comment depth | Enable comment scraping to pull text and author details nested inside each video object. |
| Fixed output schema | Every profile, video, and comment returns in a consistent structure ready for CSV, JSON, Excel, or XML export. |
How it compares
This Actor focuses on profile-list scraping with nested video and comment depth, while other TikTok scrapers emphasize hashtag or search-based discovery.
| Feature | ParseForge | TikTok Scraper | TikTok Data Extractor |
|---|---|---|---|
| Scrape by username list | Yes | Not listed | Yes |
| Nested video data per profile | Yes | Not listed | Not listed |
| Nested comment data per video | Yes | Not listed | Not listed |
| Video date range filters | Yes | Not listed | Not listed |
| Video engagement filters (min/max hearts) | Yes | Not listed | Not listed |
| Exclude pinned videos | Yes | Not listed | Not listed |
Configure the run
Drive the Actor from a list of TikTok usernames or profile URLs, and filters run as each video is read so only matches reach your dataset. The Input tab lists every parameter.
A first run with the defaults:
{
"profiles": [
"charlidamelio",
"addisonre",
"bellapoarch",
"zachking",
"khaby.lame",
"willsmith",
"kyliejenner",
"therock",
"selenagomez",
"arianagrande",
"billieeilish",
"mrbeast",
"doja.cat",
"mileycyrus",
"jasonderulo",
"jlo",
"shakira",
"taylorswift",
"kimkardashian",
"rihanna",
"nickiminaj",
"cardib",
"badbunnypr",
"dualipa",
"edsheeran",
"brunomars",
"kendalljenner",
"mariahcarey",
"justinbieber",
"ninaagdal"
],
"maxItems": 10
}
A larger pull:
{
"profiles": [
"charlidamelio",
"addisonre",
"bellapoarch",
"zachking",
"khaby.lame",
"willsmith",
"kyliejenner",
"therock",
"selenagomez",
"arianagrande",
"billieeilish",
"mrbeast",
"doja.cat",
"mileycyrus",
"jasonderulo",
"jlo",
"shakira",
"taylorswift",
"kimkardashian",
"rihanna",
"nickiminaj",
"cardib",
"badbunnypr",
"dualipa",
"edsheeran",
"brunomars",
"kendalljenner",
"mariahcarey",
"justinbieber",
"ninaagdal"
],
"maxItems": 200
}
Pricing
Pay-per-result: $0.01866 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $1.87 |
| 1,000 results | $18.66 |
| 10,000 results | $186.60 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the TikTok Profile Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to TikTok through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/tiktok-profile-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results for some profiles?
Check that the profiles are public and the usernames are spelled correctly. Private or deleted accounts will be skipped. Review the run log for per-profile warnings.
Why are my video counts lower than expected?
The maxVideosPerProfile setting caps how many videos are collected per profile. Also, date filters and minHearts/maxHearts will further reduce the count. Try raising the cap or widening the filters.
The run is taking a long time with many profiles.
Scraping videos and comments adds significant time per profile. For large lists, start with includeVideos disabled to get profile metadata quickly, then re-run with video scraping on a smaller subset.
I enabled comments but don't see them in the output.
Comments are nested inside each video object, not at the profile level. Expand a video row in your dataset to find the comments array. Also verify maxCommentsPerVideo is set above zero.
Why do I get a 'cannot read properties' error in my integration?
Some profiles may have missing fields if TikTok's page structure changes. Use optional chaining in your code when accessing nested fields like videos or comments, and check the raw JSON output for the exact structure.
FAQ
| Question | Answer |
|---|---|
| Do I need a TikTok account or API key to use this? | No. The Actor reads public profile pages directly, so no login, API key, or developer registration is required. |
| Can I scrape private TikTok profiles? | No. Only public profiles are accessible. If a profile is set to private, the Actor will skip it and log a warning. |
| How many profiles can I scrape in one run? | You can set maxItems up to 1,000,000 profiles per run. The Actor processes them sequentially and respects platform rate limits automatically. |
| What video data do I get when I enable includeVideos? | Each video returns play count, hearts, shares, comments count, music track name and artist, hashtags, publish date, and a direct video URL. |
| Can I filter videos by publish date? | Yes. Use publishedAfter and publishedBefore in YYYY-MM-DD format to restrict videos to a specific date window. |
| How do comments work in the output? | When includeComments is enabled, each video object contains a nested comments array with comment text, author name, and timestamp. You control the depth with maxCommentsPerVideo. |
| What format does the data export to? | The Actor outputs to CSV, JSON, Excel, or XML. Nested video and comment data is stored as arrays within each profile row. |
| Can I scrape only profiles without videos? | Yes. Keep includeVideos set to false, and the Actor returns only profile-level metadata: username, bio, follower count, following count, likes total, and verified status. |
| How do I input a list of profiles? | Paste TikTok usernames (with or without '@') or full profile URLs into the profiles field. The Actor normalizes them automatically. |
| Does this Actor handle TikTok rate limiting? | Yes. It includes built-in delays and retry logic to stay within TikTok's acceptable request patterns and avoid blocks. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by TikTok Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| profiles | array | List of TikTok usernames or profile URLs to scrape (e.g. 'charlidamelio', '@khaby.lame', 'https://www.tiktok.com/@bellapoarch') | ["charlidamelio","addisonre","bellapoarc |
| maxItems | integer | Maximum number of profiles to collect per run. | 10 |
| includeVideos | boolean | Scrape recent videos for each profile. Videos are nested inside each profile's output. | false |
| maxVideosPerProfile | integer | Maximum number of videos to scrape per profile | 30 |
| publishedAfter | string | Only include videos published after this date (YYYY-MM-DD format) | not set |
| publishedBefore | string | Only include videos published before this date (YYYY-MM-DD format) | not set |
| minHearts | integer | Only include videos with at least this many hearts/likes | not set |
| maxHearts | integer | Only include videos with at most this many hearts/likes | not set |
| excludePinned | boolean | Exclude pinned videos from the results | false |
| includeComments | boolean | Scrape comments for each video. Comments are nested inside each video. | false |
| maxCommentsPerVideo | integer | Maximum number of comments to scrape per video | 20 |
Pricing
from $13.99 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| Actor Start | Charged once when the run starts. | $0.005 |
| Result Item | Charged once per result collected. | $0.01399 to $0.01866 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~tiktok-profile-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
