Tiktok Post Apify Scraper avatar

Tiktok Post Apify Scraper

Pricing

from $1.70 / 1,000 results

Go to Apify Store
Tiktok Post Apify Scraper

Tiktok Post Apify Scraper

Pricing

from $1.70 / 1,000 results

Rating

0.0

(0)

Developer

Arishma

Arishma

Maintained by Community

Actor 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.

EventWhen it is chargedPrice per 1,000
post-scraped: ResultEvery post saved to the dataset$1.70
follower-following: Follower / FollowingEvery saved post (each one includes the author's follower and following counts in authorMeta)$1.50
date-filter: Date filterEvery saved profile post when oldestPostDate is used$0.60
proxy-country: Scrape as in countryEvery saved post when an Apify Proxy country is selected$0.60
extra-post: Extra postsEvery saved post after the first 20 posts of a run$0.60
apify-actor-start: Actor startOnce 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

FieldDefaultDescription
profilesProfile URLs or usernames (https://www.tiktok.com/@name, @name, name). The latest posts of each profile are scraped.
postURLsIndividual post links (https://www.tiktok.com/@name/video/123, /photo/123, or short links vm.tiktok.com/..., vt.tiktok.com/..., tiktok.com/t/...).
resultsPerPage100Maximum latest posts per profile (1 to 1,000).
oldestPostDateOnly profile posts published on or after this date. Absolute (2026-09-18) or relative (7 days, 2 weeks, 3 months).
excludePinnedPostsfalseSkip posts pinned to the top of a profile.
enrichAuthorMetatruePost 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.
proxyApify 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.
  • fromProfileSection is "videos" for profile posts and null for posts scraped from postURLs.
  • videoMeta.duration is 0 for 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.