TikTok Scraper — Videos, Profiles & Hashtags, 3x Cheaper avatar

TikTok Scraper — Videos, Profiles & Hashtags, 3x Cheaper

Under maintenance

Pricing

Pay per usage

Go to Apify Store
TikTok Scraper — Videos, Profiles & Hashtags, 3x Cheaper

TikTok Scraper — Videos, Profiles & Hashtags, 3x Cheaper

Under maintenance

Scrape TikTok videos, profiles, and hashtags. Get likes, views, comments, shares, music, descriptions. Works with Apify residential proxies. $0.001/video — 3x cheaper than alternatives.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Ken Digital

Ken Digital

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Categories

Share

🎵 TikTok Scraper — Videos, Profiles & Hashtags

Scrape TikTok video data from profiles, hashtags, and search queries. Get all the metadata you need: likes, views, comments, shares, music info, descriptions, and more.

No TikTok API key needed. No login required.

💰 Pricing — 3x Cheaper Than Alternatives

ActorPrice per video1,000 videos10,000 videos
This actor$0.001$1.00$10.00
Competitor A$0.003$3.00$30.00
Competitor B$0.005$5.00$50.00

⚡ Features

  • 🔍 Search scraping — find videos by any keyword
  • 👤 Profile scraping — get all videos from any user
  • #️⃣ Hashtag scraping — scrape videos by hashtag
  • 🚀 Concurrent — processes multiple sources in parallel
  • 🔄 Auto-retry — handles rate limits with exponential backoff
  • 🌐 Proxy support — uses Apify residential proxies to avoid blocks
  • 🧹 Deduplication — no duplicate videos in your dataset

📥 Input

{
"profiles": ["charlidamelio", "khaby.lame"],
"searchQueries": ["cooking recipes", "dance tutorial"],
"hashtags": ["fyp", "viral"],
"maxVideos": 30
}
ParameterTypeRequiredDefaultDescription
profilesarrayNo*[]TikTok usernames or profile URLs
searchQueriesarrayNo*[]Search terms to find videos
hashtagsarrayNo*[]Hashtag names (without #)
maxVideosintegerNo30Max videos per source (1–500)

* At least one of profiles, searchQueries, or hashtags must be provided.

Profile input formats — all of these work:

  • charlidamelio
  • @charlidamelio
  • https://www.tiktok.com/@charlidamelio

📤 Output

Each video in the dataset contains:

{
"id": "7345678901234567890",
"url": "https://www.tiktok.com/@charlidamelio/video/7345678901234567890",
"description": "New dance 💃 #fyp #dance #viral",
"createTime": 1709251200,
"authorUsername": "charlidamelio",
"authorNickname": "Charli D'Amelio",
"authorFollowers": 155000000,
"likes": 2500000,
"comments": 45000,
"shares": 12000,
"plays": 35000000,
"musicTitle": "original sound",
"musicAuthor": "charlidamelio",
"hashtags": ["fyp", "dance", "viral"],
"coverUrl": "https://p16-sign.tiktokcdn.com/...",
"duration": 15,
"isAd": false,
"source": "profile",
"sourceValue": "charlidamelio"
}
FieldTypeDescription
idstringTikTok video ID
urlstringDirect link to the video
descriptionstringVideo caption/description
createTimeintegerUnix timestamp of creation
authorUsernamestringAuthor's unique username
authorNicknamestringAuthor's display name
authorFollowersintegerAuthor's follower count
likesintegerNumber of likes (diggs)
commentsintegerNumber of comments
sharesintegerNumber of shares
playsintegerNumber of plays/views
musicTitlestringTitle of the music/sound used
musicAuthorstringAuthor of the music/sound
hashtagsarrayHashtags extracted from description
coverUrlstringVideo thumbnail URL
durationintegerVideo duration in seconds
isAdbooleanWhether the video is an ad
sourcestringInput source type: profile, search, or hashtag
sourceValuestringThe specific profile/query/hashtag

🔧 How It Works

  1. Fetches the TikTok page (profile, search, or hashtag URL)
  2. Extracts the embedded __UNIVERSAL_DATA_FOR_REHYDRATION__ JSON
  3. Parses video metadata from the hydration data
  4. Deduplicates and pushes clean results to the dataset

No headless browser needed — pure HTTP requests for speed and cost efficiency.

🛡️ Anti-Blocking

  • Uses residential proxies (Apify proxy with RESIDENTIAL group)
  • Realistic browser headers (Chrome 131 on Windows)
  • Concurrency limiter (max 3 simultaneous requests)
  • Exponential backoff on 429 rate limits
  • Automatic retries (up to 3 attempts per request)

💡 Use Cases

  • Market research — Track trending content in your niche
  • Competitor analysis — Monitor competitor TikTok activity
  • Influencer discovery — Find creators by hashtag or search
  • Content inspiration — See what's working in your industry
  • Trend tracking — Monitor hashtag performance over time
  • Academic research — Collect datasets for social media studies

⚠️ Limitations

  • TikTok's initial page load typically returns 15–30 videos per profile
  • Search results are limited to what TikTok returns on the first page
  • Very new or very small accounts may return fewer results
  • TikTok may change their page structure without notice

🚀 Quick Start

Run on Apify

  1. Create an account at apify.com
  2. Create a new actor from this source (or import the directory)
  3. Enable Proxy in the actor settings (use residential proxies for best results)
  4. Run the actor with your input

Run Locally

# Install dependencies
pip install -r requirements.txt
# Create input.json:
cat > input.json << 'EOF'
{
"profiles": ["khaby.lame"],
"maxVideos": 10
}
EOF
# Run (requires Apify CLI)
apify run
# Or directly (won't charge events):
python3 -m src.main < input.json > output.json

Expected Output

The actor pushes each video as a separate item to the default dataset. You can then export the dataset as JSON, CSV, or Excel.

⚠️ Notes

  • Residential proxies are highly recommended. Without them, TikTok may return limited or no video data to datacenter IPs.
  • If the hydration JSON does not contain video lists (common without proxies), the actor will log a warning and produce no output.
  • The maxVideos limit is applied per source (profile, search query, or hashtag). Total output may be less depending on available data.

📄 License

This actor is published on the Apify Store. See Apify Terms of Service for usage terms.

🔗 Integration Examples

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("joyouscam35875/tiktok-scraper").call(run_input={"profiles": ["@khaby.lame"], "maxVideos": 10})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('joyouscam35875/tiktok-scraper').call({"profiles": ["@khaby.lame"], "maxVideos": 10});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Make / Zapier / n8n

Use the Apify integration — search for this actor by name in the Apify app connector. No code needed.


🔗 More Scrapers by Ken Digital

ScraperWhat it doesPrice
YouTube Channel ScraperVideos, stats, metadata via official API$0.001/video
France Job ScraperWTTJ + France Travail + Hellowork$0.005/job
France Real Estate Scraper5 sources + DVF price analysis$0.008/listing
Website Content CrawlerHTML to Markdown for AI/RAG$0.001/page
Google Trends ScraperKeywords, regions, related queries$0.002/keyword
GitHub Repo ScraperStars, forks, languages, topics$0.002/repo
RSS News AggregatorMulti-source feed parsing$0.0005/article
Instagram Profile ScraperFollowers, bio, posts$0.0015/profile
Google Maps ScraperBusinesses, reviews, contacts$0.002/result
TikTok ScraperVideos, likes, shares$0.001/video
Google SERP ScraperSearch results, PAA, snippets$0.003/search
Trustpilot ScraperReviews, ratings, sentiment$0.001/review

👉 View all scrapers