TikTok Posts Scraper avatar

TikTok Posts Scraper

Pricing

from $1.00 / 1,000 posts

Go to Apify Store
TikTok Posts Scraper

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

Harpoon

Maintained by Community

Actor 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 getFeatures
  • Post — post ID, caption, created time, canonical URL, duration, dimensions
  • Author — username, nickname, avatar, bio, verified/private flags, follower/following/video counts
  • Engagement — plays, likes, comments, shares, and collects per post
  • Music & tags — sound id, title, artist, duration, plus every hashtag on the post
  • Media — cover image and video play/download URLs
  • Up to your chosen cap per keyword
  • One row per post, keyed by post ID
  • Export to JSON, CSV, Excel, XML
  • API access, webhooks, scheduling, LLM-ready output for MCP

How to use TikTok Posts Scraper

  1. Create a free Apify account.
  2. Open TikTok Posts Scraper in Apify Console.
  3. Type one or more keywords into Search keywords, one per line.
  4. Set Max posts per keyword (default 100).
  5. Click Save & Start.
  6. 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

  1. Run the Actor over your brand, product, or campaign keywords.
  2. Open the Overview view and sort by stats.play_count.
  3. Schedule a recurring run to follow how the topic trends.

2. Find creators to work with

  1. Run the Actor over niche keywords.
  2. Use the Authors view to shortlist by author.follower_count and author.verified.
  3. Open author.username to review the creator before reaching out.

3. Build a content / caption dataset

  1. Run the Actor over hashtags or topics.
  2. Export the dataset to CSV or JSON.
  3. Feed description and hashtags into 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_at is a Unix timestamp in UTC.
  • video.play_url and video.download_url are time-limited media links; download them soon after the run if you need to keep the files. download_url is empty for some posts.
  • Play and like counts are rounded by TikTok (e.g. 19200000 for "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.