TikTok Posts Scraper
Pricing
from $1.00 / 1,000 posts
TikTok Posts Scraper
Scrape TikTok posts for any search keyword - captions, authors, stats, music, hashtags, and video URLs.
Pricing
from $1.00 / 1,000 posts
Rating
0.0
(0)
Developer
Harpoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
TikTok Posts Scraper — TikTok posts for any keyword, as clean structured rows
Enter one or more search keywords and get the matching TikTok posts back as structured data: caption, author and audience size, play/like/comment/share counts, music, hashtags, and video URLs. Set how many posts to pull per keyword and download the result as JSON, CSV, Excel, or XML. No login or API key required.
What can TikTok Posts Scraper do?
- Pull TikTok posts for one keyword or hundreds in a single run
- Accept single words (
hulk) or phrases (mark ruffalo,coffee shop) - Return captions, authors, audience size, engagement stats, music, hashtags, and video/cover URLs
- Deduplicate repeated keywords automatically
- Export to JSON, CSV, Excel, or XML; run via the API, schedule runs, and connect through MCP
What data can I extract?
| What you get | Features |
|---|---|
|
|
How to use TikTok Posts Scraper
- Create a free Apify account.
- Open TikTok Posts Scraper in Apify Console.
- Type one or more keywords into Search keywords, one per line.
- Set Max posts per keyword (default 100).
- Click Save & Start.
- Download the results in JSON, CSV, Excel, or XML from the Storage tab.
Input
Give it a list of keywords; each one contributes its own posts to the dataset. For each keyword the Actor reads the posts and stops at your cap.
keywords— one keyword or phrase per line.max_posts— how many posts to return per keyword (default 100).
Example input
{"keywords": ["mark ruffalo", "coffee shop"],"max_posts": 100}
See the Input tab above for every parameter.
Output
Results land in a dataset under the Storage tab. Three built-in views are included: Overview, Authors, and Engagement. Download in JSON, CSV, Excel, or XML, or pull them via the API.
{"id": "7686420838932958496","keyword": "mark ruffalo","description": "#hulk #markruffalo #marveledit #avengersdoomsday #trend","created_at": 1789634320,"url": "https://www.tiktok.com/@themntlst/video/7686420838932958496","author": {"username": "themntlst","nickname": "themntlst","id": "7668723627462853654","sec_uid": "MS4wLjABAAAAjlPa777QWN3WrCyMUfg4bgFcFP0nQDAE5xKxycll93uC97m4Fp9J2DD-_uh4TirL","verified": false,"private": false,"signature": "","avatar_url": "https://p16-common-sign.tiktokcdn.com/tos-useast2a-avt-0068-euttp/65ccd7b0d9169e627d2a48_n.jpeg","follower_count": 12400,"following_count": 10,"video_count": 69,"heart_count": 5900000},"stats": {"play_count": 53000,"like_count": 4039,"comment_count": 32,"share_count": 117,"collect_count": 338},"music": {"id": "7686420865760250657","title": "оригинальный звук","author_name": "themntlst","duration": 15,"original": true,"play_url": "https://v16-webapp-prime.tiktok.com/video/tos/useast2a/tos-useast2a-v-2370-euttp/oMpKhiL_n.mp3"},"hashtags": ["hulk", "markruffalo", "marveledit", "avengersdoomsday", "trend"],"video": {"duration": 15,"ratio": "540p","width": 1036,"height": 576,"definition": "540p","cover_url": "https://p16-common-sign.tiktokcdn.com/tos-useast2a-p-0037-euttp/osfLyD2In0F0GlefIg7rKMVx_n.jpeg","dynamic_cover_url": "https://p16-common-sign.tiktokcdn.com/tos-useast2a-p-0037-euttp/okDAApfVGFKALI0BIVED7xfn_n.jpeg","play_url": "https://v16-webapp-prime.tiktok.com/video/tos/useast2a/tos-useast2a-ve-0068c001-euttp/oc_n.mp4","download_url": "https://v16-webapp-prime.tiktok.com/video/tos/useast2a/tos-useast2a-ve-0068-euttp/oEIrEQ_n.mp4"},"scraped_at": "2026-09-17T15:31:34Z"}
Field names are lowercase snake_case, and the input keys match them. Long URLs and text are abbreviated for readability — the dataset contains the full values.
What can you do with the data?
1. Track a topic or brand
- Run the Actor over your brand, product, or campaign keywords.
- Open the Overview view and sort by
stats.play_count. - Schedule a recurring run to follow how the topic trends.
2. Find creators to work with
- Run the Actor over niche keywords.
- Use the Authors view to shortlist by
author.follower_countandauthor.verified. - Open
author.usernameto review the creator before reaching out.
3. Build a content / caption dataset
- Run the Actor over hashtags or topics.
- Export the dataset to CSV or JSON.
- Feed
descriptionandhashtagsinto content, trend, or language analysis.
How much does TikTok Posts Scraper cost?
This Actor is billed per post returned (pay-per-event) on top of standard Apify platform usage. A run over 10 keywords at 100 posts each is billed as up to 1,000 results; keywords with fewer posts than the cap are billed for what they return.
See the Pricing tab for current rates and your plan's discounts.
FAQ
Do I need a TikTok account, cookies, or an API key? No. The Actor reads publicly available search results, so no login or credentials are required.
Can it scrape private accounts or restricted content? No. Only posts that are publicly visible are returned; private or restricted content is skipped.
How many posts can I get per keyword?
Up to max_posts (default 100). Raise it for more; large pulls take longer and are billed per post
returned.
Which keywords work best? Short, popular terms work best — brand names, creators, products, and topics.
Why do the numbers differ from what I see when logged in? Public views can show different play or like counts than a logged-in session. The dataset reflects what is publicly available at run time.
Is it legal to scrape TikTok? Public data only. Captions, usernames, and profile details may be personal data — only collect it when you have a legitimate reason, and follow Apify's legal guidance and the applicable terms.
Can I use it with the API, SDKs, or MCP? Yes — see the API tab above, or connect through the Apify MCP server.
A keyword is missing from the results. That keyword is logged with the reason (for example, a temporary failure or a rate limit). The rest of the run continues; re-run just that keyword if needed.
Notes and limitations
- Public posts only — private accounts and region-restricted content are not available.
created_atis a Unix timestamp in UTC.video.play_urlandvideo.download_urlare time-limited media links; download them soon after the run if you need to keep the files.download_urlis empty for some posts.- Play and like counts are rounded by TikTok (e.g.
19200000for "19.2M"), matching what the public page shows.
Run locally
go run ./cmd/actor
Input is read from the Apify key-value store; see INPUT_SCHEMA.json.
Support
Found a bug or have feedback? Open an issue in the Issues tab.