🎵 Api In Tiktok + CSV, JSON & API
Pricing
from $2.97 / 1,000 posts
🎵 Api In Tiktok + CSV, JSON & API
Pull about, videos, users, channels, based in bulk. Every row carries hashtags, full, user, profiles, including, posts, total, likes, name. Ready for CSV, Excel, JSON or the API.
Pricing
from $2.97 / 1,000 posts
Rating
0.0
(0)
Developer
Tarek Etman
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Tiktok Post Scraper
Tiktok Post Scraper extracts structured records in bulk and exports them for analysis, enrichment and downstream pipelines. It covers tiktok, metadata, media, public, content, videos, user, profiles, hashtag, search, results, keyword-based, crawls, pages, collect, engagement, signals, likes, shares, plays.
Built for teams that need comments, follower, counts, post, descriptions, subtitles, captions, text without maintaining scrapers, proxies or browser infrastructure themselves.
Quick start (SDK examples)
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("tiktok-post-scraper").call(run_input={"targets": ["<target>"], "maxResults": 100})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
JavaScript
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_APIFY_TOKEN" });const run = await client.actor("tiktok-post-scraper").call({ targets: ["<target>"], maxResults: 100 });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL
curl -X POST "https://api.apify.com/v2/acts/tiktok-post-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"targets":["<target>"],"maxResults":100}'
Fields returned
| field | description | type |
|---|---|---|
text | text returned for every record | string |
url | url returned for every record | string |
author | author returned for every record | string |
publishedAt | publishedAt returned for every record | string |
likes | likes returned for every record | string |
comments | comments returned for every record | string |
image | image returned for every record | string |
room_id | room id returned for every record | string |
room_title | room title returned for every record | string |
app_platform | app platform returned for every record | string |
created_at | created at returned for every record | string |
visible_type | visible type returned for every record | string |
live_cover | live cover returned for every record | string |
scrapedAt | scrapedAt returned for every record | string |
What it does
- Extract tiktok, metadata, media, public, content, videos into structured rows.
- Enrich each record with user, profiles, hashtag, search, results, keyword-based.
- Bulk export covering crawls, pages, collect, engagement, signals, likes.
- Pipeline integration for shares, plays, comments, follower, counts, post.
- Downstream analysis across descriptions, subtitles, captions, text, language, timestamps.
- Recurring monitoring of name, assets, files, cover, images, slideshow.
- Deduplicated output keyed on the record identifier.
- Configurable result caps and runtime bounds.
Use cases
- Lead generation — build contactable lists covering tiktok, metadata, media, public, content
- Data enrichment — attach videos, user, profiles, hashtag, search to an existing record set
- Market research — map results, keyword-based, crawls, pages, collect across a category or region
- Competitive monitoring — track engagement, signals, likes, shares, plays over time on a schedule
- AI and RAG pipelines — feed clean structured rows into embeddings and retrieval
- Warehousing — land comments, follower, counts, post, descriptions into BigQuery, Snowflake or Postgres
Input
Provide targets as a list of URLs or identifiers, one per line.
| input | purpose |
|---|---|
targets | URLs or identifiers to process, one per line |
maxResults | hard cap on returned rows |
maxSeconds | runtime bound for the run |
includeEmpty | return rows that resolved to no data, or skip them |
Output
Every run writes a dataset exportable as CSV, Excel, JSON, or readable directly from the Apify API. Attach a webhook to push results into your own system as soon as a run finishes.
Integrations
Works with Zapier, Make, n8n, Google Sheets, Slack, and any HTTP endpoint via webhooks. The Apify MCP server exposes this Actor to AI agents directly.
Performance and limits
Runs are concurrent and bounded by maxResults and maxSeconds. Proxy rotation and retry handling are managed for you. Failed targets are reported rather than silently dropped.
Frequently asked questions
Do I need an account or cookies?
No. The Actor reads public data only and requires no login, cookies or personal API keys.
What formats can I export?
CSV, Excel, JSON, or read the dataset straight from the Apify API.
What does a row contain?
Every row carries tiktok, metadata, media, public, content, videos, user, profiles where available.
Can I schedule it?
Yes. Attach a schedule or a webhook and the dataset is produced on your cadence.
How do I limit cost?
Use maxResults to cap returned rows and maxSeconds to bound runtime.
Is the output stable?
Field names are fixed by the dataset schema, so downstream pipelines do not break between runs.
Field glossary
text — the text associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
url — the url associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
author — the author associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
publishedAt — the publishedAt associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
likes — the likes associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
comments — the comments associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
image — the image associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
room_id — the room id associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
room_title — the room title associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
app_platform — the app platform associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
created_at — the created at associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
visible_type — the visible type associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
live_cover — the live cover associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
scrapedAt — the scrapedAt associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.
Troubleshooting
- Empty dataset — Check that
targetscontains reachable identifiers and thatincludeEmptyis set the way you expect. - Run times out — Lower
maxResultsor raisemaxSeconds; very large target lists are better split across scheduled runs. - Missing fields — Not every source exposes every field. Absent values are returned as null so the schema stays stable.
- Rate limiting — Proxy rotation is automatic. If a source throttles hard, reduce concurrency and retry.
- Duplicate rows — Output is deduplicated on the record identifier; duplicates across separate runs are expected by design.
Data quality notes
Records are parsed from public sources covering tiktok, metadata, media, public, content, videos, user, profiles, hashtag, search. Values are returned exactly as published rather than normalised or inferred, so you can audit any row back to its source URL. Timestamps are ISO-8601 UTC. Numeric counters are integers. No field is synthesised when the source does not publish it.
Scheduling and automation
Attach a schedule to run this Actor hourly, daily or weekly. Combine it with a webhook to push each finished dataset into your warehouse, CRM or Slack channel automatically. Runs are idempotent with respect to their input, so a repeated schedule produces a comparable dataset rather than a drifting one.
Support
Open an issue on the Actor's Issues tab. Include the run ID and the input used so it can be reproduced.