TikTok Scraper ($0.2 per 1000 results)
Pricing
from $0.18 / 1,000 results
TikTok Scraper ($0.2 per 1000 results)
$0.2/1K 💸 Scrape TikTok videos, profiles, hashtags, and search queries from URLs or keywords. Extract captions, authors, music, media links, engagement metrics, and user data for influencer research, lead generation, market analysis, and AI workflows. Export JSON/CSV or use the API.
Pricing
from $0.18 / 1,000 results
Rating
0.0
(0)
Developer
Iñigo Garcia Olaizola
Maintained by CommunityActor stats
0
Bookmarked
14
Total users
8
Monthly active users
6 days ago
Last modified
Categories
Share
TikTok Scraper — Videos, Profiles, Hashtags & Search Results
Extract public TikTok videos from video URLs, creator profiles, hashtags, and keyword searches. This TikTok scraper returns structured video data for trend research, influencer discovery, content monitoring, lead enrichment, and social media analysis.
🤖 What does TikTok Scraper do?
TikTok Scraper helps you scrape public TikTok video data without dealing with manual collection. You can combine direct video links with profile, hashtag, and search-based discovery in the same run, then export the dataset as JSON, CSV, Excel, XML, RSS, or HTML.
- Video URLs — resolve known TikTok links into clean video records
- Profiles — collect recent or popular videos from public creator accounts
- Hashtags — monitor videos published under a topic or trend
- Search queries — discover videos for keywords, niches, brands, or topics
- Structured output — get captions, authors, music info, media links, and engagement metrics
Great for: social listening, influencer research, competitor tracking, content discovery, AI datasets, and market research.
SEO keywords: TikTok scraper, scrape TikTok videos, TikTok profile scraper, TikTok hashtag scraper, TikTok search scraper, TikTok API alternative, Apify actor.
💡 Why use TikTok Scraper?
- 📈 Track trends early — monitor hashtags and search terms to spot rising topics and formats
- 🎯 Research creators — collect videos from public profiles for influencer vetting and benchmarking
- 🔎 Validate specific videos — turn direct TikTok video URLs into structured records you can store or analyze
- 🧠 Build reusable datasets — export clean video-level rows for dashboards, BI tools, enrichment, or AI workflows
🚀 How to use
- Add your sources — fill in one or more of
videoUrls,profiles,hashtags, orsearchQueries. - Set your limits — use
maxVideosPerInputto limit each profile, hashtag, or search query, andmaxTotalVideosto cap the whole run. - Choose profile options — if you scrape profiles, optionally set
profileVideoSort,profileScrapeSections, and profile date filters. - Run the actor — click Run in Apify.
- Download the dataset — export results from the Dataset tab or use them through the Apify API.
📝 Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
profiles | Array[String] | No* | TikTok usernames or profile URLs to scrape, such as "tiktok" or "https://www.tiktok.com/@apify". |
hashtags | Array[String] | No* | TikTok hashtags or hashtag URLs to scrape, such as "health" or "#metabolichealth". |
searchQueries | Array[String] | No* | TikTok keyword searches to scrape, such as "metabolic health" or "running tips". |
videoUrls | Array[String] | No* | Direct TikTok video URLs. Each URL returns one video row when the video is public and available. |
maxTotalVideos | Integer | No | Maximum number of video rows to save across the whole run. Use 0 to keep all fetched videos. Default 0. |
maxVideosPerInput | Integer | No | Maximum number of recent public videos to collect for each profile, hashtag, or search query. Video URLs always return one row each. Use 0 for no per-input limit. Default 0. |
profileVideoSort | Enum | No | Sort mode for profile videos: "latest" or "popular". Default "latest". |
profileScrapeSections | Array[String] | No | Profile sections to scrape: "videos" · "reposts". Default ["videos"]. |
videosPublishedBeforeDate | String | No | For latest profile videos, start before this date. Use YYYY-MM-DD or RFC3339. |
videosPublishedAfterDate | String | No | For profile videos, stop once older videos are reached. Use YYYY-MM-DD or RFC3339. This works with latest profile videos. |
* Provide at least one of profiles, hashtags, searchQueries, or videoUrls.
Example inputs
Mixed TikTok discovery
{"videoUrls": ["https://www.tiktok.com/@tiktok/video/7460937381265411370"],"profiles": ["tiktok","https://www.tiktok.com/@apify"],"hashtags": ["health","#metabolichealth"],"searchQueries": ["metabolic health"],"maxTotalVideos": 100,"maxVideosPerInput": 20,"profileVideoSort": "latest","profileScrapeSections": ["videos"]}
Profile research with reposts and date filtering
{"profiles": ["nike"],"maxTotalVideos": 80,"maxVideosPerInput": 40,"profileVideoSort": "latest","profileScrapeSections": ["videos","reposts"],"videosPublishedBeforeDate": "2026-01-01","videosPublishedAfterDate": "2025-01-01"}
Hashtag and keyword monitoring
{"hashtags": ["skincare","running"],"searchQueries": ["marathon training","morning routine"],"maxTotalVideos": 120,"maxVideosPerInput": 30}
📊 Output
Each dataset item represents one TikTok video. Source context is repeated on every row so you can filter, sort, and join the dataset easily after export.
Field reference
id(string) — TikTok video IDinput(string) — normalized source value that produced the rowinputType(string) — source type: profile, hashtag, search, or videoprofile(string) — profile username when the row came from a profile inputprofileSection(string) — profile section such asvideosorrepostshashtag(string) — hashtag source when applicablesearchQuery(string) — keyword query when applicablevideoUrl(string) — original video URL input when applicabletext(string) — video caption or textwebVideoUrl(string) — TikTok video page URLcreateTime(number) — video creation timestampcreateTimeISO(string) — ISO timestamp version of the creation timeduration(number) — video duration in secondsregion(string) — region code when availableplayCount(number) — view countdiggCount(number) — like countcommentCount(number) — comment countshareCount(number) — share countcollectCount(number) — collect or favorite countdownloadCount(number) — download countmediaUrls(array) — media download URLs when availableauthorMeta(object) — author ID, username, and nicknamemusicMeta(object) — music title, author, and play URLvideoMeta(object) — media and cover URLs, including watermarked playback when availableprofileMeta(object) — profile metadata attached to profile-sourced rows when available
Example output
{"id": "7653043871131143437","input": "tiktok","inputType": "profile","profile": "tiktok","profileSection": "videos","text": "Video caption text...","webVideoUrl": "https://www.tiktok.com/@tiktok/video/7653043871131143437","createTime": 1781863210,"createTimeISO": "2026-06-19T10:00:10Z","duration": 42,"region": "US","playCount": 104,"diggCount": 8,"commentCount": 1,"shareCount": 0,"collectCount": 0,"downloadCount": 0,"mediaUrls": ["https://example-cdn.com/video.mp4"],"authorMeta": {"id": "107955","name": "tiktok","nickName": "TikTok"},"musicMeta": {"musicName": "original sound - tiktok","musicAuthor": "TikTok","playUrl": "https://example-cdn.com/music.mp3"},"videoMeta": {"duration": 42,"playUrl": "https://example-cdn.com/video.mp4","coverUrl": "https://example-cdn.com/cover.jpeg"},"profileMeta": {"id": "107955","username": "tiktok","nickname": "TikTok","url": "https://www.tiktok.com/@tiktok","followerCount": 12345,"videoCount": 410}}
🧭 Tips
- Direct video lookups: use
videoUrlswhen you already know the exact TikTok links you want. - Broad trend monitoring: combine
hashtagsandsearchQueriesin one run to compare topic-driven discovery with keyword-driven discovery. - Unlimited collection: set
maxVideosPerInputto0when you want to keep collecting until no more public videos are available. - Global cap: use
maxTotalVideosto keep large mixed-source runs predictable. - Profile archive windows: combine
videosPublishedBeforeDateandvideosPublishedAfterDateto focus profile scraping on a specific publication period.
⚙️ Best Practices
- This actor works with public TikTok data only. Private, deleted, restricted, or unavailable content may return partial data or no result.
videosPublishedBeforeDateandvideosPublishedAfterDateapply to profile video collection, not direct video URLs, hashtags, or search queries.- Media links can expire over time. If you need long-term retention, store downloaded assets in your own storage after the run.
- For the cleanest analysis, run separate jobs for very different goals, such as one run for creator research and another for hashtag monitoring.
⚖️ Legal & Ethical Considerations
- Respect TikTok's Terms of Service and use the actor responsibly.
- Handle personal data carefully and comply with applicable privacy laws such as GDPR or CCPA.
- Avoid misuse of scraped data for spam, harassment, or deceptive practices.
- Review local laws and platform rules before using data in commercial or regulated workflows.
This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by TikTok. All trademarks are the property of their respective owners.
❓ FAQ
Can I combine profiles, hashtags, search queries, and video URLs in one run? Yes. You can use any combination of those inputs, and the actor will save one dataset row per video.
What happens when I set maxVideosPerInput to 0?
The actor keeps collecting videos for each profile, hashtag, or search query until no more public results are available.
Does maxTotalVideos apply across all sources?
Yes. It limits the total number of saved video rows across video URLs, profiles, hashtags, and search queries.
Do date filters work for hashtags and search queries?
No. videosPublishedBeforeDate and videosPublishedAfterDate are for profile video collection.
Can I scrape reposts from TikTok profiles?
Yes. Add "reposts" to profileScrapeSections if you want reposted videos in addition to standard profile videos.
🛟 Support
Need a custom field or export? Open an issue or contact me at https://igolaizola.com/#contact