TikTok Scraper β Videos, Profiles & Hashtags, 3x Cheaper
Under maintenancePricing
Pay per usage
TikTok Scraper β Videos, Profiles & Hashtags, 3x Cheaper
Under maintenanceScrape 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
Actor stats
0
Bookmarked
8
Total users
1
Monthly active users
2 months 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
| Actor | Price per video | 1,000 videos | 10,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}
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
profiles | array | No* | [] | TikTok usernames or profile URLs |
searchQueries | array | No* | [] | Search terms to find videos |
hashtags | array | No* | [] | Hashtag names (without #) |
maxVideos | integer | No | 30 | Max videos per source (1β500) |
* At least one of profiles, searchQueries, or hashtags must be provided.
Profile input formats β all of these work:
charlidamelio@charlidameliohttps://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"}
| Field | Type | Description |
|---|---|---|
id | string | TikTok video ID |
url | string | Direct link to the video |
description | string | Video caption/description |
createTime | integer | Unix timestamp of creation |
authorUsername | string | Author's unique username |
authorNickname | string | Author's display name |
authorFollowers | integer | Author's follower count |
likes | integer | Number of likes (diggs) |
comments | integer | Number of comments |
shares | integer | Number of shares |
plays | integer | Number of plays/views |
musicTitle | string | Title of the music/sound used |
musicAuthor | string | Author of the music/sound |
hashtags | array | Hashtags extracted from description |
coverUrl | string | Video thumbnail URL |
duration | integer | Video duration in seconds |
isAd | boolean | Whether the video is an ad |
source | string | Input source type: profile, search, or hashtag |
sourceValue | string | The specific profile/query/hashtag |
π§ How It Works
- Fetches the TikTok page (profile, search, or hashtag URL)
- Extracts the embedded
__UNIVERSAL_DATA_FOR_REHYDRATION__JSON - Parses video metadata from the hydration data
- 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
RESIDENTIALgroup) - 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
- Create an account at apify.com
- Create a new actor from this source (or import the directory)
- Enable Proxy in the actor settings (use residential proxies for best results)
- Run the actor with your input
Run Locally
# Install dependenciespip 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
maxVideoslimit 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 ApifyClientclient = 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 =newApifyClient({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
| Scraper | What it does | Price |
|---|---|---|
| YouTube Channel Scraper | Videos, stats, metadata via official API | $0.001/video |
| France Job Scraper | WTTJ + France Travail + Hellowork | $0.005/job |
| France Real Estate Scraper | 5 sources + DVF price analysis | $0.008/listing |
| Website Content Crawler | HTML to Markdown for AI/RAG | $0.001/page |
| Google Trends Scraper | Keywords, regions, related queries | $0.002/keyword |
| GitHub Repo Scraper | Stars, forks, languages, topics | $0.002/repo |
| RSS News Aggregator | Multi-source feed parsing | $0.0005/article |
| Instagram Profile Scraper | Followers, bio, posts | $0.0015/profile |
| Google Maps Scraper | Businesses, reviews, contacts | $0.002/result |
| TikTok Scraper | Videos, likes, shares | $0.001/video |
| Google SERP Scraper | Search results, PAA, snippets | $0.003/search |
| Trustpilot Scraper | Reviews, ratings, sentiment | $0.001/review |
π View all scrapers
β οΈ Important: Residential Proxies Required
This actor targets platforms with strict anti-bot protection (Cloudflare, fingerprinting). To successfully scrape data, you must enable Apify Residential Proxies in the actor settings. Go to the Apify Console β Actor β Settings β Proxy configuration β select Residential proxy pool. Without residential proxies, the actor will return 0 results or errors. β Pro tip: The actor is configured for pay-per-event pricing, so you only pay for successful results.
