TikTok Repost Scraper avatar

TikTok Repost Scraper

Pricing

$3.55 / 1,000 reposts

Go to Apify Store
TikTok Repost Scraper

TikTok Repost Scraper

Collect public reposts from one or more TikTok profiles. Get captions, original creator identity, engagement counts, media and sound links. Add deeper creator details and follower filters when needed.

Pricing

$3.55 / 1,000 reposts

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

10 days ago

Last modified

Share

🔁 See what public TikTok profiles repost

This Actor is for social media researchers, marketers, creators, and teams that need to understand what public TikTok profiles choose to repost. It returns one structured row for each retained repost with its caption, original creator identity, engagement counts, media and sound links, and source profile. That makes it easier to compare what accounts amplify and who made it.

📋 Repost rows with creator context

What you get

Each row keeps the repost, the profile that supplied it, and the original creator together. You can review captions, dates, public engagement counts, video and sound links, hashtags, challenges, tags, and sharing permissions. When deeper creator details are requested, the row can also include a bio, bio link, region, audience counts, and a size tier.

⏱️ Collect from public Reposts tabs

The Actor reads each submitted profile's public Reposts tab and saves an eligible row when it finds one. If the same source item appears again in another submitted profile, the first eligible occurrence is kept and later matches are ignored. sourceProfile records the profile that supplied that first row. A smaller maxItemsPerProfile can shorten the run. Leave it empty to return all available reposts until the source is exhausted.

⚙️ Input

Add one or more public TikTok profile URLs or handles. The same settings apply to every profile in the run.

Input fields

FieldTypeWhat it does
profilesArray of stringsPublic TikTok profile URLs or handles to read.
maxItemsPerProfileIntegerCaps saved reposts for each profile. Leave it empty to return all available reposts until the source is exhausted.
includeOriginalCreatorDetailsBooleanAdds deeper public profile fields for the original creator, such as bio, bio link, region, audience counts, content counts, and size tier.
minOriginalCreatorFollowersIntegerKeeps reposts only when the original creator has at least this many followers. Leave it empty for no lower bound.
maxOriginalCreatorFollowersIntegerKeeps reposts only when the original creator has no more than this many followers. Leave it empty for no upper bound.

Successful default input

This is the public input from a successful run. It leaves maxItemsPerProfile empty, so the run can return all available reposts until the source is exhausted.

{
"profiles": [
"https://www.tiktok.com/@tiktok"
],
"includeOriginalCreatorDetails": false
}

Follower bounds apply to the original creator connected to each repost. Use the lower and upper fields together when you want to focus on a follower range.

🧾 Output

Run output

The run output contains a link to the saved dataset.

FieldTypeWhat it does
datasetStringLink to the saved TikTok repost rows.

Dataset row fields

Each dataset row has the same shape. Some nested values are present only when TikTok provides them or when deeper creator details are requested.

