TikTok Creator Analytics Scraper avatar

TikTok Creator Analytics Scraper

Pricing

$0.01 / 1,000 creator analyses

Go to Apify Store
TikTok Creator Analytics Scraper

TikTok Creator Analytics Scraper

Analyze public TikTok creator profiles from handles or profile URLs. Get normalized identity, audience totals, recent post metrics, and TikTok Shop data when available in a structured dataset. Choose the recent post sample for each analysis.

Pricing

$0.01 / 1,000 creator analyses

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

📊 TikTok creator analytics for public profiles

For brands, agencies, campaign teams, and analysts, this Actor turns submitted TikTok handles or profile URLs into normalized creator analyses. You get profile identity, audience totals, recent post metrics, and available TikTok Shop data in a structured dataset. This keeps public reach and recent engagement together so you can compare creators with less manual work.

📈 Creator profile, post, and Shop analytics

What you get

Each successful dataset row combines public profile identity, audience totals, transparent recent-post calculations, sampled post evidence, and TikTok Shop fields when the source provides them. Source ranges and unavailable values stay as the source gives them. The row also includes analysis and source dates when available.

What this helps with

  • Compare followers, following, likes, video counts, and account context.
  • Review views, likes, comments, shares, averages, medians, and engagement rates for a chosen recent-post sample.
  • Open the sampled public post URLs and review their timestamps, text, and counters.
  • Join public profile and post signals with available Shop commerce, content, audience, and partnership fields.

▶️ Analyze a submitted TikTok creator list

Run steps

  1. Set Input type to Creator handles or Profile URLs.
  2. Fill the matching list with at least one public value. The other list is ignored.
  3. Choose how many recent public posts to sample, from 1 to 100. A smaller sample means less post data to review.
  4. Add an optional campaign or reporting-period label.
  5. Start the run and open the dataset link in the Output panel.

The Actor uses public TikTok access and does not require a buyer sign-in. It analyzes one submitted list of one value type in each run. It does not find creators by keyword.

⚙️ Input

Input fields

FieldTypeWhat it does
targetstringRequired. Choose handles or profileUrls. It selects which creator list is used.
creatorHandlesarrayEnter at least one TikTok handle. Each value may start with @ and may contain 1 to 24 letters, numbers, periods, underscores, or hyphens. This list is used when target is handles.
creatorProfileUrlsarrayEnter at least one public TikTok profile URL. Each item has a required url string. This list is used when target is profileUrls.
creatorProfileUrls[].urlstringA public URL that matches the TikTok profile URL format.
postSampleSizeintegerSets the number of recent public posts used for engagement calculations. The default is 20, with a minimum of 1 and a maximum of 100.
snapshotLabelstringOptional campaign or reporting-period label copied to the creator snapshot.

Input notes

Only the list selected by target is used. The matching list needs at least one value. A handle can use an optional leading @. A profile URL must use https://www.tiktok.com/@... or the matching www-free form. The sample size is bounded so the output shows how many posts were requested and how many were used.

Successful beta input

This is the public input from a successful current-beta QA run:

{
"target": "profileUrls",
"creatorProfileUrls": [
{
"url": "https://www.tiktok.com/@tiktok"
}
],
"postSampleSize": 1,
"snapshotLabel": "qa-coverage"
}

🧾 Output

Dataset link

The Output panel provides a link to the default dataset. Each successful row follows the creator analysis shape below. The shop object contains fields only when TikTok Shop data is available. snapshotLabel appears when you provide one. The top-level required fields are creator and analyzedAt.

Creator analysis fields

