TikTok Scraper Pro
Pricing
Pay per usage
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
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
accessStatusdiagnostics 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?
| Identity | Content | Media | Metrics | Context |
|---|---|---|---|---|
| Video URL | Description | Cover URL | Views | Source surface |
| Video ID | Hashtags | Dynamic cover URL | Likes | Source input |
| Author username | Mentions | Play URL | Comments | Access status |
| Author display name | Create time | Download URL when available | Shares | Extraction method |
| Author ID | Sound title | Width and height | Saves | Warnings |
| Author verified flag | Sound author | Duration | Optional profile snapshot |
Input
Core fields
startUrls: mix profile URLs, usernames, direct video URLs, hashtag URLs, search URLs, and music URLssearchQueries: convenience field for keyword searcheshashtags: convenience field for hashtag runsmusicUrls: convenience field for sounds and music pagesmaxItemsPerTarget: per-target video capdateFrom,dateTo: built-in date filteringminViews,minLikes,minComments: built-in popularity filtersextractionMode:fast,balanced, orfullincludeProfileDetailsincludeDownloadUrlssessionCookieHeaderproxyConfigurationemptyRunPolicydebugMode
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:
successpartial_resultempty_resultlogin_wallrate_limitedprivate_or_unavailablenot_foundunsupported_surfaceunknown_error
It also persists:
RUN_METASUMMARY.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 ApifyClientimport osclient = 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().itemsprint(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.