FieldTypeWhat it does
repostIdStringTikTok ID of the reposted video.
captionStringCaption shown with the reposted video.
createdAtDate-time stringTime when the reposted video was created.
repostUrlURL stringPublic TikTok URL of the reposted video.
sourceProfileStringSubmitted profile URL or handle that supplied the first eligible occurrence.
originalCreatorObjectPublic identity and audience details for the original creator when available.
originalCreator.idStringTikTok ID of the original creator.
originalCreator.usernameStringPublic username of the original creator.
originalCreator.displayNameStringPublic display name of the original creator.
originalCreator.profileUrlURL stringPublic TikTok profile URL of the original creator.
originalCreator.isVerifiedBooleanWhether TikTok marks the original creator as verified.
originalCreator.followerCountIntegerPublic follower count of the original creator.
originalCreator.followingCountIntegerPublic following count of the original creator.
originalCreator.likeCountIntegerTotal likes shown for the original creator.
originalCreator.videoCountIntegerNumber of videos shown for the original creator.
originalCreator.bioStringPublic bio of the original creator when available.
originalCreator.bioLinkURL stringPublic link shown in the original creator's bio when available.
originalCreator.regionStringPublic region listed for the original creator when available.
originalCreator.sizeTierStringAudience size tier for the original creator when available.
engagementObjectPublic counts for the reposted video.
engagement.playCountIntegerPublic play count for the reposted video.
engagement.likeCountIntegerPublic like count for the reposted video.
engagement.commentCountIntegerPublic comment count for the reposted video.
engagement.shareCountIntegerPublic share count for the reposted video.
engagement.collectCountIntegerPublic collection count for the reposted video.
mediaObjectVideo details and a source media link.
media.durationSecondsNumberVideo duration in seconds.
media.widthIntegerVideo width in pixels.
media.heightIntegerVideo height in pixels.
media.qualityStringQuality label for the video when available.
media.videoUrlURL stringMain source video URL for playback or download when available.
media.coverObjectCover image details for the video.
media.cover.urlURL stringSource URL of the video cover image.
media.cover.widthIntegerCover image width in pixels when available.
media.cover.heightIntegerCover image height in pixels when available.
musicObjectSound details, creator, and source audio links.
music.idStringTikTok ID of the sound.
music.titleStringPublic title of the sound when available.
music.creatorObjectPublic creator linked to the sound.
music.creator.idStringTikTok ID of the sound creator when available.
music.creator.usernameStringPublic username of the sound creator when available.
music.creator.displayNameStringPublic display name of the sound creator when available.
music.creator.profileUrlURL stringPublic TikTok profile URL of the sound creator when available.
music.durationSecondsNumberSound duration in seconds when available.
music.isOriginalBooleanWhether TikTok marks the sound as original.
music.audioUrlURL stringMain source audio URL for playback or download when available.
music.pageUrlURL stringPublic TikTok page URL for the sound.
hashtagsArray of stringsHashtags shown on the reposted video.
challengesArray of stringsChallenge labels linked to the reposted video.
tagsArray of stringsTag or mention labels linked to the reposted video.
permissionsObjectPublic settings for comments, Duets, and Stitches.
permissions.allowCommentsBooleanWhether public comments are allowed.
permissions.allowDuetBooleanWhether public Duets are allowed when available.
permissions.allowStitchBooleanWhether public Stitches are allowed when available.

Example row from a successful run

This genuine row came from a successful run with includeOriginalCreatorDetails set to true. It shows the complete row returned for that item.