FieldTypeWhat it does
creatorobjectPublic profile identity and account context.
creator.handlestringCreator handle without the leading @ when returned.
creator.displayNamestringName shown on the creator profile.
creator.biostringBiography shown on the creator profile.
creator.profileUrlstringPublic TikTok profile URL.
creator.avatarUrlstringPublic profile avatar URL when available.
creator.regionstringSource region for the creator account when available.
creator.userIdstringStable TikTok account ID when the source provides it.
creator.isVerifiedbooleanWhether the source marks the account as verified.
creator.isPrivatebooleanWhether the source marks the account as private.
creator.createdAtstringAccount creation time when the source provides it.
audienceobjectPublic audience and account totals.
audience.followersintegerPublic follower total.
audience.followingintegerNumber of accounts followed by the creator.
audience.totalLikesintegerCumulative likes shown for the creator account.
audience.videoCountintegerNumber of public videos shown by the source.
recentPostsobjectAnalytics from a bounded sample of recent public posts.
recentPosts.requestedCountintegerNumber of recent posts requested for the sample.
recentPosts.usedCountintegerNumber of posts used in the calculations.
recentPosts.windowobjectTime range covered by the sampled posts.
recentPosts.window.fromstringOldest sampled post time.
recentPosts.window.tostringNewest sampled post time.
recentPosts.totalsobjectTotal engagement counters across sampled posts.
recentPosts.totals.viewsintegerTotal views across sampled posts.
recentPosts.totals.likesintegerTotal likes across sampled posts.
recentPosts.totals.commentsintegerTotal comments across sampled posts.
recentPosts.totals.sharesintegerTotal shares across sampled posts.
recentPosts.averagesobjectAverage engagement counters per sampled post.
recentPosts.averages.viewsnumberAverage views per sampled post.
recentPosts.averages.likesnumberAverage likes per sampled post.
recentPosts.averages.commentsnumberAverage comments per sampled post.
recentPosts.averages.sharesnumberAverage shares per sampled post.
recentPosts.mediansobjectMedian engagement counters across sampled posts.
recentPosts.medians.viewsnumberMedian views per sampled post.
recentPosts.medians.likesnumberMedian likes per sampled post.
recentPosts.medians.commentsnumberMedian comments per sampled post.
recentPosts.medians.sharesnumberMedian shares per sampled post.
recentPosts.engagementobjectEngagement rate and its calculation method.
recentPosts.engagement.ratePercentnumberEngagement rate as a percent.
recentPosts.engagement.basisstringCounter used as the rate denominator, such as views or followers.
recentPosts.engagement.formulastringFormula used to calculate the engagement rate.
recentPosts.postsarrayPublic posts used as evidence for the analysis.
recentPosts.posts[]objectOne sampled public post.
recentPosts.posts[].urlstringPublic URL of the sampled post.
recentPosts.posts[].publishedAtstringPost publish time when the source provides it.
recentPosts.posts[].textstringPost text or caption.
recentPosts.posts[].viewsintegerPublic view count for the post.
recentPosts.posts[].likesintegerPublic like count for the post.
recentPosts.posts[].commentsintegerPublic comment count for the post.
recentPosts.posts[].sharesintegerPublic share count for the post.
shopobjectTikTok Shop commerce, content, audience, and partnership data when available.
shop.commerceobjectTikTok Shop sales and attribution data for the source period.
shop.commerce.periodstringSource period for the commerce metrics.
shop.commerce.gmvobjectGross merchandise value from TikTok Shop.
shop.commerce.gmv.valuenumberExact GMV value when the source provides one.
shop.commerce.gmv.rangestringSource-published GMV range when no exact value is given.
shop.commerce.gmv.currencystringCurrency shown by the source.
shop.commerce.unitsSoldobjectUnits sold through TikTok Shop.
shop.commerce.unitsSold.valueintegerExact unit count when the source provides one.
shop.commerce.unitsSold.rangestringSource-published unit range when no exact count is given.
shop.commerce.commissionsobjectCommissions reported by TikTok Shop.
shop.commerce.commissions.valuenumberExact commission value when the source provides one.
shop.commerce.commissions.rangestringSource-published commission range when no exact value is given.
shop.commerce.commissions.currencystringCurrency shown by the source.
shop.commerce.gpmobjectGross profit margin reported by TikTok Shop.
shop.commerce.gpm.ratePercentnumberExact GPM percent when the source provides one.
shop.commerce.gpm.rangestringSource-published GPM range when no exact percent is given.
shop.commerce.attributionobjectCommerce performance attributed to TikTok Shop surfaces.
shop.commerce.attribution.videoobjectSource value attributed to videos.
shop.commerce.attribution.video.valuenumberExact video attribution value when provided.
shop.commerce.attribution.video.rangestringSource-published video attribution range.
shop.commerce.attribution.video.currencystringCurrency shown by the source for video attribution.
shop.commerce.attribution.liveobjectSource value attributed to live sessions.
shop.commerce.attribution.live.valuenumberExact live attribution value when provided.
shop.commerce.attribution.live.rangestringSource-published live attribution range.
shop.commerce.attribution.live.currencystringCurrency shown by the source for live attribution.
shop.commerce.attribution.showcaseobjectSource value attributed to the product showcase.
shop.commerce.attribution.showcase.valuenumberExact showcase attribution value when provided.
shop.commerce.attribution.showcase.rangestringSource-published showcase attribution range.
shop.commerce.attribution.showcase.currencystringCurrency shown by the source for showcase attribution.
shop.contentobjectTikTok Shop video and live content performance.
shop.content.periodstringSource period for content metrics.
shop.content.averageViewsobjectAverage views reported for Shop content.
shop.content.averageViews.valuenumberExact average view count when provided.
shop.content.averageViews.rangestringSource-published average view range.
shop.content.averageLikesobjectAverage likes reported for Shop content.
shop.content.averageLikes.valuenumberExact average like count when provided.
shop.content.averageLikes.rangestringSource-published average like range.
shop.content.averageCommentsobjectAverage comments reported for Shop content.
shop.content.averageComments.valuenumberExact average comment count when provided.
shop.content.averageComments.rangestringSource-published average comment range.
shop.content.averageSharesobjectAverage shares reported for Shop content.
shop.content.averageShares.valuenumberExact average share count when provided.
shop.content.averageShares.rangestringSource-published average share range.
shop.content.engagementRateobjectEngagement rate reported for Shop content.
shop.content.engagementRate.ratePercentnumberExact Shop engagement rate percent when provided.
shop.content.engagementRate.rangestringSource-published Shop engagement rate range.
shop.content.contentFrequencyobjectHow often the creator publishes Shop content.
shop.content.contentFrequency.postsPerWeeknumberExact weekly post rate when provided.
shop.content.contentFrequency.rangestringSource-published post rate range.
shop.content.contentFrequency.periodstringSource period used for content frequency.
shop.audienceInsightsobjectAggregate audience data reported by TikTok Shop.
shop.audienceInsights.followersobjectFollower total reported by TikTok Shop.
shop.audienceInsights.followers.valueintegerExact Shop follower total when provided.
shop.audienceInsights.followers.rangestringSource-published Shop follower range.
shop.audienceInsights.ageBandsarrayAudience age bands and their shares.
shop.audienceInsights.ageBands[]objectOne age band and its audience share.
shop.audienceInsights.ageBands[].ageRangestringAge band label from the source.
shop.audienceInsights.ageBands[].sharePercentnumberAudience share for the age band.
shop.audienceInsights.ageBands[].shareRangestringSource-published audience share range.
shop.audienceInsights.genderMixarrayAudience gender groups and their shares.
shop.audienceInsights.genderMix[]objectOne gender group and its audience share.
shop.audienceInsights.genderMix[].genderstringGender label from the source.
shop.audienceInsights.genderMix[].sharePercentnumberAudience share for the gender group.
shop.audienceInsights.genderMix[].shareRangestringSource-published audience share range.
shop.audienceInsights.topLocationsarrayTop audience locations and their shares.
shop.audienceInsights.topLocations[]objectOne audience location and its share.
shop.audienceInsights.topLocations[].locationstringLocation label from the source.
shop.audienceInsights.topLocations[].sharePercentnumberAudience share for the location.
shop.audienceInsights.topLocations[].shareRangestringSource-published location share range.
shop.partnershipsobjectProduct, brand, and promotion context from TikTok Shop.
shop.partnerships.productCategoriesarrayProduct categories linked to the creator.
shop.partnerships.productCategories[]stringOne product category.
shop.partnerships.categoryMixarrayProduct categories and their reported shares.
shop.partnerships.categoryMix[]objectOne product category and its share.
shop.partnerships.categoryMix[].categorystringProduct category.
shop.partnerships.categoryMix[].sharePercentnumberReported share for the category.
shop.partnerships.categoryMix[].shareRangestringSource-published category share range.
shop.partnerships.brandCollaborationsarrayBrands linked to the creator through Shop activity.
shop.partnerships.brandCollaborations[]objectOne brand collaboration.
shop.partnerships.brandCollaborations[].brandNamestringCollaborating brand name.
shop.partnerships.brandCollaborations[].productNamestringLinked product name when provided.
shop.partnerships.brandCollaborations[].productUrlstringPublic product URL when provided.
shop.partnerships.promotedProductsarrayProducts promoted by the creator when the source provides them.
shop.partnerships.promotedProducts[]objectOne promoted product.
shop.partnerships.promotedProducts[].productNamestringPromoted product name.
shop.partnerships.promotedProducts[].brandNamestringPromoted product brand when provided.
shop.partnerships.promotedProducts[].productUrlstringPublic product URL when provided.
shop.partnerships.promotedPostsarrayPerformance signals for promoted posts.
shop.partnerships.promotedPosts[]objectOne promoted post signal.
shop.partnerships.promotedPosts[].postUrlstringPublic URL of the promoted post.
shop.partnerships.promotedPosts[].viewsintegerPublic view count for the promoted post.
shop.partnerships.promotedPosts[].likesintegerPublic like count for the promoted post.
shop.partnerships.promotedPosts[].commentsintegerPublic comment count for the promoted post.
shop.partnerships.promotedPosts[].sharesintegerPublic share count for the promoted post.
analyzedAtstringTime when the creator analysis was completed.
sourceUpdatedAtstringSource update time when the source provides it.
snapshotLabelstringOptional campaign or reporting-period label for the snapshot.

