Skip to main content

How to Scrape TikTok Videos, Profiles & Hashtags with Apify (2026)

· 6 min read
Yassine El Haddad
Software Developer & Automation Specialist

I build production AI agents, web scrapers, and automation pipelines. Most of what I publish here comes from the actual problems they run into: proxies that get banned, anti-bot stacks that fingerprint your client, RAG that drifts when the underlying data moves. Stack: Python, TypeScript, Go, FastAPI, LangChain, Crawlee, Playwright, deployed on AWS, GCP, and Cloudflare.

TikTok data supports trend research, influencer discovery, competitor content analysis, and social listening. Doing it yourself means fighting mobile-first fingerprints, aggressive rate limits, and proxy requirements. Apify's TikTok Scraper runs in the cloud so you can focus on analysis instead of infrastructure.

Quick Answer

Apify's TikTok Scraper extracts video metadata, comments, profiles, and hashtag content from TikTok. No coding required — runs on the Apify cloud.

Open the TikTok Scraper after you create an Apify account. You can start with the free plan and scale usage as your datasets grow.

What you can extract

Video fields (typical)

FieldExample / notes
Video IDStable identifier for deduplication
Author usernamee.g. @creator
CaptionFull text including hashtags
View / like / comment / share countsEngagement metrics
DurationSeconds
Posted timeISO timestamp when available
Video URLCDN URL (respect platform terms for downloads)
Music title & IDFor sound-based campaigns
HashtagsParsed from caption
LocationWhen the creator attached one

Profile fields (typical)

FieldExample / notes
Username & display nameDiscovery and CRM keys
BioPositioning and links
Follower / following / total likesReach signals
Video countActivity level
Verified flagTrust / brand fit

What you should not expect from public scraping

  • Private accounts — not accessible without authorized access.
  • Direct messages — out of scope for public data tools.
  • Per-viewer demographics — not in standard public payloads.
  • Guaranteed video files — URLs may be time-limited or restricted; always comply with TikTok's terms and copyright.

Why TikTok is hard to scrape yourself

TikTok scores requests using mobile vs desktop signals, IP reputation (datacenter IPs often fail fast), timing patterns, and TLS fingerprints. A simple requests script from a server IP is likely to be blocked quickly. The TikTok Scraper is maintained to emulate realistic clients and use appropriate proxies so you do not have to wire that stack by hand.

Step-by-step: run your first scrape

1. Pick an input mode

  1. Profile URLs — e.g. https://www.tiktok.com/@username for profile details and recent videos.
  2. Hashtags — e.g. #cooking for tag feeds.
  3. Search queries — keyword-style discovery.
  4. Music IDs — find every public video using a given sound.

2. Configure the Actor

  1. Open TikTok Scraper.
  2. Paste your URLs, tags, or queries in the input JSON or UI fields (follow the Actor's current schema on the Input tab).
  3. Set maximum results to 200–500 for a first validation run.
  4. Avoid changing proxy options unless you have a documented reason—defaults are optimized for TikTok.

3. Validate output quality

Before scaling, confirm:

  • Numeric fields (viewCount, likeCount, commentCount) are populated.
  • Captions are non-empty where you expect text.
  • Timestamps parse correctly in your downstream tools.

If something is missing, check the Actor's Changelog and Issues on the Store page; TikTok updates frequently and Actors ship fixes on their own cadence.

Sample dataset output

Your exact keys depend on the Actor version and input type. A simplified example:

{
"id": "7234567890123456789",
"text": "Full caption with #recipe #food",
"createTime": 1735123456,
"authorMeta": {
"name": "creator_handle",
"nickName": "Display Name",
"verified": true,
"fans": 1250000
},
"playCount": 54200000,
"diggCount": 3800000,
"commentCount": 48230,
"shareCount": 1200000,
"musicMeta": {
"musicName": "Original sound",
"musicId": "7234567890123456"
},
"videoUrl": "https://..."
}

Use this shape to design columns in Sheets, warehouses, or your analytics stack.

Trend analysis workflow (optional)

  1. Choose 5–10 seed hashtags in your niche.
  2. Scrape ~500 videos per hashtag.
  3. Parse hashtags from captions across the combined dataset.
  4. Score tags by average views per video and total volume—high average views with moderate total volume can surface early breakout topics.
  5. Refresh weekly so you are not optimizing on stale engagement.
Apify Affiliate Banner 728x90Apify Affiliate Banner 728x90Apify Affiliate Banner 300x50Apify Affiliate Banner 300x50
Run TikTok scraping without managing proxies

Start on Apify and open the TikTok Scraper—your first structured dataset is usually minutes away.

Frequently Asked Questions

Scraping publicly visible TikTok content for research or marketing is common, but TikTok's Terms of Service restrict automated access. Legality depends on jurisdiction, how you use the data, and whether personal data (e.g., EU creators) triggers GDPR obligations. Consult qualified counsel for high-risk use cases.

TikTok expects mobile-like clients, healthy IP reputation, and human-like timing. Datacenter IPs and bare HTTP clients are easy to flag. Managed Actors on Apify handle much of that operational burden for you.

Start with 200–500 to validate schema and stability. Production jobs often use a few thousand items per run; very large single runs may hit platform or Actor limits, so batching by hashtag or profile is safer.

Outputs may include CDN URLs. Whether you may download or redistribute video is a separate legal and policy question. Always respect copyright, music licensing, and TikTok's terms before saving or republishing media.

Yes—when the Actor and input mode you choose support comments, you can retrieve comment threads for analysis. Check the TikTok Scraper input schema and README for the exact comment-related fields and limits.

Use Apify schedules for recurring jobs, the REST API for programmatic starts, or connect to Make, n8n, or Zapier via webhooks and dataset export. See the integrations overview in the docs for your stack.

Common mistakes and fixes

Run returns empty or partial fields

Lower max results, retry with a single profile or hashtag first, and check the Actor README for required input format. Update to the latest Actor version in the Store.

Frequent timeouts or aborted runs

Avoid huge single runs; split by hashtag or profile. Keep default proxy settings unless Apify docs recommend a change for your use case.

Counts or captions look stale

TikTok changes layouts often—check the Actor changelog. Re-run a small sample to confirm field mapping.