{
"repostId": "7671088500850101534",
"caption": "AND ITS LIVE ON @TikTok and @iHeartRadio IN 1 HOUR",
"createdAt": "2026-08-07T01:01:20.000Z",
"repostUrl": "https://www.tiktok.com/@alexwarren/video/7671088500850101534",
"sourceProfile": "https://www.tiktok.com/@tiktok",
"originalCreator": {
"id": "292342703596507136",
"username": "alexwarren",
"displayName": "Alex Warren",
"profileUrl": "https://www.tiktok.com/@alexwarren",
"isVerified": true,
"followerCount": 21200000,
"followingCount": 5003,
"likeCount": 1200000000,
"videoCount": 1272,
"sizeTier": "mega",
"bio": "MY ALBUM WILDCHILD AUGUST 28TH"
},
"engagement": {
"playCount": 1500000,
"likeCount": 132200,
"commentCount": 1747,
"shareCount": 1614,
"collectCount": 6344
},
"media": {
"durationSeconds": 9,
"width": 720,
"height": 1280,
"quality": "720p",
"videoUrl": "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-pve-0068-tx2/owIzwIA1LO1LYiOxyl9BmAQCqwifAHABGECKip/?a=1988&bti=ODszNWYuMDE6&&bt=1747&ft=4KJMyMzm8Zmo0z42Ha4jVqMuQpWrKsd.&mime_type=video_mp4&rc=Zzk1NztpZDM0NztmZTk8aUBpampyNWw5cjZsPDMzaTczNEBeNmFfMV5iNjExNTVgLjFhYSNmcWQtMmRzbG5hLS1kMTJzcw%3D%3D&expire=1787793942&l=202608250125335FA166A75676321BC0E6&ply_type=2&policy=2&signature=17a951026cd91a2b48eb219dd969b0b3&tk=tt_chain_token&btag=e000b0000",
"cover": {
"url": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oIDZ1lfyAV6lUFAIpn4EAeqQE6IILEeAjIBA66~tplv-tiktokx-origin.image?dr=9636&x-expires=1787792400&x-signature=B1XFyVbYLxtZfKIFWX%2B5pQv5sRQ%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast8"
}
},
"music": {
"id": "7667300537578801950",
"title": "RESCUER BRIDGE",
"creator": {
"username": "Alex Warren",
"displayName": "Alex Warren"
},
"durationSeconds": 18,
"isOriginal": true,
"audioUrl": "https://v16m.tiktokcdn-us.com/ae1da866e161a66efd5e77b78a5b0cd5/6a8d437f/video/tos/useast8/tos-useast8-v-27dcd7-tx2/ooBzqETEG9kK3CuuAIeUEmAAfLzfAUIoatYTVn/?a=1233&bti=ODszNWYuMDE6&&bt=125&ft=GSDrKInz7ThEXBkGXq8Zmo&mime_type=audio_mpeg&rc=M2h1aXU5cmx1PDMzaTU8NEBpM2h1aXU5cmx1PDMzaTU8NEBgc3NiMmRjZmdhLS1kMTJzYSNgc3NiMmRjZmdhLS1kMTJzcw%3D%3D&vvpl=1&l=202608250125335FA166A75676321BC0E6&btag=e00078000",
"pageUrl": "https://www.tiktok.com/music/sound-7667300537578801950"
},
"hashtags": [],
"challenges": [],
"tags": [
"tiktok",
"iheartradio"
],
"permissions": {
"allowComments": true,
"allowDuet": true,
"allowStitch": true
}
}

💳 Pricing

Charged event

Each saved public repost is one charged event. See the Pricing tab for the current rate. A smaller maxItemsPerProfile can reduce the number of saved repost events. Leaving it empty returns all available reposts until the source is exhausted.

🔌 Integrations

Video guide

Use the dataset link in the run output to review or export the saved rows. The public data can also be read through the Apify run and dataset tools.

❓ FAQ

What does a repost row represent?

It is a public video shown in a submitted profile's Reposts tab. The originalCreator fields describe the creator of that video, while sourceProfile identifies the profile that supplied the first saved occurrence.

What happens if the same repost appears in more than one profile?

The first eligible occurrence is saved. Later matches are ignored, and the row keeps the first sourceProfile.

Can I use more than one profile?

Yes. Add one or more public profile URLs or handles. The same settings apply to all profiles in the run.

What does an empty maxItemsPerProfile do?

It returns all available reposts until the source is exhausted. Set a value when you want a shorter run or fewer rows to review.

What does includeOriginalCreatorDetails add?

It asks for deeper public fields such as the original creator's bio, bio link, region, audience counts, content count, and size tier when available.

Can I filter by the original creator's follower count?

Yes. Set a minimum, a maximum, or both. The Actor keeps reposts whose original creator meets those bounds.

Why did a profile return fewer rows than I expected?

The public Reposts tab may expose fewer items at run time. Follower bounds can also remove rows, and repeated matches are ignored after the first eligible occurrence.

Does this collect private profiles or unrelated TikTok data?

No. It reads public repost content from the profiles you submit. It does not perform global TikTok search or collect private content, comments, messages, or account analytics.

Does the Actor save media files?

No. It returns available source media and sound links with their metadata. It does not store the media files themselves.

📝 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é