Tiktok Post Apify Scraper
Pricing
from $1.70 / 1,000 results
Tiktok Post Apify Scraper
Pricing
from $1.70 / 1,000 results
Rating
0.0
(0)
Developer
Arishma
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
TikTok Post Scraper
Extract TikTok posts from public profiles or from individual post URLs: caption, plays, likes, comments, shares, saves, duration, music, hashtags, mentions and full author stats. Filter profile posts by date and pay only for the posts you get.
Need only profile data (followers, likes, bio) without posts? Use the TikTok Profile Scraper Actor instead. It is faster and cheaper.
No TikTok account or login required.
Pricing
This Actor uses Pay Per Event (PPE) monetization.
| Event | When it is charged | Price per 1,000 |
|---|---|---|
post-scraped: Result | Every post saved to the dataset | $1.70 |
follower-following: Follower / Following | Every saved post (each one includes the author's follower and following counts in authorMeta) | $1.50 |
date-filter: Date filter | Every saved profile post when oldestPostDate is used | $0.60 |
proxy-country: Scrape as in country | Every saved post when an Apify Proxy country is selected | $0.60 |
extra-post: Extra posts | Every saved post after the first 20 posts of a run | $0.60 |
apify-actor-start: Actor start | Once per run | $0.001 per run |
- The first 20 posts of a run: $3.20 per 1,000 (Result + Follower / Following).
- Every post after that: $3.80 per 1,000 (+ Extra posts). Example: 1,000 posts in one run = $3.79.
- The date filter and a proxy country add $0.60 per 1,000 each.
- Failed profiles and posts (not found, private, deleted, blocked) are not charged.
- Profiles with no posts matching your filters are not charged.
- Set a maximum cost per run in the Apify Console. The Actor saves only as many posts as your limit allows (counting all events above), then stops.
What it extracts
Post
- Video ID and URL
- Caption text and language
- Created date (ISO 8601 and Unix timestamp)
- Plays, likes, comments, shares, saves and reposts
- Duration, size, cover image and subtitle links
- Hashtags and mentions
- Slideshow flag and image links
- Pinned, ad and sponsored flags
Music
- Music name, author and album
- Original sound flag
- Music URL and cover
Author
- Username, nickname, ID and profile URL
- Verified and private flags
- Bio and bio link
- Avatar
- Followers, following, total likes and video count
Author data is the same for posts scraped from a profile and from a post URL (see enrichAuthorMeta).
Input
| Field | Default | Description |
|---|---|---|
profiles | Profile URLs or usernames (https://www.tiktok.com/@name, @name, name). The latest posts of each profile are scraped. | |
postURLs | Individual post links (https://www.tiktok.com/@name/video/123, /photo/123, or short links vm.tiktok.com/..., vt.tiktok.com/..., tiktok.com/t/...). | |
resultsPerPage | 100 | Maximum latest posts per profile (1 to 1,000). |
oldestPostDate | Only profile posts published on or after this date. Absolute (2026-09-18) or relative (7 days, 2 weeks, 3 months). | |
excludePinnedPosts | false | Skip posts pinned to the top of a profile. |
enrichAuthorMeta | true | Post pages don't include the author's bio link or friend count. When on, each author's profile is fetched once per run (plain HTTP, no browser) so post URL results get the full authorMeta. |
proxy | Apify Proxy (RESIDENTIAL) | Proxy configuration. If no proxy is set, or Apify Proxy is off without custom proxy URLs, Apify RESIDENTIAL proxy is used automatically. With Apify RESIDENTIAL, pages are tried over Apify datacenter proxy first and only go through residential if TikTok blocks them there. |
You can use profiles, postURLs or both in one run. A post link pasted into profiles is scraped as that single post. The profile filters (resultsPerPage, oldestPostDate, excludePinnedPosts) don't apply to postURLs.
Input field names match other popular TikTok scrapers, so you can reuse an existing input. Unsupported fields (download options, search, profileSorting other than latest) are ignored.
Example
{"profiles": ["https://www.tiktok.com/@hyundaiuk"],"postURLs": ["https://www.tiktok.com/@marksandspenceruk/video/7691236769001524513"],"resultsPerPage": 100,"oldestPostDate": "2026-09-18","excludePinnedPosts": false}
Output
Results are written to the default Apify Dataset and can be exported as JSON, CSV, XLSX, XML, or retrieved through the Apify API.
Example post record (shortened):
{"id": "7691760853527399713","text": "Me: \"I need coffee.\"\nHyundai Coffee Club: \"We've got that covered.\" ☕😏\n#HyundaiUK #WorldCoffeeDay #CoffeeMoments #CarTok #fyp","textLanguage": "en","createTime": 1790877613,"createTimeISO": "2026-10-01T18:00:13.000Z","isAd": false,"authorMeta": {"id": "7418943130583778337","name": "hyundaiuk","profileUrl": "https://www.tiktok.com/@hyundaiuk","nickName": "hyundaiuk","verified": true,"signature": "Home of #HyundaiUK.","bioLink": null,"avatar": "https://p16-common-sign.tiktokcdn.com/...","privateAccount": false,"following": 18,"friends": 5,"fans": 3284,"heart": 30200,"video": 117,"digg": 0},"musicMeta": {"musicName": "original sound","musicAuthor": "hyundaiuk","musicOriginal": true,"musicAlbum": null,"playUrl": "https://v16m.tiktokcdn.com/...","coverMediumUrl": "https://p16-common-sign.tiktokcdn.com/...","musicId": "7691760883806014240"},"webVideoUrl": "https://www.tiktok.com/@hyundaiuk/video/7691760853527399713","videoMeta": {"height": 1024,"width": 576,"duration": 18,"coverUrl": "https://p16-common-sign.tiktokcdn.com/...","originalCoverUrl": "https://p16-common-sign.tiktokcdn.com/...","definition": "540p","format": "mp4","subtitleLinks": []},"diggCount": 15,"shareCount": 0,"playCount": 307,"collectCount": 0,"commentCount": 1,"repostCount": 0,"mentions": [],"detailedMentions": [],"hashtags": [{ "id": "1681351558161410", "name": "hyundaiuk" },{ "id": "1646155974970369", "name": "worldcoffeeday" }],"isSlideshow": false,"slideshowImageLinks": [],"isPinned": false,"isSponsored": false,"input": "https://www.tiktok.com/@hyundaiuk","fromProfileSection": "videos"}
Notes:
- Profile posts are returned newest first. Pinned posts appear first and never stop a date-filtered scrape early.
fromProfileSectionis"videos"for profile posts andnullfor posts scraped frompostURLs.videoMeta.durationis0for photo slideshows (isSlideshow: true).- Media URLs (avatar, cover, music) are signed by TikTok and expire after some time.
- Counts are as shown by TikTok at the time of the run.
Failed profiles and posts are returned with status: "failed" and a note explaining why. They are not charged:
{"input": "@doesnotexist","status": "failed","note": "Profile not found.","isProxyUsed": true}
Important
This Actor collects only publicly available information. Users are responsible for complying with TikTok's terms, applicable laws, and privacy/data-protection requirements.
The Actor is not affiliated with, endorsed by, or sponsored by TikTok or ByteDance.