TikTok Scraper ($0.2 per 1000 results) avatar

TikTok Scraper ($0.2 per 1000 results)

Pricing

from $0.18 / 1,000 results

Go to Apify Store
TikTok Scraper ($0.2 per 1000 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

Iñigo Garcia Olaizola

Maintained by Community

Actor stats

0

Bookmarked

14

Total users

8

Monthly active users

6 days ago

Last modified

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

  1. Add your sources — fill in one or more of videoUrls, profiles, hashtags, or searchQueries.
  2. Set your limits — use maxVideosPerInput to limit each profile, hashtag, or search query, and maxTotalVideos to cap the whole run.
  3. Choose profile options — if you scrape profiles, optionally set profileVideoSort, profileScrapeSections, and profile date filters.
  4. Run the actor — click Run in Apify.
  5. Download the dataset — export results from the Dataset tab or use them through the Apify API.

📝 Input Parameters

ParameterTypeRequiredDescription
profilesArray[String]No*TikTok usernames or profile URLs to scrape, such as "tiktok" or "https://www.tiktok.com/@apify".
hashtagsArray[String]No*TikTok hashtags or hashtag URLs to scrape, such as "health" or "#metabolichealth".
searchQueriesArray[String]No*TikTok keyword searches to scrape, such as "metabolic health" or "running tips".
videoUrlsArray[String]No*Direct TikTok video URLs. Each URL returns one video row when the video is public and available.
maxTotalVideosIntegerNoMaximum number of video rows to save across the whole run. Use 0 to keep all fetched videos. Default 0.
maxVideosPerInputIntegerNoMaximum 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.
profileVideoSortEnumNoSort mode for profile videos: "latest" or "popular". Default "latest".
profileScrapeSectionsArray[String]NoProfile sections to scrape: "videos" · "reposts". Default ["videos"].
videosPublishedBeforeDateStringNoFor latest profile videos, start before this date. Use YYYY-MM-DD or RFC3339.
videosPublishedAfterDateStringNoFor 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 ID
  • input (string) — normalized source value that produced the row
  • inputType (string) — source type: profile, hashtag, search, or video
  • profile (string) — profile username when the row came from a profile input
  • profileSection (string) — profile section such as videos or reposts
  • hashtag (string) — hashtag source when applicable
  • searchQuery (string) — keyword query when applicable
  • videoUrl (string) — original video URL input when applicable
  • text (string) — video caption or text
  • webVideoUrl (string) — TikTok video page URL
  • createTime (number) — video creation timestamp
  • createTimeISO (string) — ISO timestamp version of the creation time
  • duration (number) — video duration in seconds
  • region (string) — region code when available
  • playCount (number) — view count
  • diggCount (number) — like count
  • commentCount (number) — comment count
  • shareCount (number) — share count
  • collectCount (number) — collect or favorite count
  • downloadCount (number) — download count
  • mediaUrls (array) — media download URLs when available
  • authorMeta (object) — author ID, username, and nickname
  • musicMeta (object) — music title, author, and play URL
  • videoMeta (object) — media and cover URLs, including watermarked playback when available
  • profileMeta (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 videoUrls when you already know the exact TikTok links you want.
  • Broad trend monitoring: combine hashtags and searchQueries in one run to compare topic-driven discovery with keyword-driven discovery.
  • Unlimited collection: set maxVideosPerInput to 0 when you want to keep collecting until no more public videos are available.
  • Global cap: use maxTotalVideos to keep large mixed-source runs predictable.
  • Profile archive windows: combine videosPublishedBeforeDate and videosPublishedAfterDate to 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.
  • videosPublishedBeforeDate and videosPublishedAfterDate apply 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.
  • 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