Tiktok Data Extractor Scraper avatar

Tiktok Data Extractor Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Tiktok Data Extractor Scraper

Tiktok Data Extractor Scraper

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

ScrapAPI

ScrapAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

TikTok Data Extractor Scraper โ€“ All-in-One TikTok Scraping Solution

Extract TikTok data from hashtags, profiles, and videos in one powerful actor. Built by combining three specialized scrapers into a unified tool with advanced filtering, sorting, and automatic proxy management.

๐ŸŽฏ What is TikTok Data Extractor Scraper?

The TikTok Data Extractor Scraper is a comprehensive Apify Actor that combines the power of three specialized TikTok scrapers into one unified solution:

  • #๏ธโƒฃ Hashtag Scraper โ€“ Extract videos from trending or specific hashtags
  • ๐Ÿ˜Ž Profile Scraper โ€“ Monitor user profiles with advanced filtering and sorting
  • ๐Ÿ”— Video URL Scraper โ€“ Extract data from individual TikTok videos

Whether you're tracking viral trends, analyzing competitor profiles, or extracting specific video metrics, this actor provides a reliable, scalable solution with built-in anti-blocking mechanisms and intelligent proxy fallback.

โœจ Key Features

Unified Multi-Source Scraping

Unlike single-purpose scrapers, this actor handles three different TikTok data sources seamlessly:

  • Hashtag Scraping: Extract videos from trending or specific hashtags with adaptive scrolling
  • Profile Scraping: Monitor user profiles with advanced filtering, sorting, and date range options
  • Direct Video URLs: Extract data from individual TikTok videos by URL
  • Keyword Search: Search TikTok for keywords and automatically scrape discovered videos
  • Related Videos: Optionally collect related videos for each input video URL

Advanced Profile Filtering & Sorting

  • Date Range Filtering: Filter videos by publication date (absolute dates or relative days)
  • Sorting Options: Sort by latest, oldest, or popularity
  • Pinned Post Exclusion: Option to exclude pinned posts from profile scraping
  • Section Selection: Choose to scrape videos, reposts, or both
  • Hearts Filtering: Filter by minimum/maximum likes (hearts)
  • Follower/Following Filters: Filter by author's follower or following count

Intelligent Proxy Management

Our actor implements a sophisticated three-tier proxy fallback system:

  1. No Proxy (default): Starts with direct connections for maximum speed
  2. Automatic Datacenter Fallback: Switches to datacenter proxies when blocked
  3. Residential Proxy Fallback: Upgrades to residential proxies with retries for maximum success rate

The actor automatically detects blocks (403/429 errors) and empty responses, seamlessly switching proxy types without manual intervention.

Comprehensive Data Extraction

Each scraped video includes:

  • Author Information: Username, avatar, follower count, verification status, bio
  • Video Metrics: Likes, views, shares, comments, reposts
  • Video Details: Duration, dimensions, quality, format, cover URLs
  • Music Information: Track name, artist, original status, play URL
  • Metadata: Creation date, web URL, description, hashtags, mentions
  • Location Data: Location name, address, city, country code (when available)
  • Subtitle Links: Available subtitle languages and download links
  • Source Tracking: Each item is tagged with source type and input identifier

๐Ÿ“ฅ Input Configuration

Basic Input Fields

#๏ธโƒฃ Videos with this hashtag (Optional Array)

