TikTok Scraper Pro avatar

TikTok Scraper Pro

Pricing

Pay per usage

Go to Apify Store
TikTok Scraper Pro

TikTok Scraper Pro

Scrape TikTok videos from profiles, video URLs, search, hashtags, and sounds with stronger diagnostics, simpler pricing, and cleaner output.

Pricing

Pay per usage

Rating

5.0

(1)

Developer

Netdesignr

Netdesignr

Maintained by Community

Actor stats

1

Bookmarked

4

Total users

2

Monthly active users

9 days ago

Last modified

Categories

Share

Scrape TikTok videos from profiles, direct video URLs, searches, hashtags, and music pages with clearer diagnostics, simpler pricing, and a cleaner output schema than older all-in-one actors.

Why This Actor Exists

Many TikTok scrapers are broad but hard to reason about:

  • pricing gets complicated fast
  • filter features are sold as add-ons
  • empty runs are hard to diagnose
  • outputs vary by surface and need cleanup before they are useful

TikTok Scraper Pro is built to be easier to run in production:

  • one normalized video schema across supported surfaces
  • honest accessStatus diagnostics per target
  • built-in date and popularity filters
  • optional session cookies for degraded public pages
  • one simple pay-per-event model for emitted videos

Supported Surfaces

  • TikTok usernames and profile URLs
  • Direct TikTok video URLs
  • TikTok search result pages
  • TikTok hashtag pages
  • TikTok music and sound pages

What Data Can I Extract With TikTok Scraper Pro?

IdentityContentMediaMetricsContext
Video URLDescriptionCover URLViewsSource surface
Video IDHashtagsDynamic cover URLLikesSource input
Author usernameMentionsPlay URLCommentsAccess status
Author display nameCreate timeDownload URL when availableSharesExtraction method
Author IDSound titleWidth and heightSavesWarnings
Author verified flagSound authorDurationOptional profile snapshot

Input

Core fields

  • startUrls: mix profile URLs, usernames, direct video URLs, hashtag URLs, search URLs, and music URLs
  • searchQueries: convenience field for keyword searches
  • hashtags: convenience field for hashtag runs
  • musicUrls: convenience field for sounds and music pages
  • maxItemsPerTarget: per-target video cap
  • dateFrom, dateTo: built-in date filtering
  • minViews, minLikes, minComments: built-in popularity filters
  • extractionMode: fast, balanced, or full
  • includeProfileDetails
  • includeDownloadUrls
  • sessionCookieHeader
  • proxyConfiguration
  • emptyRunPolicy
  • debugMode

Example input

{
"startUrls": [
"nike",
"https://www.tiktok.com/search?q=marketing",
"https://www.tiktok.com/music/original-sound-6689804660171082501"
],
"maxItemsPerTarget": 10,
"dateFrom": "30 days",
"minLikes": 100,
"includeProfileDetails": true,
"includeDownloadUrls": true,
"extractionMode": "balanced"
}

Output

Each dataset item is one normalized TikTok video record.

{
"recordType": "video",
"sourceType": "search",
"sourceInput": "https://www.tiktok.com/search?q=marketing",
"canonicalUrl": "https://www.tiktok.com/@ceekmarketing/video/7608320917227179286",
"id": "7608320917227179286",
"description": "Save these content trends for your next content day...",
"hashtags": ["socialmedia", "contenttrends", "marketing"],
"mentions": [],
"createTime": "2026-02-18T12:11:03.000Z",
"durationSeconds": 48,
"coverUrl": "https://...",
"videoUrl": "https://...",
"downloadUrl": "https://...",
"commentCount": 12,
"likeCount": 500,
"shareCount": 20,
"viewCount": 20000,
"authorUsername": "ceekmarketing",
"authorDisplayName": "Ceek Marketing",
"musicTitle": "Original Sound",
"accessStatus": "success",
"extractionMethod": "browser_api",
"warnings": [],
"scrapedAt": "2026-03-26T13:30:00.000Z"
}

Diagnostics

This actor does not silently flatten blocked or degraded targets into fake success. Each target is summarized with:

  • success
  • partial_result
  • empty_result
  • login_wall
  • rate_limited
  • private_or_unavailable
  • not_found
  • unsupported_surface
  • unknown_error

It also persists:

  • RUN_META
  • SUMMARY.json

API Examples

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('netdesignr/tiktok-scraper-pro').call({
searchQueries: ['marketing'],
maxItemsPerTarget: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("netdesignr/tiktok-scraper-pro").call(run_input={
"hashtags": ["travel"],
"maxItemsPerTarget": 5,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL

curl -X POST "https://api.apify.com/v2/acts/netdesignr~tiktok-scraper-pro/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": ["https://www.tiktok.com/search?q=marketing"],
"maxItemsPerTarget": 5
}'

Positioning Against Older TikTok Actors

This actor is designed to compete on:

  • simpler pricing
  • stronger diagnostics
  • cleaner schema
  • built-in filtering instead of paid filter add-ons
  • more honest handling of degraded public surfaces

Current Limitations

  • TikTok profile, hashtag, and music collection can degrade on aggressive anti-bot conditions
  • follower and following graph extraction is intentionally out of scope for v1
  • full comment trees are out of scope for v1
  • subtitles are not guaranteed across all surfaces yet

Responsible Use

Use this actor only for data you are permitted to access and process. Respect TikTok terms, local law, privacy obligations, and your downstream usage responsibilities.