# TikTok Creator Analytics Scraper (`maximedupre/tiktok-creator-analytics`) Actor

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.

- **URL**: https://apify.com/maximedupre/tiktok-creator-analytics.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Marketing, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.01 / 1,000 creator analyses

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 📊 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.

- Review a submitted creator's sales and content signals with **[TikTok Shop Analytics](https://apify.com/maximedupre/tiktok-creator-analytics/examples/tiktok-shop-analytics)**.
- Check another user's public profile with **[TikTok Analytics for Other Users](https://apify.com/maximedupre/tiktok-creator-analytics/examples/tiktok-analytics-for-other-users)**.
- Keep a repeatable view of creator metrics with **[TikTok Analytics Tracker](https://apify.com/maximedupre/tiktok-creator-analytics/examples/tiktok-analytics-tracker)**.
- Track a creator's public follower count with **[TikTok Follower Count Tracker](https://apify.com/maximedupre/tiktok-creator-analytics/examples/tiktok-follower-count-tracker)**.
- Check a creator's public stats with **[TikTok Analytics Checker](https://apify.com/maximedupre/tiktok-creator-analytics/examples/tiktok-analytics-checker)**.

#### 📈 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**

| Field | Type | What it does |
| --- | --- | --- |
| `target` | string | Required. Choose `handles` or `profileUrls`. It selects which creator list is used. |
| `creatorHandles` | array | Enter 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`. |
| `creatorProfileUrls` | array | Enter at least one public TikTok profile URL. Each item has a required `url` string. This list is used when `target` is `profileUrls`. |
| `creatorProfileUrls[].url` | string | A public URL that matches the TikTok profile URL format. |
| `postSampleSize` | integer | Sets the number of recent public posts used for engagement calculations. The default is 20, with a minimum of 1 and a maximum of 100. |
| `snapshotLabel` | string | Optional 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:

```json
{
  "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**

| Field | Type | What it does |
| --- | --- | --- |
| `creator` | object | Public profile identity and account context. |
| `creator.handle` | string | Creator handle without the leading `@` when returned. |
| `creator.displayName` | string | Name shown on the creator profile. |
| `creator.bio` | string | Biography shown on the creator profile. |
| `creator.profileUrl` | string | Public TikTok profile URL. |
| `creator.avatarUrl` | string | Public profile avatar URL when available. |
| `creator.region` | string | Source region for the creator account when available. |
| `creator.userId` | string | Stable TikTok account ID when the source provides it. |
| `creator.isVerified` | boolean | Whether the source marks the account as verified. |
| `creator.isPrivate` | boolean | Whether the source marks the account as private. |
| `creator.createdAt` | string | Account creation time when the source provides it. |
| `audience` | object | Public audience and account totals. |
| `audience.followers` | integer | Public follower total. |
| `audience.following` | integer | Number of accounts followed by the creator. |
| `audience.totalLikes` | integer | Cumulative likes shown for the creator account. |
| `audience.videoCount` | integer | Number of public videos shown by the source. |
| `recentPosts` | object | Analytics from a bounded sample of recent public posts. |
| `recentPosts.requestedCount` | integer | Number of recent posts requested for the sample. |
| `recentPosts.usedCount` | integer | Number of posts used in the calculations. |
| `recentPosts.window` | object | Time range covered by the sampled posts. |
| `recentPosts.window.from` | string | Oldest sampled post time. |
| `recentPosts.window.to` | string | Newest sampled post time. |
| `recentPosts.totals` | object | Total engagement counters across sampled posts. |
| `recentPosts.totals.views` | integer | Total views across sampled posts. |
| `recentPosts.totals.likes` | integer | Total likes across sampled posts. |
| `recentPosts.totals.comments` | integer | Total comments across sampled posts. |
| `recentPosts.totals.shares` | integer | Total shares across sampled posts. |
| `recentPosts.averages` | object | Average engagement counters per sampled post. |
| `recentPosts.averages.views` | number | Average views per sampled post. |
| `recentPosts.averages.likes` | number | Average likes per sampled post. |
| `recentPosts.averages.comments` | number | Average comments per sampled post. |
| `recentPosts.averages.shares` | number | Average shares per sampled post. |
| `recentPosts.medians` | object | Median engagement counters across sampled posts. |
| `recentPosts.medians.views` | number | Median views per sampled post. |
| `recentPosts.medians.likes` | number | Median likes per sampled post. |
| `recentPosts.medians.comments` | number | Median comments per sampled post. |
| `recentPosts.medians.shares` | number | Median shares per sampled post. |
| `recentPosts.engagement` | object | Engagement rate and its calculation method. |
| `recentPosts.engagement.ratePercent` | number | Engagement rate as a percent. |
| `recentPosts.engagement.basis` | string | Counter used as the rate denominator, such as `views` or `followers`. |
| `recentPosts.engagement.formula` | string | Formula used to calculate the engagement rate. |
| `recentPosts.posts` | array | Public posts used as evidence for the analysis. |
| `recentPosts.posts[]` | object | One sampled public post. |
| `recentPosts.posts[].url` | string | Public URL of the sampled post. |
| `recentPosts.posts[].publishedAt` | string | Post publish time when the source provides it. |
| `recentPosts.posts[].text` | string | Post text or caption. |
| `recentPosts.posts[].views` | integer | Public view count for the post. |
| `recentPosts.posts[].likes` | integer | Public like count for the post. |
| `recentPosts.posts[].comments` | integer | Public comment count for the post. |
| `recentPosts.posts[].shares` | integer | Public share count for the post. |
| `shop` | object | TikTok Shop commerce, content, audience, and partnership data when available. |
| `shop.commerce` | object | TikTok Shop sales and attribution data for the source period. |
| `shop.commerce.period` | string | Source period for the commerce metrics. |
| `shop.commerce.gmv` | object | Gross merchandise value from TikTok Shop. |
| `shop.commerce.gmv.value` | number | Exact GMV value when the source provides one. |
| `shop.commerce.gmv.range` | string | Source-published GMV range when no exact value is given. |
| `shop.commerce.gmv.currency` | string | Currency shown by the source. |
| `shop.commerce.unitsSold` | object | Units sold through TikTok Shop. |
| `shop.commerce.unitsSold.value` | integer | Exact unit count when the source provides one. |
| `shop.commerce.unitsSold.range` | string | Source-published unit range when no exact count is given. |
| `shop.commerce.commissions` | object | Commissions reported by TikTok Shop. |
| `shop.commerce.commissions.value` | number | Exact commission value when the source provides one. |
| `shop.commerce.commissions.range` | string | Source-published commission range when no exact value is given. |
| `shop.commerce.commissions.currency` | string | Currency shown by the source. |
| `shop.commerce.gpm` | object | Gross profit margin reported by TikTok Shop. |
| `shop.commerce.gpm.ratePercent` | number | Exact GPM percent when the source provides one. |
| `shop.commerce.gpm.range` | string | Source-published GPM range when no exact percent is given. |
| `shop.commerce.attribution` | object | Commerce performance attributed to TikTok Shop surfaces. |
| `shop.commerce.attribution.video` | object | Source value attributed to videos. |
| `shop.commerce.attribution.video.value` | number | Exact video attribution value when provided. |
| `shop.commerce.attribution.video.range` | string | Source-published video attribution range. |
| `shop.commerce.attribution.video.currency` | string | Currency shown by the source for video attribution. |
| `shop.commerce.attribution.live` | object | Source value attributed to live sessions. |
| `shop.commerce.attribution.live.value` | number | Exact live attribution value when provided. |
| `shop.commerce.attribution.live.range` | string | Source-published live attribution range. |
| `shop.commerce.attribution.live.currency` | string | Currency shown by the source for live attribution. |
| `shop.commerce.attribution.showcase` | object | Source value attributed to the product showcase. |
| `shop.commerce.attribution.showcase.value` | number | Exact showcase attribution value when provided. |
| `shop.commerce.attribution.showcase.range` | string | Source-published showcase attribution range. |
| `shop.commerce.attribution.showcase.currency` | string | Currency shown by the source for showcase attribution. |
| `shop.content` | object | TikTok Shop video and live content performance. |
| `shop.content.period` | string | Source period for content metrics. |
| `shop.content.averageViews` | object | Average views reported for Shop content. |
| `shop.content.averageViews.value` | number | Exact average view count when provided. |
| `shop.content.averageViews.range` | string | Source-published average view range. |
| `shop.content.averageLikes` | object | Average likes reported for Shop content. |
| `shop.content.averageLikes.value` | number | Exact average like count when provided. |
| `shop.content.averageLikes.range` | string | Source-published average like range. |
| `shop.content.averageComments` | object | Average comments reported for Shop content. |
| `shop.content.averageComments.value` | number | Exact average comment count when provided. |
| `shop.content.averageComments.range` | string | Source-published average comment range. |
| `shop.content.averageShares` | object | Average shares reported for Shop content. |
| `shop.content.averageShares.value` | number | Exact average share count when provided. |
| `shop.content.averageShares.range` | string | Source-published average share range. |
| `shop.content.engagementRate` | object | Engagement rate reported for Shop content. |
| `shop.content.engagementRate.ratePercent` | number | Exact Shop engagement rate percent when provided. |
| `shop.content.engagementRate.range` | string | Source-published Shop engagement rate range. |
| `shop.content.contentFrequency` | object | How often the creator publishes Shop content. |
| `shop.content.contentFrequency.postsPerWeek` | number | Exact weekly post rate when provided. |
| `shop.content.contentFrequency.range` | string | Source-published post rate range. |
| `shop.content.contentFrequency.period` | string | Source period used for content frequency. |
| `shop.audienceInsights` | object | Aggregate audience data reported by TikTok Shop. |
| `shop.audienceInsights.followers` | object | Follower total reported by TikTok Shop. |
| `shop.audienceInsights.followers.value` | integer | Exact Shop follower total when provided. |
| `shop.audienceInsights.followers.range` | string | Source-published Shop follower range. |
| `shop.audienceInsights.ageBands` | array | Audience age bands and their shares. |
| `shop.audienceInsights.ageBands[]` | object | One age band and its audience share. |
| `shop.audienceInsights.ageBands[].ageRange` | string | Age band label from the source. |
| `shop.audienceInsights.ageBands[].sharePercent` | number | Audience share for the age band. |
| `shop.audienceInsights.ageBands[].shareRange` | string | Source-published audience share range. |
| `shop.audienceInsights.genderMix` | array | Audience gender groups and their shares. |
| `shop.audienceInsights.genderMix[]` | object | One gender group and its audience share. |
| `shop.audienceInsights.genderMix[].gender` | string | Gender label from the source. |
| `shop.audienceInsights.genderMix[].sharePercent` | number | Audience share for the gender group. |
| `shop.audienceInsights.genderMix[].shareRange` | string | Source-published audience share range. |
| `shop.audienceInsights.topLocations` | array | Top audience locations and their shares. |
| `shop.audienceInsights.topLocations[]` | object | One audience location and its share. |
| `shop.audienceInsights.topLocations[].location` | string | Location label from the source. |
| `shop.audienceInsights.topLocations[].sharePercent` | number | Audience share for the location. |
| `shop.audienceInsights.topLocations[].shareRange` | string | Source-published location share range. |
| `shop.partnerships` | object | Product, brand, and promotion context from TikTok Shop. |
| `shop.partnerships.productCategories` | array | Product categories linked to the creator. |
| `shop.partnerships.productCategories[]` | string | One product category. |
| `shop.partnerships.categoryMix` | array | Product categories and their reported shares. |
| `shop.partnerships.categoryMix[]` | object | One product category and its share. |
| `shop.partnerships.categoryMix[].category` | string | Product category. |
| `shop.partnerships.categoryMix[].sharePercent` | number | Reported share for the category. |
| `shop.partnerships.categoryMix[].shareRange` | string | Source-published category share range. |
| `shop.partnerships.brandCollaborations` | array | Brands linked to the creator through Shop activity. |
| `shop.partnerships.brandCollaborations[]` | object | One brand collaboration. |
| `shop.partnerships.brandCollaborations[].brandName` | string | Collaborating brand name. |
| `shop.partnerships.brandCollaborations[].productName` | string | Linked product name when provided. |
| `shop.partnerships.brandCollaborations[].productUrl` | string | Public product URL when provided. |
| `shop.partnerships.promotedProducts` | array | Products promoted by the creator when the source provides them. |
| `shop.partnerships.promotedProducts[]` | object | One promoted product. |
| `shop.partnerships.promotedProducts[].productName` | string | Promoted product name. |
| `shop.partnerships.promotedProducts[].brandName` | string | Promoted product brand when provided. |
| `shop.partnerships.promotedProducts[].productUrl` | string | Public product URL when provided. |
| `shop.partnerships.promotedPosts` | array | Performance signals for promoted posts. |
| `shop.partnerships.promotedPosts[]` | object | One promoted post signal. |
| `shop.partnerships.promotedPosts[].postUrl` | string | Public URL of the promoted post. |
| `shop.partnerships.promotedPosts[].views` | integer | Public view count for the promoted post. |
| `shop.partnerships.promotedPosts[].likes` | integer | Public like count for the promoted post. |
| `shop.partnerships.promotedPosts[].comments` | integer | Public comment count for the promoted post. |
| `shop.partnerships.promotedPosts[].shares` | integer | Public share count for the promoted post. |
| `analyzedAt` | string | Time when the creator analysis was completed. |
| `sourceUpdatedAt` | string | Source update time when the source provides it. |
| `snapshotLabel` | string | Optional 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.

```json
{
  "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:

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ 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](https://console.apify.com/actors/maximedupre~tiktok-creator-analytics/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Social Media Stats Checker](https://apify.com/maximedupre/social-media-stats-checker) checks follower and profile fields across several public social platforms.
- [Influencer Scraper](https://apify.com/maximedupre/influencer-scraper) finds public influencer profiles across TikTok, Instagram, and YouTube.
- [TikTok Search Scraper](https://apify.com/maximedupre/tiktok-search-results-scraper) finds public TikTok creators or videos from search keywords.
- [TikTok Profile Intelligence](https://apify.com/zapticx/tiktok-profile-intelligence) provides a profile-focused workflow for public TikTok posts and engagement metrics.
- [TikTok Profile Scraper - Followers, Bio, Likes & Engagement](https://apify.com/santhej/tiktok-profile-scraper) focuses on public profile totals, bios, and engagement fields for known profiles.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `target` (type: `string`):

Choose which type of creator value you will enter.

## `creatorHandles` (type: `array`):

Enter one or more public TikTok handles, such as @creatorname. Use this list when Input type is Creator handles. The Profile URLs list is ignored.

## `creatorProfileUrls` (type: `array`):

Enter one or more public TikTok profile URLs. Use this list when Input type is Profile URLs. The Creator handles list is ignored.

## `postSampleSize` (type: `integer`):

Choose how many recent public posts to sample for engagement calculations, from 1 to 100.

## `snapshotLabel` (type: `string`):

Optionally add a campaign or reporting-period label to each creator snapshot.

## Actor input object example

```json
{
  "target": "handles",
  "creatorHandles": [
    "@tiktok"
  ],
  "postSampleSize": 20
}
```

# Actor output Schema

## `dataset` (type: `string`):

Link to the dataset with one row for each successful creator analysis.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "target": "handles",
    "creatorHandles": [
        "@tiktok"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/tiktok-creator-analytics").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "target": "handles",
    "creatorHandles": ["@tiktok"],
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/tiktok-creator-analytics").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "target": "handles",
  "creatorHandles": [
    "@tiktok"
  ]
}' |
apify call maximedupre/tiktok-creator-analytics --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/tiktok-creator-analytics"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ksyOgHlu7VlgDKbKj/builds/2zFFSDeeaKKO7fMwK/openapi.json