Add one or more TikTok hashtags (without the # symbol) to scrape videos containing those hashtags.

Example:

{
"hashtags": ["travel", "fitness", "cooking"]
}

๐Ÿ˜Ž Profiles (Optional Array)

Add TikTok usernames or profile URLs to scrape their profile videos. The actor automatically extracts usernames from URLs if provided.

Example:

{
"profiles": ["tiktok", "https://www.tiktok.com/@charlidamelio"]
}

๐Ÿ”— Video URLs (Optional Array)

Add direct TikTok video URLs to extract specific video data.

Example:

{
"postURLs": [
"https://www.tiktok.com/@username/video/1234567890",
"https://www.tiktok.com/@user2/video/0987654321"
]
}

๐Ÿ”Ž Search keywords (Optional Array)

Search TikTok for these keywords, collect found video URLs, and then scrape them just like Video URLs.

Example:

{
"keywords": ["mrbeast new", "cooking tips"]
}

Number of videos to scrape per hashtag or profile. Also used as: max video results per keyword search and max related videos per input video URL. Range: 1 to 1,000,000.

Profile Options (Under Profile Accordion)

Profile sections to scrape (Array, Default: ["videos"])

Choose which sections to scrape: "videos" for regular profile videos or "reposts" for reposted content.

Profile video sorting (String, Default: "latest")

Sort profile videos by:

  • "latest" โ€“ Most recent videos first
  • "oldest" โ€“ Oldest videos first
  • "popular" โ€“ Most popular videos first (by views)

Note: Date filters only work with "latest" and "oldest" sorting.

Scrape profile videos published after [date] (String, Optional)

Filter videos published after a specific date. Use the datepicker:

  • Absolute tab: Specific date in YYYY-MM-DD format
  • Relative tab: Number of days ago (e.g., 7 for last 7 days)

Scrape videos published before [date] (String, Optional)

Filter videos published before a specific date. Use the datepicker:

  • Absolute tab: Specific date in YYYY-MM-DD format
  • Relative tab: Number of days ago (e.g., 0 for today)

Exclude pinned posts (Boolean, Default: false)

Set to true to exclude pinned posts from profile scraping.

Video URL Options (Under Video URLs Accordion)

If enabled, for every provided video URL the actor will also collect 'related' videos visible on the page (up to the Number of videos setting).

Network Options (Under Network Accordion)

Proxy Configuration (Object, Optional)

Configure proxy settings. By default, the actor starts without a proxy and automatically falls back to datacenter, then residential proxies if needed.

Complete Input Example

{
"hashtags": ["travel", "adventure"],
"profiles": ["travelblogger", "https://www.tiktok.com/@wanderlust"],
"postURLs": [
"https://www.tiktok.com/@user/video/1234567890"
],
"keywords": ["travel tips"],
"resultsPerPage": 100,
"profileScrapeSections": ["videos"],
"profileSorting": "latest",
"oldestPostDateUnified": "2025-04-04",
"newestPostDate": "2025-09-09",
"excludePinnedPosts": false,
"scrapeRelatedVideos": true,
"proxyConfiguration": {
"useApifyProxy": false
}
}

๐Ÿ“ค Output Format

The actor saves data in real-time, grouping items by source type. Important: Each source type maintains its original scraper's output structure for compatibility.

Output Structure by Source Type

Hashtag Items (Nested Structure)

Hashtag items maintain a nested structure matching the original hashtag scraper format:

{
"id": "7234567890123456789",
"sourceType": "hashtag",
"hashtag": "travel",
"text": "Video description text",
"textLanguage": "en",
"createTime": 1705312200,
"createTimeISO": "2024-01-15T10:30:00.000Z",
"isAd": false,
"authorMeta": {
"id": "123456789",
"name": "username",
"profileUrl": "https://www.tiktok.com/@username",
"nickName": "Display Name",
"verified": false,
"signature": "Bio text",
"avatar": "https://...",
"originalAvatarUrl": "https://...",
"following": 100,
"friends": 50,
"fans": 10000,
"heart": 50000,
"video": 200,
"digg": 100000
},
"musicMeta": {
"musicName": "Song Title",
"musicAuthor": "Artist Name",
"musicOriginal": false,
"playUrl": "https://...",
"coverMediumUrl": "https://...",
"musicId": "67890"
},
"videoMeta": {
"height": 1920,
"width": 1080,
"duration": 30,
"coverUrl": "https://...",
"originalCoverUrl": "https://...",
"definition": "720p",
"format": "mp4",
"subtitleLinks": []
},
"diggCount": 15000,
"shareCount": 500,
"playCount": 100000,
"collectCount": 200,
"commentCount": 1200,
"repostCount": 50,
"mentions": [],
"detailedMentions": [],
"hashtags": [{"name": "travel"}, {"name": "adventure"}],
"effectStickers": [],
"isSlideshow": false,
"isPinned": false,
"isSponsored": false,
"webVideoUrl": "https://www.tiktok.com/@username/video/1234567890",
"mediaUrls": [],
"commentsDatasetUrl": null
}

Profile Items (Nested Structure - Matches Tiktok-Profile-Scraper)

Profile items use a nested structure matching Tiktok-Profile-Scraper exactly:

{
"id": "7234567890123456789",
"sourceType": "profile",
"profile": "username",
"text": "Video description text",
"textLanguage": "en",
"createTime": 1705312200,
"createTimeISO": "2024-01-15T10:30:00.000Z",
"isAd": false,
"authorMeta": {
"id": "123456789",
"name": "username",
"profileUrl": "https://www.tiktok.com/@username",
"nickName": "Display Name",
"verified": false,
"signature": "Bio text",
"bioLink": null,
"avatar": "https://...",
"originalAvatarUrl": "https://...",
"commerceUserInfo": {"commerceUser": false},
"privateAccount": false,
"roomId": "",
"ttSeller": false,
"followDatasetUrl": null,
"following": 100,
"friends": 50,
"fans": 10000,
"heart": 50000,
"video": 200,
"digg": 100000
},
"musicMeta": {
"musicName": "Song Title",
"musicAuthor": "Artist Name",
"musicOriginal": false,
"playUrl": "https://...",
"coverMediumUrl": "https://...",
"originalCoverMediumUrl": "https://...",
"musicId": "67890"
},
"locationMeta": {
"address": "",
"city": "",
"cityCode": "",
"countryCode": "",
"locationName": "",
"locationId": ""
},
"webVideoUrl": "https://www.tiktok.com/@username/video/1234567890",
"mediaUrls": [],
"commentsDatasetUrl": null,
"videoMeta": {
"height": 1920,
"width": 1080,
"duration": 30,
"coverUrl": "https://...",
"originalCoverUrl": "https://...",
"definition": "720p",
"format": "mp4",
"subtitleLinks": []
},
"diggCount": 15000,
"shareCount": 500,
"playCount": 100000,
"collectCount": 200,
"commentCount": 1200,
"repostCount": 50,
"mentions": [],
"detailedMentions": [],
"hashtags": [{"name": "travel"}],
"effectStickers": [],
"isSlideshow": false,
"isPinned": false,
"isSponsored": false,
"input": "username",
"fromProfileSection": "videos"
}

Video URL Items (Nested Structure - Matches Tiktok-Video-Scraper)

Video URL items use a nested structure matching Tiktok-Video-Scraper exactly:

{
"id": "7234567890123456789",
"sourceType": "video_url",
"videoUrl": "https://www.tiktok.com/@username/video/1234567890",
"text": "Video description text",
"textLanguage": "en",
"createTime": 1705312200,
"createTimeISO": "2024-01-15T10:30:00.000Z",
"locationCreated": "",
"isAd": false,
"authorMeta": {
"id": "123456789",
"name": "username",
"profileUrl": "https://www.tiktok.com/@username",
"nickName": "Display Name",
"verified": false,
"signature": "Bio text",
"bioLink": null,
"avatar": "https://...",
"originalAvatarUrl": "https://...",
"privateAccount": false,
"roomId": "",
"ttSeller": false,
"followDatasetUrl": null,
"following": 100,
"friends": 50,
"fans": 10000,
"heart": 50000,
"video": 200,
"digg": 100000
},
"musicMeta": {
"musicName": "Song Title",
"musicAuthor": "Artist Name",
"musicOriginal": false,
"playUrl": "https://...",
"coverMediumUrl": "https://...",
"originalCoverMediumUrl": "https://...",
"musicId": "67890"
},
"webVideoUrl": "https://www.tiktok.com/@username/video/1234567890",
"submittedVideoUrl": "https://www.tiktok.com/@username/video/1234567890",
"mediaUrls": [],
"commentsDatasetUrl": null,
"videoMeta": {
"height": 1920,
"width": 1080,
"duration": 30,
"coverUrl": "https://...",
"originalCoverUrl": "https://...",
"definition": "720p",
"format": "mp4",
"subtitleLinks": []
},
"diggCount": 15000,
"shareCount": 500,
"playCount": 100000,
"collectCount": 200,
"commentCount": 1200,
"repostCount": 50,
"mentions": [],
"detailedMentions": [],
"hashtags": [{"name": "travel"}],
"effectStickers": [],
"isSlideshow": false,
"isPinned": false,
"isSponsored": false
}

Source Identification Fields

All items include these fields for grouping and filtering:

  • sourceType: "hashtag", "profile", "video_url", or "video_related" (for related videos)
  • hashtag: The hashtag name (for hashtag items only)
  • profile: The username (for profile items only)
  • videoUrl: The input URL (for video URL items only)

๐ŸŽฌ How to Use the Actor

Step 1: Access the Actor

  1. Log in to your Apify account at console.apify.com
  2. Navigate to the Actors section
  3. Find TikTok Data Extractor Scraper in your actor list

Step 2: Configure Input

  1. Click on the actor to open it
  2. In the INPUT tab, configure your scraping parameters:
    • Add hashtags, profiles, video URLs, or keywords
    • Set the number of results per source
    • Configure advanced options (sorting, filters, etc.) under the Profile accordion
    • Enable related videos under the Video URLs accordion
    • Adjust proxy settings under the Network accordion

Step 3: Run the Actor

  1. Click the Start button to begin scraping
  2. Monitor progress in real-time via the Log tab
  3. Watch as data appears in the dataset table as each input is processed
  4. Monitor proxy fallback notifications if blocks occur

Step 4: Access Results

  1. Navigate to the Dataset tab to see results in real-time
  2. Use the sourceType, hashtag, profile, and videoUrl fields to filter by input type
  3. Preview results in the table view
  4. Export data as JSON, CSV, Excel, or XML
  5. Download or integrate via API

๐Ÿ’ก Best Use Cases

1. Social Media Marketing

  • Competitor Analysis: Monitor competitor profiles and track their content strategy
  • Hashtag Research: Identify trending hashtags and analyze engagement patterns
  • Influencer Discovery: Find popular creators in specific niches
  • Campaign Tracking: Monitor branded hashtag performance
  • Keyword Monitoring: Track videos related to specific search terms

2. Market Research

  • Trend Analysis: Track emerging trends and viral content patterns
  • Audience Insights: Analyze what content resonates with target demographics
  • Content Strategy: Study successful video formats and topics
  • Industry Monitoring: Keep track of industry-specific content

3. Data Analytics

  • Performance Metrics: Collect engagement data for statistical analysis
  • Time-Series Analysis: Track video performance over time
  • Comparative Studies: Compare performance across different creators or hashtags
  • Academic Research: Gather data for social media studies

4. Content Curation

  • Content Discovery: Find high-quality videos for curation
  • Playlist Creation: Build collections based on specific criteria
  • Content Aggregation: Gather videos for newsletters or websites
  • Related Content: Discover related videos for content recommendations

โ“ Frequently Asked Questions

How does the proxy fallback work?

The actor starts without a proxy for maximum speed. If TikTok blocks the request (403/429 errors) or returns empty responses, it automatically switches to datacenter proxies. If datacenter proxies fail, it upgrades to residential proxies and retries up to 3 times. Once fallback occurs, it sticks with the residential proxy for all remaining requests.

How does sequential processing work?

The actor processes inputs one at a time: first all hashtags (completing and saving each before moving to the next), then all profiles, then all video URLs. Data is saved to the dataset in real-time as each input is processed, so you can see results appear incrementally.

Can I scrape private profiles?

No, this actor only scrapes publicly available content. Private profiles and password-protected content cannot be accessed.

What's the maximum number of videos I can scrape?

The resultsPerPage field supports values from 1 to 1,000,000. However, practical limits depend on TikTok's rate limiting and the profile/hashtag size. For very large profiles, consider using date filters to break the scraping into smaller batches.

How accurate is the data?

The actor extracts data directly from TikTok's web interface and API responses, ensuring high accuracy. All metrics (likes, views, comments) reflect the values at the time of scraping.

Can I scrape reposts?

Yes, if a profile has reposted videos, you can access them by including "reposts" in the profileScrapeSections array. Note that not all profiles have reposts, and availability depends on TikTok's interface.

Do date filters work with all sorting options?

Date filters work best with "latest" and "oldest" sorting. When using "popular" sorting, date filters may have limited effectiveness as popularity-based sorting prioritizes engagement metrics over chronological order.

How does keyword search work?

The keyword search feature uses TikTok's search functionality to discover video URLs matching your keywords. These URLs are then scraped just like manually provided video URLs. The number of results per keyword is controlled by the resultsPerPage setting.

Related videos are videos that TikTok shows as "related" or "recommended" on a video's page. When you enable scrapeRelatedVideos, the actor will collect these related videos for each input video URL, up to the resultsPerPage limit.

How long does scraping take?

Scraping time depends on the number of sources, results per page setting, TikTok's response times, and proxy usage. Typically, scraping 100 videos takes 2-5 minutes, but this can vary significantly. Since processing is sequential, total time is the sum of all individual task times.

What happens if a profile or hashtag doesn't exist?

The actor will log a warning and continue with other sources. Failed sources won't stop the entire scraping process.

Why do different source types have different output structures?

The actor maintains the original output structure from each source type's specialized scraper for maximum compatibility:

  • Hashtag items: Nested structure (matches hashtag scraper)
  • Profile items: Nested structure matching Tiktok-Profile-Scraper exactly
  • Video URL items: Nested structure matching Tiktok-Video-Scraper exactly

This ensures existing workflows and integrations continue to work seamlessly.

Can I use this for commercial purposes?

Yes, but ensure you comply with TikTok's Terms of Service, data protection regulations (GDPR, CCPA, etc.), local laws regarding data scraping, and copyright and privacy laws. Always respect creators' rights and use data responsibly.

โš ๏ธ Important Notes

  • This actor scrapes only publicly available data from TikTok
  • Users are responsible for ensuring compliance with TikTok's Terms of Service
  • Respect privacy laws and data protection regulations
  • Do not use scraped data for spam, harassment, or illegal activities

Rate Limiting

TikTok implements rate limiting to prevent abuse. The actor includes automatic retry logic with exponential backoff, intelligent proxy rotation, and request delays to avoid overwhelming servers.

Data Accuracy

Metrics are accurate at the time of scraping. Video counts may change after scraping, and some data may be unavailable for certain videos.

Technical Limitations

TikTok's interface changes may require actor updates. Some features depend on TikTok's API availability, and very large scraping jobs may take significant time due to sequential processing.

๐Ÿ› ๏ธ Support and Customization

For custom solutions, feature requests, or technical support, contact us at dev.scraperengine@gmail.com.

We can help with custom data extraction requirements, integration with your existing systems, bulk scraping operations, performance optimization, and feature development.

๐Ÿ“Š Performance Tips

  1. Use Date Filters: Narrow down date ranges to reduce scraping time
  2. Batch Processing: Break large jobs into smaller batches
  3. Monitor Logs: Watch for proxy fallback events to optimize settings
  4. Start Small: Test with small resultsPerPage values before scaling up
  5. Use Specific Hashtags: More specific hashtags often return faster results
  6. Sequential Processing: Remember that inputs are processed one at a time, so plan accordingly for large batches
  7. Keyword Search: Use keywords to discover videos when you don't have specific URLs
  8. Related Videos: Enable related videos to discover content similar to your input videos

Ready to extract TikTok data at scale? Configure your inputs and start scraping today! ๐Ÿš€