TikTok Search Scraper avatar

TikTok Search Scraper

Pricing

$0.10 / 1,000 videos

Go to Apify Store
TikTok Search Scraper

TikTok Search Scraper

Search public TikTok videos or creator profiles by keyword. Save captions, hashtags, engagement counts, profile details, media links, music, subtitles, and the first search value for each row.

Pricing

$0.10 / 1,000 videos

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

8 days ago

Last modified

Share

🔎 TikTok search for videos and creators

For social media researchers, marketers, and content teams, this Actor searches TikTok's public video or creator results by keyword. It saves captions, hashtags, engagement counts, creator details, media links, music, subtitles, and the first search value for each row, so you can review public search data in a dataset without a TikTok login or source credential.

📊 TikTok results you can save

The dataset has two row types. Video rows include the post, caption, hashtags, public engagement counts, creator details, media links, music, subtitles, and location data when TikTok supplies them. Creator rows include profile details, account flags, public counts, and the search rank. Each row keeps the keyword or expanded search value that first found it.

Choose Videos or Creators, enter one or more keywords, and start the Actor. The list and search setup are shared across the target you choose. For a shorter run and less review work, set the matching result limit. Leave a work limit empty to return all available results until the source is exhausted.

For video searches, choose relevance, most-liked, or newest order. You can also search TikTok suggestions, hashtags, or sounds found in the first video results. If the same public source item appears again through another keyword or expansion, only its first saved match is kept and later matches are ignored.

⚙️ Input

Input fields

FieldTypeWhat it does
targetstringChooses videos for public video posts or creators for public creator profiles. Options for the other target are ignored.
videoResultLimitintegerFor Videos only, stops after this many video results for the run. Leave it empty to return all available results until the source is exhausted.
videoSortOrderstringFor Videos only, orders results by relevance, mostLiked, or newest.
includeSuggestedSearchesbooleanFor Videos only, also searches TikTok suggestions for each keyword and records the value that first surfaces each saved video.
includeHashtagExpansionbooleanFor Videos only, also searches hashtags found in the initial video results.
includeMusicExpansionbooleanFor Videos only, also searches sounds found in the initial video results.
creatorResultLimitintegerFor Creators only, stops after this many creator profiles for each keyword. Leave it empty to return all available results until the source is exhausted.
searchKeywordsarray of stringsOne or more keywords used with one shared search setup for the selected target.

Leave the selected work limit empty to return all available results until the source is exhausted. Set a limit when you want fewer rows to review.

Example input

This is the public input from a successful current-beta run using the default video setup.

{
"target": "videos",
"videoResultLimit": 20,
"videoSortOrder": "relevance",
"includeSuggestedSearches": false,
"includeHashtagExpansion": false,
"includeMusicExpansion": false,
"searchKeywords": [
"cooking"
]
}

🧾 Output

The run output includes a dataset URL and saves one of the two row shapes below. Optional fields appear when TikTok supplies them. Playback, cover, music, subtitle, and other media links remain source-hosted.

Run output fields

FieldTypeWhat it does
datasetUrlstringURL for the saved search result rows.

Video result fields

FieldTypeWhat it does
resultTypestringThe row type, video.
searchKeywordstringThe keyword or expanded search value that first found this video.
videoobjectPublic details for the TikTok video.
video.idstringPublic TikTok video ID.
video.captionstringText in the video caption.
video.hashtagsarray of stringsHashtags shown with the video.
video.publishedAtstringTime when the video was published.
video.urlstringPermanent public TikTok link for the video.
video.engagementobjectPublic engagement totals for the video.
video.engagement.viewsintegerPublic view count.
video.engagement.likesintegerPublic like count.
video.engagement.commentsintegerPublic comment count.
video.engagement.sharesintegerPublic share count.
video.engagement.bookmarksintegerPublic bookmark count.
video.creatorobjectPublic identity and account totals for the video creator.
video.creator.idstringPublic TikTok ID for the creator.
video.creator.usernamestringCreator username on TikTok.
video.creator.displayNamestringCreator display name on TikTok.
video.creator.profileUrlstringPublic TikTok profile link for the creator.
video.creator.isVerifiedbooleanWhether TikTok marks the creator as verified.
video.creator.followersintegerPublic follower count for the creator.
video.creator.followingintegerPublic account count that the creator follows.
video.creator.likesintegerPublic total likes on the creator account.
video.creator.videoCountintegerPublic number of videos on the creator account.
video.mediaobjectVideo size, playback, and cover details.
video.media.widthintegerVideo width in pixels.
video.media.heightintegerVideo height in pixels.
video.media.aspectRationumberVideo width divided by its height.
video.media.durationSecondsnumberVideo duration in seconds.
video.media.playbackUrlstringSource-hosted URL for playing the video.
video.media.coverUrlstringSource-hosted cover or thumbnail image URL.
video.musicobjectSound details when the video has available music data.
video.music.idstringPublic TikTok ID for the sound.
video.music.titlestringTitle of the sound.
video.music.artiststringArtist listed for the sound.
video.music.albumstringAlbum listed for the sound.
video.music.durationSecondsnumberSound duration in seconds.
video.music.coverUrlstringSource-hosted cover image URL for the sound.
video.subtitlesarray of objectsCaption tracks available for the video.
video.subtitles[].languagestringLanguage of the caption track.
video.subtitles[].formatstringFile format of the caption track.
video.subtitles[].urlstringSource-hosted URL for the caption track.
video.locationobjectPublic location details when TikTok supplies them.
video.location.idstringPublic TikTok ID for the location.
video.location.namestringPublic name of the location.
video.location.addressstringPublic address of the location.
video.location.citystringPublic city of the location.
video.location.regionstringPublic region of the location.
video.location.countrystringPublic country of the location.