Genuine current-beta row

This row came from the successful beta run with a 20-post sample. It is shortened only to keep the nested recentPosts.posts array small. The string value "..." marks the omitted real post array. All other shown keys, values, and order come from that public dataset row.

{
"creator": {
"handle": "tiktok",
"profileUrl": "https://www.tiktok.com/@tiktok",
"displayName": "TikTok",
"bio": "One TikTok can make a big impact",
"avatarUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/ba67b11de451691939223e9d978e613a~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=ef43bab7&x-expires=1787781600&x-signature=DsY%2Fj38TmXfpBfa5Lkc5yg5laQQ%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast8",
"userId": "107955",
"isVerified": true,
"isPrivate": false,
"createdAt": "2015-02-28T17:22:29.000Z"
},
"audience": {
"followers": 95400000,
"following": 0,
"totalLikes": 462900000,
"videoCount": 1494
},
"recentPosts": {
"requestedCount": 20,
"usedCount": 20,
"window": {
"from": "2026-07-17T22:10:04.000Z",
"to": "2026-08-20T15:22:21.000Z"
},
"totals": {
"views": 87327000,
"likes": 467307,
"comments": 45937,
"shares": 23057
},
"averages": {
"views": 4366350,
"likes": 23365.35,
"comments": 2296.85,
"shares": 1152.85
},
"medians": {
"views": 344250,
"likes": 10060.5,
"comments": 1492,
"shares": 633.5
},
"engagement": {
"ratePercent": 0.6141296506235185,
"basis": "views",
"formula": "(likes + comments + shares) / views * 100"
},
"posts": "..."
},
"analyzedAt": "2026-08-24T22:38:49.483Z",
"shop": {
"content": {
"averageViews": {
"value": 2573538.9
},
"engagementRate": {
"ratePercent": 11.8
}
},
"audienceInsights": {
"followers": {
"value": 94448876
}
}
},
"sourceUpdatedAt": "2026-06-22T00:00:00.000Z"
}

