TikTok Scraper avatar

TikTok Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
TikTok Scraper

TikTok Scraper

Scrape TikTok profiles, videos, hashtags, sounds, locations, search and comments. Get views, likes, shares, bookmarks, creator stats, video download URLs, music and captions as clean JSON. Pull followers, following and reposts too. No login. Ideal for influencer research and trend tracking.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

1

Bookmarked

4

Total users

3

Monthly active users

13 days ago

Last modified

Share

Turn any public TikTok into structured data. Creators, videos, hashtags, sounds, locations, and search, scraped from one actor and delivered as clean records ready for analysis. In seconds, not hours.

How it works

How it works

โœจ Why teams choose this over other TikTok scrapers

Juggling one scraper for profiles, another for hashtags, and a third for search? Tired of untangling nested data before you can use it? Need an account and cookies just to pull a few videos?

  • ๐Ÿงฉ Every TikTok surface in one actor. Creators, videos, photos, hashtags, sounds, locations, search, comments, following lists, followers, reposts, and related videos. Stop wiring up five tools to cover one platform.
  • ๐Ÿ“Š Analytics-ready output. One flat record per post with views, likes, comments, shares, and bookmarks. Drop it straight into a sheet, dashboard, or model. No nested blobs to clean up.
  • ๐ŸŽฌ The fields you actually use. Creator profile, video download URL, music, hashtags, captions, ad flags, pinned status, language, and mentions on every post. Plus comments with replies when you want them.
  • ๐Ÿ”Ž Filter and sort by what matters. Narrow profile posts by date range, minimum or maximum likes, and choose between latest, oldest, or most popular order.
  • ๐Ÿค See who follows and who a creator follows. Pull following or follower lists alongside post data in a single run.
  • ๐Ÿ”„ Capture reposts and related videos. Scrape a profile's reposts or surface videos related to a specific post without extra setup.
  • ๐Ÿ”€ Mix inputs in one run. Paste profile, hashtag, sound, and search URLs together, add keywords, and cap the output with a single field.
  • ๐Ÿ”“ No login, no account, no setup. Public data only. Paste a URL or a keyword and get results.

๐ŸŽฏ What you can do with TikTok data

TeamWhat they build
Influencer marketingShortlist creators in a niche by real views and engagement before spending a dollar on outreach
Growth & socialTrack a hashtag or sound daily to catch a trend while it is still climbing
Competitive researchPull a competitor's full video history with metrics into one sheet to see what works
Content strategyFind the top-performing formats and sounds for a topic and brief creators with proof
Brand & commsRead comments and replies on a viral post to gauge sentiment and spot issues early
Data & MLGenerate a labeled TikTok dataset across creators, hashtags, and search for analysis or training

๐Ÿ“ฅ Input parameters

FieldTypeDescription
startUrlsarrayTikTok URLs to scrape: creator, video, photo, hashtag (/tag/), sound (/music/), location (/place/), or search.
keywordsarraySearch terms to scrape from TikTok search.
locationstringRegion for results, as an ISO country code (for example US, GB, DE).
dateRangeselectTime filter for search: default, all time, yesterday, this week, this month, last 3 months, last 6 months.
sortTypeselectSearch sort order: relevance, most liked, or date posted.
maxItemsintegerMaximum number of posts to return across the whole run.
maxCommentsintegerIf greater than 0, also scrape up to this many comments for each video or photo URL.
includeSearchKeywordsbooleanAdd the source keyword to each post found through search.
customMapFunctionstringA JavaScript function to reshape each output record (add, rename, or drop fields).
maxFollowingintegerIf greater than 0, also scrape up to this many accounts each profile follows.
maxFollowersintegerIf greater than 0, also scrape up to this many of each profile's followers. TikTok limits follower visibility for some accounts.
scrapeRepostsbooleanAlso scrape videos a profile has reposted.
scrapeRelatedVideosbooleanFor video URLs, also scrape related videos.
onlyPostsNewerThanstringKeep only posts on or after this date (YYYY-MM-DD). Applies to every surface.
onlyPostsOlderThanstringKeep only posts on or before this date (YYYY-MM-DD). Applies to every surface.
minLikesintegerKeep only posts with at least this many likes. Applies to every surface.
maxLikesintegerKeep only posts with at most this many likes (0 = no limit). Applies to every surface.
excludePinnedPostsbooleanSkip posts a creator has pinned to the top of their profile.
profileSortingselectOrder for a creator's videos: latest, popular, or oldest.

๐Ÿ“Š Output data

Each post is one flat record:

{
"id": "7341108653442829601",
"title": "Its curry in a hurry from #NextLevelChef",
"views": 27300000,
"likes": 1900000,
"comments": 14958,
"shares": 41200,
"bookmarks": 220500,
"uploadedAtFormatted": "2024-03-01T18:24:34Z",
"postPage": "https://www.tiktok.com/@gordonramsayofficial/video/7341108653442829601",
"hashtags": ["nextlevelchef"],
"channel": {
"username": "gordonramsayofficial",
"name": "Gordon Ramsay",
"verified": true,
"followers": 40800000,
"videos": 699
},
"video": {
"url": "https://v16-webapp-prime.us.tiktok.com/video/...",
"cover": "https://...",
"duration": 38.5
},
"song": {
"title": "original sound",
"artist": "Gordon Ramsay"
}
}

When maxComments is set, comments are returned as their own records:

{
"id": "7636459125458682654",
"text": "Now it looks authentic",
"likes": 24173,
"createTime": 1709235474,
"replyCount": 20,
"author": { "username": "zenobiaroneisha", "nickname": "Zee" }
}

๐Ÿ—‚๏ธ Data fields

GroupFields
Postid, title, views, likes, comments, shares, bookmarks, uploadedAt, uploadedAtFormatted, postPage, hashtags, inputSource, isAd, isSponsored, isPinned, isSlideshow, mentions, textLanguage, stickers
Creatorchannel.id, username, name, bio, avatar, verified, url, followers, following, videos, likes
Videovideo.url, cover, thumbnail, width, height, ratio, duration
Photoimages (url, width, height) for photo posts
Musicsong.id, title, artist, album, duration, cover
Captionssubtitle, subtitleInformation
Locationpoi (name, address, city)
Commentid, text, likes, createTime, replyCount, author, replies
Profile (followers/following)id, username, nickname, bio, avatar, verified, followers, following, hearts, videos, secUid, url, inputSource

๐Ÿš€ Examples

Pull a creator's full video history Add https://www.tiktok.com/@gordonramsayofficial to startUrls and set maxItems.

Track a trending hashtag Add https://www.tiktok.com/tag/recipe to scrape the latest posts using that hashtag.

Find videos using a sound Add a https://www.tiktok.com/music/... URL to pull every post built on that track.

Search a topic across TikTok Set keywords to ["air fryer recipes"] with sortType of most liked to surface the best-performing videos.

Read the conversation on a viral video Add the video URL and set maxComments to 200 to collect comments and replies.

See who a creator follows Add a creator URL to startUrls and set maxFollowing to the number of accounts you want. Each account the creator follows is returned as its own profile record.

Pull a creator's reposts Add a creator URL and set scrapeReposts to true. Reposted videos are added to the output alongside the creator's own posts.

๐Ÿ’ป Integrations

Run it from your own code with the Apify client.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("YOUR_USERNAME/tiktok-scraper").call(run_input={
"startUrls": ["https://www.tiktok.com/@gordonramsayofficial"],
"maxItems": 100,
})
for post in client.dataset(run["defaultDatasetId"]).iterate_items():
print(post["channel"]["username"], post["views"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('YOUR_USERNAME/tiktok-scraper').call({
keywords: ['air fryer recipes'],
sortType: 'MOST_LIKED',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((p) => `${p.channel.username}: ${p.views}`));

Results are also available as JSON, CSV, or Excel from the dataset.

๐Ÿ“ˆ Performance

WhatDetail
CoverageCreators, videos, photos, hashtags, sounds, locations, search, and comments
OutputOne flat record per post, 50+ fields, deduplicated
ScaleMix many inputs and keywords in one run; cap with maxItems
PricingPay per post returned, set on the actor page

๐Ÿ’ก Tips for best results

  • Mix surfaces in one run. Combine a creator, a hashtag, and a few keywords in the same input to cover a topic from every angle at once.
  • Use maxItems to control cost. Each TikTok entry point returns a few hundred posts per query, so set the cap to what you need and add more URLs for more reach.
  • Set a region. Use location to match the country you care about, since trending content differs by market.
  • Reshape on the fly. Use customMapFunction to keep only the fields you need, for example just id, views, and channel.username.
  • Search smart. Pair keywords with sortType of most liked to pull the strongest videos for a topic instead of the newest.

โ“ FAQ

Do I need a TikTok account or login? No. No login, no API key, no cookies. The scraper reads publicly available data.

Can it scrape private accounts? No. Public profiles, videos, and comments only.

Can I get profiles, hashtags, and search in one run? Yes. Mix creator, video, hashtag, sound, location, and search URLs, plus keywords, in a single input.

Can I download the videos? Each post includes a video.url you can use to fetch the file.

How many posts can I get from one hashtag or profile? TikTok serves a few hundred posts per query. For more reach, add more URLs or keywords rather than expecting one query to return everything.

What formats can I export? JSON, CSV, and Excel, or pull results straight from the API.

๐Ÿ“ฌ Support

Need something this scraper does not do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Custom needs? We do tailored integrations

Response time: usually under 24 hours.