Example video row

This genuine row came from a successful current-beta video run. It includes music data; subtitle and location fields are optional and are not present in this row.

{
"resultType": "video",
"searchKeyword": "cooking",
"video": {
"id": "7671401171554209044",
"caption": "Amazing cooking spicy noodle hotdog - egg recipe Amazing video ",
"hashtags": [],
"publishedAt": "2026-08-07T21:14:42.000Z",
"url": "https://www.tiktok.com/@polins___angels/video/7671401171554209044",
"engagement": {
"views": 1800000,
"likes": 120300,
"comments": 902,
"shares": 12500,
"bookmarks": 6608
},
"creator": {
"id": "7614403533082002440",
"username": "polins___angels",
"displayName": "Polin’s Angels",
"profileUrl": "https://www.tiktok.com/@polins___angels",
"isVerified": false,
"followers": 967200,
"following": 12,
"likes": 8200000,
"videoCount": 725
},
"media": {
"width": 1024,
"height": 576,
"aspectRatio": 1.7777777777777777,
"durationSeconds": 1224,
"playbackUrl": "https://v16-webapp-prime.us.tiktok.com/video/tos/alisg/tos-alisg-pve-0037c001/oARhhBd2AleIvm1qMkcFEpydQBHfW062ngDTEZ/?a=1988&bti=ODszNWYuMDE6&&bt=1461&ft=aEeq8qT0mIoPD12sTlsI3wU.7BAbMeF~O5&mime_type=video_mp4&rc=Ozg1PDw0OWU7OTVoODlpZ0BpM3FnO2w5cnE3PDMzODczNEAtNGAuLzBeXzIxNDMvNV4wYSNnZnNqMmRjaG9hLS1kMWBzcw%3D%3D&expire=1787594894&l=202608221747501BDF24CE4D7AF2019D05&ply_type=2&policy=2&signature=d3f4c6a6eeab9439bc88220b4c0a891e&tk=tt_chain_token&btag=e000a8000",
"coverUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-alisg-p-0037/og2ANwAyiAKBZq5nBYBMasSiEAaBsLUCPnIAE~tplv-tiktokx-origin.image?dr=9636&x-expires=1787590800&x-signature=QHXPATvaGhx4yPbPj1KRJxTWj90%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast8"
},
"music": {
"id": "7671401487913749268",
"title": "orijinal ses",
"artist": "Polin’s Angels",
"durationSeconds": 1224,
"coverUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/871da9873d8f70638ace05ab59a884df~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=065fb6a0&x-expires=1787590800&x-signature=WkWvzHbKi8EL1wEv93KULICmgsI%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast8"
}
}
}

Creator result fields

FieldTypeWhat it does
resultTypestringThe row type, creator.
searchKeywordstringThe keyword that found this creator profile.
resultRankintegerCreator position returned for this search keyword.
creatorobjectPublic identity, profile, flags, and account totals for the creator.
creator.idstringPublic TikTok ID for the creator.
creator.usernamestringCreator username on TikTok.
creator.displayNamestringCreator display name on TikTok.
creator.profileUrlstringPublic TikTok profile link for the creator.
creator.biostringCreator bio text.
creator.websiteUrlstringPublic website linked from the creator profile.
creator.isVerifiedbooleanWhether TikTok marks the creator as verified.
creator.isPrivatebooleanWhether TikTok marks the creator account as private.
creator.isBusinessAccountbooleanWhether TikTok marks the creator account as a business account.
creator.followersintegerPublic follower count for the creator.
creator.followingintegerPublic account count that the creator follows.
creator.likesintegerPublic total likes on the creator account.
creator.videoCountintegerPublic number of videos on the creator account.

Example creator row

This genuine row came from a successful current-beta creator run.

{
"resultType": "creator",
"searchKeyword": "recipes",
"resultRank": 1,
"creator": {
"id": "6815201689773556741",
"username": "toni.kr8s",
"displayName": "Toni Kroos",
"profileUrl": "https://www.tiktok.com/@toni.kr8s",
"isVerified": true,
"isPrivate": false,
"isBusinessAccount": false,
"bio": "Ex-Player @realmadrid \nMy foundation: www.tonikroos-stiftung.de",
"followers": 14000000,
"following": 70,
"likes": 98200000,
"videoCount": 371
}
}

💳 Pricing

Pricing uses pay-per-event. The buyer-facing Video event costs $0.0001 for each public video saved to the dataset. Set the video result limit to control how many video rows a run can save. The Apify Pricing tab is the source of truth if the displayed price changes.

🔌 Integrations

The run output includes datasetUrl for the saved search rows. Use that URL to bring the dataset into your Apify workflow. This guide shows how to connect Actors:

❓ FAQ

What happens if a video matches more than one keyword?

The Actor keeps the first saved match for that public video. Later appearances through another keyword or expansion are ignored, and the row keeps the first search value.

Can I search videos and creators in one run?

No. Choose one target for a run. The keyword list and shared search setup apply to that target, and options for the other target are ignored.

What if TikTok shows fewer results than my limit?

The Actor returns the available results it can collect during the run. TikTok search is fuzzy and availability changes, so an exact count or complete coverage is not promised.

Video rows include permanent public TikTok post links. Playback and cover links come from TikTok, and signed media links may expire.

Do I need a TikTok login or API key?

No. The Actor searches TikTok's public surface without a buyer login or source credential.

What does an empty result limit do?

Leave the selected work limit empty to return all available results until the source is exhausted. Set a limit when you want fewer rows and a smaller review task.

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