TikTok Profile Videos Scraper
Pricing
from $1.50 / 1,000 video scrapeds
TikTok Profile Videos Scraper
Scrape public TikTok profile videos with captions, metrics, video URLs, music, hashtags, and creator metadata. Provider-backed, no cookies required, MCP ready.
Pricing
from $1.50 / 1,000 video scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
TikTok Profile Videos Scraper - Creator Feed Data
TikTok Profile Videos Scraper is an Apify Actor for audiences who already know the creator profile they want to inspect. It accepts one or more public TikTok profile handles or profile URLs and returns one normalized dataset row per video. Each record can include the caption, video URL, publish time, creator metadata, music metadata, hashtags, metrics, and media URLs such as play, download, and no-watermark links when returned by the provider. The result is a creator-feed dataset that is easy to use in spreadsheets, BI tools, and AI workflows through Apify MCP or the Apify API.
Best fit and connected workflows
This Actor fits workflows centered on public TikTok creator feeds:
- Creator research: gather public profile videos, captions, sounds, and engagement metrics from a known shortlist of creators.
- Influencer and brand monitoring: track profile-level video activity for public creator accounts.
- Content analysis: review hashtags, mentions, music, and posting patterns across a profile feed.
- Lead generation workflows: collect creator metadata for downstream qualification and enrichment.
- AI-agent pipelines: fetch structured profile-video rows through Apify MCP for summarization, extraction, or routing.
A natural workflow is to start with discovery Actors such as [TikTok Search Scraper - [Videos, Hashtags & Users]](the referenced Actor page) or TikTok Trending Videos Scraper, then pass verified public profile URLs or IDs into this Actor for profile-feed collection.
Practical scenario
Maya is building a weekly creator brief for a marketing team. She starts with a list of public TikTok handles, such as stoolpresidente, and submits them to the Actor with sortBy set to latest and a small maxVideosPerProfile value for a fast review.
The dataset returns rows that include caption, createdAt, playCount, likeCount, shareCount, musicTitle, and videoUrl. Maya spots a post with strong engagement and a relevant hashtag set, then passes the video URL to a reporting workflow for summary and follow-up.
Input
Use profileHandles with handles like nike, @nike, or profile URLs like https://www.tiktok.com/@nike. The other fields help shape feed ordering, pagination, and run size.
Input fields
| Field | Type | Default | Description |
|---|---|---|---|
profileHandles | array | required | Public TikTok creator handles or profile URLs. |
providerOrder | string | scrapecreators-first | Provider order. ScrapeCreators is the primary provider and SociaVault is the fallback. |
maxVideosPerProfile | integer | 50 | Maximum videos saved from each profile. |
maxPagesPerProfile | integer | 10 | Safety cap for provider pagination on each profile. |
maxTotalVideos | integer | 10000 | Maximum videos across the whole run. |
sortBy | string | latest | Profile feed order, either latest or popular. |
region | string | US | Alpha-2 region code used for provider requests. |
trim | boolean | true | Requests smaller provider payloads when supported. |
includeRawData | boolean | false | Attaches the original provider result to each dataset row. |
Focused input example
{"profileHandles": ["stoolpresidente"],"providerOrder": "scrapecreators-first","maxVideosPerProfile": 10,"maxPagesPerProfile": 1,"maxTotalVideos": 50,"sortBy": "latest","region": "US","trim": true,"includeRawData": false}
Output
Each dataset item represents one normalized TikTok profile video record. The schema is flat and consistent so downstream tools can read it without navigating nested provider payloads.
Output fields
| Field | Description |
|---|---|
recordType | Record category, set to a video row. |
sourceType | Request source, set to profile feed videos. |
provider | Public-data provider that returned the row. |
input | Original creator handle or profile URL used for the row. |
profileHandle | Requested creator handle. |
sortBy | Feed order used for the row. |
resultPosition | Position within the requested profile feed. |
page | Provider page number. |
videoId | TikTok video ID. |
videoUrl | Canonical TikTok video page URL when available. |
caption | TikTok video caption text. |
createdAt | Publish timestamp in ISO 8601 format when returned. |
authorUsername | TikTok creator handle. |
authorNickname | TikTok creator display name. |
authorVerified | Creator verification status when returned. |
authorAvatarUrl | Creator avatar URL when returned. |
authorFollowerCount | Creator follower count when returned. |
region | Region code returned for the video. |
language | Caption or description language code returned by TikTok. |
durationMs | Video duration in milliseconds when available. |
width | Video width in pixels when returned. |
height | Video height in pixels when returned. |
coverUrl | Static cover image URL. |
dynamicCoverUrl | Animated cover image URL when returned. |
playUrl | Direct signed TikTok play URL when returned. |
downloadUrl | Direct signed TikTok download URL when returned. |
noWatermarkUrl | No-watermark video URL when returned. |
hasWatermark | Whether the returned video URL appears to include a watermark. |
isAd | Whether TikTok marks the item as an ad. |
isPhotoPost | Whether the item is a TikTok photo carousel. |
imageUrls | Image URLs for photo posts when returned. |
playCount | TikTok play count. |
likeCount | TikTok like count. |
commentCount | TikTok comment count. |
shareCount | TikTok share count. |
collectCount | TikTok saves or collects. |
downloadCount | TikTok download count when returned. |
engagementRate | Approximate engagement rate from likes, comments, shares, and views. |
hashtags | Hashtag names attached to the video. |
mentions | Mentioned TikTok handles parsed from caption metadata. |
musicId | TikTok sound or music ID. |
musicTitle | TikTok sound or song title. |
musicAuthor | TikTok music artist or sound owner. |
musicOriginal | Whether the sound is marked as an original TikTok sound. |
scrapedAt | ISO 8601 timestamp when the row was normalized. |
rawResult | Original provider result when raw data is enabled. |
Illustrative output record
{"recordType": "video","sourceType": "profile","provider": "scrapecreators","input": "stoolpresidente","profileHandle": "stoolpresidente","sortBy": "latest","resultPosition": 1,"page": 1,"videoId": "7324105620095765765","videoUrl": "https://www.tiktok.com/@stoolpresidente/video/7324105620095765765","caption": "All right. Pizza review time","createdAt": "2024-01-14T23:51:05.000Z","authorUsername": "stoolpresidente","authorNickname": "Dave Portnoy","authorVerified": true,"region": "US","language": "en","playCount": 589745,"likeCount": 62522,"commentCount": 618,"shareCount": 3585,"collectCount": 1633,"engagementRate": 0.1132,"hashtags": ["pizza","review"],"mentions": ["barstoolsports"],"musicTitle": "Never Gonna Give You Up","musicAuthor": "Rick Astley","musicOriginal": false,"scrapedAt": "2026-07-08T10:30:00.000Z"}
How it works
This Actor uses provider-backed public-data endpoints instead of browser sessions. The live contract specifies ScrapeCreators as the recommended primary provider, with SociaVault available as a fallback. It accepts public profile handles or profile URLs, requests a creator feed in the selected sort order and region, normalizes each returned video into a flat dataset row, and records run-level details in the key-value store.
The dataset holds the normalized video rows. The run summary in RUN_SUMMARY captures provider diagnostics, counts, billing counters, and the stop reason.
Pricing
This Actor uses Pay per event pricing plus Apify platform usage.
apify-actor-startis charged once per run, scaled by allocated memory.video-scrapedis charged for each normalized TikTok profile video record saved to the dataset.
For the current event prices and Apify platform usage, check the live Pricing tab on the Actor page. As an example, a run that saves ten video records triggers ten video-scraped events plus one run-start event.
Use with AI agents (MCP)
This Actor is usable through Apify MCP. It is the Actor khadinakbar/tiktok-profile-videos-scraper, which returns normalized profile-feed video rows that AI agents can read directly from the default dataset.
Tool description: fetch public TikTok creator profile videos from handles or profile URLs, then return structured rows with captions, metrics, media URLs, music, hashtags, and creator metadata.
"Scrape the public TikTok profile feed for @stoolpresidente, return the latest 10 videos, and summarize the captions, engagement metrics, hashtags, and sound metadata for each row."
Output interpretation:
- Each dataset row represents one video record from a public creator profile.
providershows which public-data provider returned the feed page.videoUrl,playUrl,downloadUrl, andnoWatermarkUrlare media pointers returned when available.scrapedAtidentifies when the row was normalized.rawResultis available whenincludeRawDatais enabled.
Provenance and scope:
- Input is limited to public TikTok creator profile handles or profile URLs.
- The normalized records come from the provider response and are stored in the default dataset.
- The run summary in
RUN_SUMMARYprovides provider usage and billing context.
Pagination and cost guidance:
maxVideosPerProfilecaps how many rows are stored for each creator.maxPagesPerProfileacts as a pagination safety cap.maxTotalVideoscaps the entire run across all profile inputs.- For agent runs,
trim: trueandincludeRawData: falsekeep payloads smaller.
API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/tiktok-profile-videos-scraper').call({profileHandles: ['stoolpresidente', 'nike'],providerOrder: 'scrapecreators-first',maxVideosPerProfile: 20,maxPagesPerProfile: 2,maxTotalVideos: 100,sortBy: 'latest',region: 'US',trim: true,includeRawData: false,});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log('First item:', dataset.items[0]);
Best results and outcome guidance
Use a focused creator list when the goal is profile analysis. A smaller set of public handles makes it easier to compare captions, engagement counts, and posting patterns. When you need a quick review, keep maxPagesPerProfile low and set maxVideosPerProfile to the number of rows you actually plan to inspect. For agent workflows, sortBy: "latest" works well for monitoring fresh posts, while sortBy: "popular" is useful when the workflow centers on higher-performing feed items.
If your workflow begins with discovery rather than known handles, route discovery outputs from the linked search or trending Actors into this Actor using verified public profile URLs or IDs.
Continue the workflow
- Then use TikTok Search Scraper - Videos, Hashtags & Users to extend TikTok Profile Videos Scraper - Creator Feed Data research with a complementary discovery contract.
- Then use TikTok Shop Creators Scraper - Showcase Leads to extend TikTok Profile Videos Scraper - Creator Feed Data research with a complementary content contract.
Design note
I found that the dataset contract includes a normalized engagementRate field alongside playCount, likeCount, commentCount, and shareCount, which makes the output practical for downstream ranking and comparison without extra transformation.
FAQ
When should I use this Actor instead of a search Actor?
Use this Actor when you already have public creator handles or profile URLs and want the profile feed. Use a discovery Actor when you are still searching for accounts, hashtags, or videos.
Can I pass a TikTok profile URL instead of a handle?
Yes. The input accepts handles such as nike, @nike, and full profile URLs such as https://www.tiktok.com/@nike.
Which provider should I choose first?
ScrapeCreators is the recommended primary provider in the live contract, with SociaVault as fallback. You can also set provider-only modes for testing.
What output should I expect for AI workflows?
Each dataset row is one normalized video record with creator metadata, caption text, metrics, music fields, hashtags, and media URLs when returned. That shape works well for extraction, summarization, and routing in AI-agent pipelines.
Responsible use
This Actor is intended for public TikTok profile data. Use the output in line with applicable laws, platform terms, privacy obligations, and content rights. Handle direct media URLs with care because signed URLs can expire. When building automations, keep the run scope aligned with the creator profiles you actually need and review the live Pricing tab before large runs.