💳 Pricing

Creator analysis event

This Actor uses pay-per-event pricing. The Creator analysis event costs $0.00001 for each successfully returned normalized analysis of a public TikTok creator profile. There is no separate event for nested recent posts or available Shop fields. The local pricing contract does not describe a creator event for an unsuccessful or incomplete analysis.

🔌 Integrations

Dataset workflow

Use the dataset link from the Output panel after the run. This video shows an Apify workflow:

❓ FAQ

Why can the used post count differ from the requested count?

The row shows both requestedCount and usedCount, along with the sample window. The calculation uses the recent public posts available to the analysis.

Can I send handles and profile URLs in one run?

No. Choose one target value for the run and fill the matching list. The other list is ignored.

Does the Actor analyze private or login-gated data?

No. It uses public TikTok profile and post data. It does not bypass privacy controls or expose private Creator Center data.

Why are some TikTok Shop fields missing?

Shop fields depend on what the source publishes for a creator and period. The Actor does not promise every Shop field, region, or creator will have the same enrichment.

Are Shop sales values always exact?

No. When the source publishes a range, the output keeps that range. The Actor does not turn a range into an invented exact value.

Can I compare snapshots automatically?

No. snapshotLabel adds a campaign or reporting-period label to the row. The Actor does not keep cross-run history or calculate historical changes. Store datasets and compare them in your own workflow.

Does the Actor find creators for me?

No. Submit the TikTok handles or public profile URLs you want to analyze. Creator discovery and keyword search are outside this Actor's scope.

How is the recent engagement rate calculated?

The row includes ratePercent, basis, and formula. The basis can be views or followers, and the formula shows the counters used for that row.

Do I need a TikTok login?

No buyer sign-in is required for supported public profiles. Private or access-controlled data is not included.

📝 Changelog

0.0: Initial release

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré