TikTok Scraper
Pricing
from $1.00 / 1,000 results
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
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
3
Monthly active users
13 days ago
Last modified
Categories
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

โจ 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
| Team | What they build |
|---|---|
| Influencer marketing | Shortlist creators in a niche by real views and engagement before spending a dollar on outreach |
| Growth & social | Track a hashtag or sound daily to catch a trend while it is still climbing |
| Competitive research | Pull a competitor's full video history with metrics into one sheet to see what works |
| Content strategy | Find the top-performing formats and sounds for a topic and brief creators with proof |
| Brand & comms | Read comments and replies on a viral post to gauge sentiment and spot issues early |
| Data & ML | Generate a labeled TikTok dataset across creators, hashtags, and search for analysis or training |
๐ฅ Input parameters
| Field | Type | Description |
|---|---|---|
startUrls | array | TikTok URLs to scrape: creator, video, photo, hashtag (/tag/), sound (/music/), location (/place/), or search. |
keywords | array | Search terms to scrape from TikTok search. |
location | string | Region for results, as an ISO country code (for example US, GB, DE). |
dateRange | select | Time filter for search: default, all time, yesterday, this week, this month, last 3 months, last 6 months. |
sortType | select | Search sort order: relevance, most liked, or date posted. |
maxItems | integer | Maximum number of posts to return across the whole run. |
maxComments | integer | If greater than 0, also scrape up to this many comments for each video or photo URL. |
includeSearchKeywords | boolean | Add the source keyword to each post found through search. |
customMapFunction | string | A JavaScript function to reshape each output record (add, rename, or drop fields). |
maxFollowing | integer | If greater than 0, also scrape up to this many accounts each profile follows. |
maxFollowers | integer | If greater than 0, also scrape up to this many of each profile's followers. TikTok limits follower visibility for some accounts. |
scrapeReposts | boolean | Also scrape videos a profile has reposted. |
scrapeRelatedVideos | boolean | For video URLs, also scrape related videos. |
onlyPostsNewerThan | string | Keep only posts on or after this date (YYYY-MM-DD). Applies to every surface. |
onlyPostsOlderThan | string | Keep only posts on or before this date (YYYY-MM-DD). Applies to every surface. |
minLikes | integer | Keep only posts with at least this many likes. Applies to every surface. |
maxLikes | integer | Keep only posts with at most this many likes (0 = no limit). Applies to every surface. |
excludePinnedPosts | boolean | Skip posts a creator has pinned to the top of their profile. |
profileSorting | select | Order 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
| Group | Fields |
|---|---|
| Post | id, title, views, likes, comments, shares, bookmarks, uploadedAt, uploadedAtFormatted, postPage, hashtags, inputSource, isAd, isSponsored, isPinned, isSlideshow, mentions, textLanguage, stickers |
| Creator | channel.id, username, name, bio, avatar, verified, url, followers, following, videos, likes |
| Video | video.url, cover, thumbnail, width, height, ratio, duration |
| Photo | images (url, width, height) for photo posts |
| Music | song.id, title, artist, album, duration, cover |
| Captions | subtitle, subtitleInformation |
| Location | poi (name, address, city) |
| Comment | id, 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 ApifyClientclient = 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
| What | Detail |
|---|---|
| Coverage | Creators, videos, photos, hashtags, sounds, locations, search, and comments |
| Output | One flat record per post, 50+ fields, deduplicated |
| Scale | Mix many inputs and keywords in one run; cap with maxItems |
| Pricing | Pay 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
maxItemsto 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
locationto match the country you care about, since trending content differs by market. - Reshape on the fly. Use
customMapFunctionto keep only the fields you need, for example justid,views, andchannel.username. - Search smart. Pair
keywordswithsortTypeof 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.