# TikTok Reposts Scraper (`parsebird/tiktok-reposts-scraper`) Actor

Scrape the Reposts tab of any public TikTok profile: reposted videos with caption, views, likes, shares, sound, hashtags and video URL, plus the original creator's followers, bio and size tier. Filter by follower range.

- **URL**: https://apify.com/parsebird/tiktok-reposts-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 tiktok reposts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### TikTok Reposts Scraper

TikTok Reposts Scraper extracts the **Reposts tab of any public TikTok profile**: every video the account reposted, with caption, publish date, views, likes, comments, shares, saves, sound, hashtags and mentions, plus the **original creator** behind each repost with follower count, bio and audience size tier.

<table width="100%" style="width:100%"><tr>
<td style="border-left:4px solid #25F4EE;padding:12px 16px;font-weight:600">
Paste TikTok profile URLs or handles and get one clean row per reposted video, then narrow the list to original creators in any follower range, from nano accounts to mega creators, with exact counts and bio links on demand.
</td>
</tr></table>
<br>
<table width="100%" style="width:100%">
<tr>
<td colspan="3" style="padding:10px 14px;background:#010101;border:none;border-radius:4px 4px 0 0">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">ParseBird TikTok Suite</span>
<span style="color:#25F4EE;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Trends, ads, LIVE, shop, stories, sounds, reposts, downloads &amp; creator emails</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-trends-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Trends Scraper</a><br>
<span style="color:#78716C;font-size:11px">Trending hashtags, sounds, creators</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-ads-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Ads Scraper</a><br>
<span style="color:#78716C;font-size:11px">Creative Center Top Ads</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-top-ads-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Top Ads Scraper</a><br>
<span style="color:#78716C;font-size:11px">Top ads by likes tier &amp; language</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-live-search-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Live Search Scraper</a><br>
<span style="color:#78716C;font-size:11px">LIVE rooms broadcasting now</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-shop-reviews-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Shop Reviews Scraper</a><br>
<span style="color:#78716C;font-size:11px">Product reviews and ratings</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-story-viewer" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Story Viewer</a><br>
<span style="color:#78716C;font-size:11px">Active stories, no login</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-slideshow-downloader" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Slideshow Downloader</a><br>
<span style="color:#78716C;font-size:11px">Photo-mode posts as image files</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-video-downloader" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Video Downloader</a><br>
<span style="color:#78716C;font-size:11px">MP4 videos to your cloud storage</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-sound-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Sound Scraper</a><br>
<span style="color:#78716C;font-size:11px">Sounds &amp; the videos using them</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;border-radius:0 0 0 4px;vertical-align:top;width:33%;background:#161823">
<a href="https://apify.com/parsebird/tiktok-reposts-scraper" style="color:#FFFFFF;text-decoration:none;font-weight:700;font-size:13px">TikTok Reposts Scraper</a><br>
<span style="color:#25F4EE;font-size:11px;font-weight:600">You are here</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-influencer-email-finder" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Influencer Email Finder</a><br>
<span style="color:#78716C;font-size:11px">Creator emails &amp; social links</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;border-radius:0 0 4px 0;vertical-align:top;width:33%;background:#FFFFFF">
&nbsp;
</td>
</tr>
</table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
Use Apify Actor parsebird/tiktok-reposts-scraper to scrape the Reposts tab of public TikTok profiles (videos a profile reposted). Example with ApifyClient (Python): client.actor("parsebird/tiktok-reposts-scraper").call(run_input={"profiles":["https://www.tiktok.com/@tiktok"],"maxItemsPerProfile":10,"includeOriginalCreatorDetails":False}). Inputs: profiles array of strings (required; TikTok profile URLs, @handles or usernames); maxItemsPerProfile integer (optional, empty = every repost TikTok shows); includeOriginalCreatorDetails boolean (default false; opens each original creator's profile to add exact counts, bioLink, accountCreatedAt, language, category, isOrganization, isTikTokShopSeller); minOriginalCreatorFollowers integer (optional lower bound); maxOriginalCreatorFollowers integer (optional upper bound); proxyConfiguration object (default Apify Proxy US). Output: one dataset row per reposted video with repostId, caption, createdAt, repostUrl, contentType (video or photo), sourceProfile, sourceUsername, originalCreator{id, secUid, username, displayName, profileUrl, avatarUrl, isVerified, isPrivate, bio, followerCount, followingCount, likeCount, videoCount, sizeTier (nano/micro/mid/macro/mega)}, engagement{playCount, likeCount, commentCount, shareCount, collectCount, repostCount}, media{durationSeconds, width, height, quality, videoUrl, cover{url, dynamicUrl, originUrl}, imageUrls}, music{id, title, creator{id, username, displayName, profileUrl}, durationSeconds, isOriginal, audioUrl, pageUrl}, hashtags, challenges, tags (mentioned usernames), permissions{allowComments, allowDuet, allowStitch}, isAd, language. A repost found on several profiles is saved once. A RUN_SUMMARY record in the default key-value store lists per-profile counts and failed inputs. API docs: https://docs.apify.com/api/client/python/ and https://docs.apify.com/api/client/js/. Token: https://console.apify.com/account/integrations.
```

### What is TikTok Reposts Scraper?

**TikTok Reposts Scraper** is a TikTok repost scraper and **TikTok reposts API alternative**. On [TikTok](https://www.tiktok.com/), a repost shares another creator's video with your followers, and public profiles list those videos on their **Reposts** tab. This actor reads that tab for any public profile and returns **structured data for every reposted video and its original creator**. No TikTok account, cookies or API key are needed.

The easiest way to try it: open the **Input** tab, keep the prefilled profile `https://www.tiktok.com/@tiktok`, and click **Start**. You get 10 reposts in a few seconds.

### What can TikTok Reposts Scraper do?

- 🔁 **Scrape a profile's Reposts tab**: video ID and URL, caption, publish date, duration, resolution, cover images, and image URLs for photo posts
- 📊 **Get engagement counts**: plays, likes, comments, shares, saves and reposts for each reposted video
- 👤 **See who made the original video**: creator username, display name, verified badge, bio, followers, following, total likes, video count and a size tier
- 🎯 **Filter by original creator followers**: keep only reposts of creators between a minimum and maximum follower count
- 🔎 **Add deeper creator details** on demand: exact follower counts, bio link, account creation date, language, category and TikTok Shop seller flag
- 🎵 **Sound and tags**: sound ID, title, creator, audio URL and sound page, plus hashtags, challenges and mentioned accounts
- 👥 **Many profiles in one run**, as URLs, @handles or plain usernames, with reposts that appear on several profiles saved only once
- ⚙️ **Platform features**: run it on a [schedule](https://docs.apify.com/platform/schedules) to track what accounts repost, call it through the [Apify API](https://docs.apify.com/api/v2), connect it to [integrations](https://apify.com/integrations) such as Google Sheets, Make or Zapier, and export results as JSON, CSV, Excel, XML or HTML

### What data can you extract from TikTok reposts?

| Field | Description |
|-------|-------------|
| `repostId`, `repostUrl`, `contentType` | ID and public URL of the reposted video, and whether it's a `video` or `photo` post |
| `caption`, `createdAt`, `language` | Caption, original publish time (ISO 8601) and caption language |
| `sourceProfile`, `sourceUsername` | The profile you submitted that reposted the video |
| `originalCreator.username`, `displayName`, `profileUrl`, `isVerified` | Who made the original video |
| `originalCreator.followerCount`, `followingCount`, `likeCount`, `videoCount` | Original creator's audience and output |
| `originalCreator.bio`, `sizeTier` | Creator bio, and tier by followers: nano (<10K), micro (10K-100K), mid (100K-500K), macro (500K-1M), mega (1M+) |
| `originalCreator.bioLink`, `accountCreatedAt`, `category`, `isTikTokShopSeller` | Only with **Add original creator details** |
| `engagement.playCount`, `likeCount`, `commentCount`, `shareCount`, `collectCount`, `repostCount` | Counts for the reposted video |
| `media.durationSeconds`, `width`, `height`, `quality`, `videoUrl`, `cover`, `imageUrls` | Video details, cover images and photo-post images |
| `music.id`, `title`, `creator`, `isOriginal`, `audioUrl`, `pageUrl` | The sound used in the video |
| `hashtags`, `challenges`, `tags` | Hashtags, challenge labels and mentioned usernames |
| `permissions.allowComments`, `allowDuet`, `allowStitch` | Interaction settings of the video |

### How to scrape TikTok reposts

1. Open [TikTok Reposts Scraper](https://apify.com/parsebird/tiktok-reposts-scraper) and click **Try for free**.
2. Paste one or more TikTok profile URLs (`https://www.tiktok.com/@username`) or handles in **TikTok profiles**.
3. Set **Max reposts per profile**, or leave it empty to get every repost the profile shows.
4. Optional: turn on **Add original creator details**, and set **Min creator followers** / **Max creator followers** to focus on a follower range.
5. Click **Start** and wait for the run to finish.
6. Download the results from the **Output** tab as JSON, CSV, Excel, XML or HTML, or read them through the API.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `profiles` | array of strings | **Yes** | — | Public TikTok profile URLs, @handles or usernames |
| `maxItemsPerProfile` | integer | No | empty (all) | Maximum reposts saved per profile |
| `includeOriginalCreatorDetails` | boolean | No | `false` | Open each original creator's profile for exact counts, bio link, account creation date, language, category and TikTok Shop seller flag |
| `minOriginalCreatorFollowers` | integer | No | empty | Keep reposts only when the original creator has at least this many followers |
| `maxOriginalCreatorFollowers` | integer | No | empty | Keep reposts only when the original creator has at most this many followers |
| `proxyConfiguration` | object | No | Apify Proxy, US | Proxy settings; the default works for most runs |

**Input example: micro-influencer reposts with full creator details**

```json
{
    "profiles": ["https://www.tiktok.com/@tiktok", "@charlidamelio"],
    "maxItemsPerProfile": 20,
    "includeOriginalCreatorDetails": true,
    "minOriginalCreatorFollowers": 10000,
    "maxOriginalCreatorFollowers": 100000
}
```

### Output example

A row from a real run with `includeOriginalCreatorDetails` set to `false` (long media URLs shortened):

```json
{
    "repostId": "7677743868229455135",
    "caption": "For International Dog Day 2026, join @TikTok and The Dodo at @Wags & Walks Rescue’s LA headquarters to meet some adoptable rescue dogs and break down common myths around rescuing. 🐶 #internationaldogday ",
    "createdAt": "2026-08-24T23:27:37.000Z",
    "repostUrl": "https://www.tiktok.com/@thedodo/video/7677743868229455135",
    "contentType": "video",
    "sourceProfile": "https://www.tiktok.com/@tiktok",
    "sourceUsername": "tiktok",
    "originalCreator": {
        "id": "6516903274669429760",
        "secUid": "MS4wLjABAAAAc8FhFhsbuHLH8BdobFWVNd9PemeFcN19fNs5xZX2i5JnJUlUHSaw2NphOCoELCRk",
        "username": "thedodo",
        "displayName": "The Dodo",
        "profileUrl": "https://www.tiktok.com/@thedodo",
        "avatarUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-maliva-avt-0068/...",
        "isVerified": true,
        "isPrivate": false,
        "bio": "For animal people.",
        "followerCount": 6300000,
        "followingCount": 2056,
        "likeCount": 261100000,
        "videoCount": 4469,
        "sizeTier": "mega"
    },
    "engagement": {
        "playCount": 72200,
        "likeCount": 1080,
        "commentCount": 58,
        "shareCount": 43,
        "collectCount": 65,
        "repostCount": 0
    },
    "media": {
        "durationSeconds": 20,
        "width": 576,
        "height": 1024,
        "quality": "540p",
        "videoUrl": "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/...",
        "cover": {
            "url": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/...",
            "dynamicUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/...",
            "originUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/..."
        },
        "imageUrls": []
    },
    "music": {
        "id": "7677743825783196446",
        "title": "original sound",
        "creator": {
            "id": "6516903274669429760",
            "username": "thedodo",
            "displayName": "The Dodo",
            "profileUrl": "https://www.tiktok.com/@thedodo"
        },
        "durationSeconds": 20,
        "isOriginal": true,
        "audioUrl": "https://v16m.tiktokcdn-us.com/.../video/tos/useast8/...",
        "pageUrl": "https://www.tiktok.com/music/sound-7677743825783196446"
    },
    "hashtags": ["internationaldogday"],
    "challenges": ["internationaldogday"],
    "tags": ["tiktok", "wagsandwalksla"],
    "permissions": {
        "allowComments": true,
        "allowDuet": true,
        "allowStitch": true
    },
    "isAd": false,
    "language": "en"
}
```

With **Add original creator details** on, `originalCreator` also gets exact counts and account fields, for example:

```json
{
    "username": "okkdunkinn",
    "followerCount": 10321,
    "followingCount": 988,
    "likeCount": 1429110,
    "videoCount": 2006,
    "sizeTier": "micro",
    "bioLink": null,
    "accountCreatedAt": "2019-07-20T21:42:49.000Z",
    "language": "en",
    "category": null,
    "isOrganization": false,
    "isTikTokShopSeller": false
}
```

### How to use the TikTok Reposts Scraper API

Run the actor from your own code with the Apify API clients. Get your token on the [Integrations page](https://console.apify.com/account/integrations).

**Python** ([apify-client](https://docs.apify.com/api/client/python/))

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/tiktok-reposts-scraper").call(run_input={
    "profiles": ["https://www.tiktok.com/@tiktok"],
    "maxItemsPerProfile": 50,
    "minOriginalCreatorFollowers": 10000,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["repostUrl"], row["originalCreator"]["username"], row["engagement"]["playCount"])
```

**JavaScript** ([apify-client](https://docs.apify.com/api/client/js/))

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

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/tiktok-reposts-scraper').call({
    profiles: ['https://www.tiktok.com/@tiktok'],
    maxItemsPerProfile: 50,
    includeOriginalCreatorDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((row) => console.log(row.repostUrl, row.originalCreator.followerCount));
```

### Use cases

- **Influencer discovery**: see which creators a brand, agency or top creator reposts, then filter them by follower range
- **Competitor monitoring**: track what content competing brand accounts amplify, and schedule runs to catch new reposts
- **Partnership research**: find the micro and mid-tier creators that large accounts already support
- **Content and trend research**: collect the hashtags, sounds and formats of videos that get reposted
- **Audience analysis**: compare the size tiers and engagement of the creators an account reposts

### How it works

1. Each profile you submit is opened as a public TikTok page to read its account ID.
2. The actor pages through the profile's Reposts tab, about 30 reposts per page, until your limit or the end of the list.
3. The follower filter is applied to the original creator of each repost.
4. With **Add original creator details**, each unique original creator's public profile is opened once and its exact counts and account fields are added.
5. Each repost is saved as one dataset row. A repost already saved from another profile in the same run is skipped.
6. A `RUN_SUMMARY` record in the key-value store lists per-profile counts and any profiles that failed.

### How much does it cost to scrape TikTok reposts?

**What is the price per TikTok repost?**

TikTok Reposts Scraper uses pay-per-event pricing. Compute and proxy costs are included in the event price.

| Event | Free plan | Bronze | Silver | Gold |
|-------|-----------|--------|--------|------|
| `repost-scraped`: TikTok repost | $0.00309 (**$3.09 / 1,000**) | $0.00289 (**$2.89 / 1,000**) | $0.00269 (**$2.69 / 1,000**) | $0.00249 (**$2.49 / 1,000**) |

One event is one repost row saved to the dataset. Reposts removed by the follower filter, duplicates and failed profiles are not charged, and turning on creator details doesn't add a separate charge. For example, 1,000 reposts cost **$3.09** on the Free plan. Apify's free plan includes monthly platform credits you can use to try the actor.

**How do I keep costs predictable?**

Set **Max reposts per profile**, and use the follower filters to save only the creators you care about. The run stops by itself when your spending limit is reached.

### Is it legal to scrape TikTok reposts?

TikTok Reposts Scraper only collects data that TikTok shows publicly to anyone without logging in: public profile pages and their Reposts tab. It doesn't log in or access private accounts. Rows include public usernames and bios, which can be personal data under laws such as the GDPR and CCPA, so use the data for legitimate purposes. Videos, images and audio remain protected by copyright. Read Apify's guide on [whether web scraping is legal](https://blog.apify.com/is-web-scraping-legal/), and consult a lawyer if you're unsure.

### Other TikTok scrapers and related Actors

| Actor | What it does |
|-------|--------------|
| [TikTok Video Downloader](https://apify.com/parsebird/tiktok-video-downloader) | Download TikTok videos as MP4 files |
| [TikTok Influencer Email Finder](https://apify.com/parsebird/tiktok-influencer-email-finder) | Public emails and social links of TikTok creators |
| [TikTok Sound Scraper](https://apify.com/parsebird/tiktok-sound-scraper) | TikTok sounds and the videos that use them |
| [TikTok Story Viewer](https://apify.com/parsebird/tiktok-story-viewer) | Active stories of public profiles |
| [TikTok Trends Scraper](https://apify.com/parsebird/tiktok-trends-scraper) | Trending hashtags, videos, sounds and creators |
| [TikTok Slideshow Downloader](https://apify.com/parsebird/tiktok-slideshow-downloader) | Download photo-mode posts as image files |
| [TikTok Live Search Scraper](https://apify.com/parsebird/tiktok-live-search-scraper) | LIVE rooms for a keyword with viewers and creators |
| [TikTok Ads Scraper](https://apify.com/parsebird/tiktok-ads-scraper) | TikTok Creative Center top ads |

### FAQ

**Does TikTok Reposts Scraper need a TikTok account or API key?**
No. It reads public TikTok data only and needs no login, cookies or TikTok API access.

**How many reposts can I get per profile?**
Every repost TikTok lists on the profile's Reposts tab. In our tests, full runs returned 547 reposts for @charlidamelio and 390 for @bellapoarch. Leave **Max reposts per profile** empty to get them all.

**Why did a profile return no reposts?**
The profile hasn't reposted anything, or its Reposts tab isn't visible to the public. Private and non-existent accounts are listed in `RUN_SUMMARY` with the reason.

**Are follower counts exact?**
Without creator details, counts are the rounded figures TikTok shows on the repost (for example 6,300,000 for 6.3M). With **Add original creator details**, they're the exact numbers from the creator's profile, and the follower filter uses those exact numbers.

**What is `sizeTier`?**
A label computed from the original creator's follower count: nano (under 10K), micro (10K to 100K), mid (100K to 500K), macro (500K to 1M) and mega (1M and more).

**Can I download the reposted videos?**
`videoUrl` is a temporary TikTok link that only plays inside TikTok's own session, so it returns an error when opened elsewhere. To save MP4 files, pass `repostUrl` to [TikTok Video Downloader](https://apify.com/parsebird/tiktok-video-downloader). Cover images and `audioUrl` open directly.

**How is `music.creator` filled?**
TikTok gives the sound creator's display name. When the sound is an original sound by the video's author, the actor also fills in that creator's ID, username and profile URL. Otherwise only `displayName` is set.

**Can I schedule runs or use the data in other tools?**
Yes. Use [Apify schedules](https://docs.apify.com/platform/schedules) for recurring runs, the [API tab](https://apify.com/parsebird/tiktok-reposts-scraper/api) for code access, and [integrations](https://apify.com/integrations) to send rows to Google Sheets, Airtable, Make or Zapier.

**Something is missing or wrong. Where do I report it?**
Open an issue on the [Issues tab](https://apify.com/parsebird/tiktok-reposts-scraper/issues) with the input you used, and we'll look into it.

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/tiktok-reposts-scraper/changelog.md

# Actor input Schema

## `profiles` (type: `array`):

Add public TikTok profile URLs (https://www.tiktok.com/@username) or handles (@username or username), one per line. The same settings apply to every profile.

## `maxItemsPerProfile` (type: `integer`):

Save at most this many reposts for each profile. Leave empty to save every repost TikTok shows on the Reposts tab.

## `includeOriginalCreatorDetails` (type: `boolean`):

Open each original creator's profile to add exact follower, following, like and video counts, the bio link, account creation date, language, category and TikTok Shop seller flag. Slower: one extra page per unique creator.

## `minOriginalCreatorFollowers` (type: `integer`):

Keep a repost only when the original creator has at least this many followers. Leave empty for no lower bound.

## `maxOriginalCreatorFollowers` (type: `integer`):

Keep a repost only when the original creator has at most this many followers. Leave empty for no upper bound.

## `proxyConfiguration` (type: `object`):

The default (Apify Proxy, US) works for most runs. Change it only if you know you need different proxies.

## Actor input object example

```json
{
  "profiles": [
    "https://www.tiktok.com/@tiktok"
  ],
  "maxItemsPerProfile": 10,
  "includeOriginalCreatorDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

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

No description

## `runSummary` (type: `string`):

No description

# 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 = {
    "profiles": [
        "https://www.tiktok.com/@tiktok"
    ],
    "maxItemsPerProfile": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/tiktok-reposts-scraper").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 = {
    "profiles": ["https://www.tiktok.com/@tiktok"],
    "maxItemsPerProfile": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/tiktok-reposts-scraper").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 '{
  "profiles": [
    "https://www.tiktok.com/@tiktok"
  ],
  "maxItemsPerProfile": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}' |
apify call parsebird/tiktok-reposts-scraper --silent --output-dataset

```

## MCP server setup

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

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/j7NOuBAidOLZK21bV/builds/njQVZAjYMc05OiKnh/openapi.json
