Tutorial
How to Scrape TikTok Data in 2026
Learn how to scrape TikTok videos, profiles, and trending data in 2026. Covers API approaches, browser scraping, and third-party services.
TikTok is one of the most scraped social platforms for trend analysis, influencer research, and content monitoring. However, it is heavily protected. Here are the working methods.
What You Can Scrape from TikTok
- Video metadata (likes, comments, shares, views)
- User profile information (followers, bio, videos)
- Hashtag and trending data
- Comment threads
- Sound/music usage data
Method 1: ScraperAPI (Recommended)
ScraperAPI handles TikTok's anti-bot protection automatically.
import requests
from bs4 import BeautifulSoup
API_KEY = "YOUR_SCRAPERAPI_KEY"
response = requests.get(
"http://api.scraperapi.com",
params={
"api_key": API_KEY,
"url": "https://www.tiktok.com/@username",
"render": "true"
}
)
soup = BeautifulSoup(response.text, "html.parser")
# TikTok embeds data in SIGI_STATE or __UNIVERSAL_DATA_FOR_REHYDRATION__
scripts = soup.find_all("script")
for script in scripts:
if script.string and "SIGI_STATE" in str(script.string):
print("Found TikTok data payload")
break
Method 2: TikTok's Hidden API
TikTok's web app uses internal API endpoints that return JSON data.
import requests
from curl_cffi import requests as cffi_requests
# User info API
user_url = "https://www.tiktok.com/api/user/detail/"
params = {
"uniqueId": "username",
"msToken": "" # Required - obtain from browser session
}
# Use curl_cffi for TLS fingerprint matching
response = cffi_requests.get(
user_url,
params=params,
impersonate="chrome136",
headers={
"Referer": "https://www.tiktok.com/",
}
)
if response.status_code == 200:
data = response.json()
user = data.get("userInfo", {}).get("user", {})
stats = data.get("userInfo", {}).get("stats", {})
print(f"Nickname: {user.get('nickname')}")
print(f"Followers: {stats.get('followerCount')}")
print(f"Videos: {stats.get('videoCount')}")
Method 3: Playwright with Stealth
from playwright.sync_api import sync_playwright
import json
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
api_data = []
page.on("response", lambda r: api_data.append(r) if "/api/" in r.url else None)
page.goto("https://www.tiktok.com/@username")
page.wait_for_load_state("networkidle")
# Extract embedded JSON data
data = page.evaluate("""
() => {
const el = document.getElementById('__UNIVERSAL_DATA_FOR_REHYDRATION__');
return el ? JSON.parse(el.textContent) : null;
}
""")
if data:
print(json.dumps(data, indent=2)[:1000])
browser.close()
TikTok's Anti-Scraping Measures
TikTok employs aggressive protection including:
- Device fingerprinting via their
tt_webidandmsTokencookies - Request signing with
X-Bogusand_signatureparameters - Rate limiting tied to both IP and device fingerprint
- Frequent API endpoint changes
Recommendation
For reliable TikTok scraping at any scale, use a managed API service like ScraperAPI or ScrapingAnt. TikTok updates their protection frequently, making self-maintained scrapers expensive to keep working.