TikTok Hashtag Scraper - Video Analytics
Pricing
from $3.00 / 1,000 hashtag video founds
TikTok Hashtag Scraper - Video Analytics
Scrape public TikTok videos from one or more hashtags and get views, likes, comments, shares, saves, engagement rate, creator data, music metadata, captions, timestamps, thumbnails, and quality filters. Cookieless, provider-backed, MCP-ready.
Pricing
from $3.00 / 1,000 hashtag video founds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
5
Monthly active users
2 days ago
Last modified
Categories
Share
TikTok Hashtag Scraper - Video Analytics is an Apify Actor for public hashtag feeds. It accepts one or more hashtag names or TikTok /tag/ URLs and returns one record per saved TikTok video. Each record can include the hashtag, creator handle, caption, play count, likes, comments, shares, saves, engagement rate, timestamps, thumbnails, creator metadata, music metadata, and optional raw provider payload. The output is shaped for analysis, automation, and Apify MCP workflows, with a default dataset for rows and a RUN_SUMMARY record for execution diagnostics.
Best fit and connected workflows
Use this Actor when a workflow starts from known hashtags and needs structured video analytics from public TikTok hashtag feeds. It fits social listening, creator research, campaign monitoring, trend tracking around a niche, and dataset building for downstream analysis.
Common connected workflows include:
- Discover hashtags or seed video URLs in a separate TikTok search or trending workflow, then pass the verified hashtag feed into this Actor.
- Combine the dataset with spreadsheets, BI tools, notebooks, or AI agents that summarize engagement patterns.
- Route video-level research to the related TikTok search or trending Actors when you want discovery first, then use this Actor for hashtag feed analytics.
Related Actors:
- [TikTok Search Scraper - [Videos, Hashtags & Users]](the referenced Actor page) - discover TikTok records and pass verified public URLs or IDs into this Actor for hashtag-adjacent analysis.
- TikTok Trending Videos Scraper - discover TikTok records from trending video workflows, then hand off verified public URLs or IDs for hashtag feed analysis.
Practical scenario
Maya, a social media analyst, starts with the hashtags fitness and booktok. She runs the Actor with a minimum view threshold and keeps photo posts enabled because her reporting team wants to compare all feed types that appear in those hashtag pages.
The dataset returns fields such as authorUsername, caption, playCount, likeCount, commentCount, shareCount, engagementRate, createdAt, and videoUrl. Maya uses engagementRate and playCount to identify high-performing posts, opens videoUrl to review the content, and then shares the selected creators with the campaign team for follow-up outreach.
Input
Use hashtag names or /tag/ URLs to target public TikTok hashtag feeds. Quality filters are applied before rows are saved and charged.
| Field | Type | Description |
|---|---|---|
hashtags | array of strings | Hashtag names with or without #, such as fitness or #booktok. |
hashtagUrls | array of strings | TikTok /tag/ URLs, such as https://www.tiktok.com/tag/skincare. |
maxVideosPerHashtag | integer | Maximum filter-passing videos to save and charge for per hashtag. |
region | string | Two-letter ISO country code used to localize hashtag results. |
minViews | integer | Keeps rows at or above the play count threshold. |
minLikes | integer | Keeps rows at or above the like count threshold. |
minComments | integer | Keeps rows at or above the comment count threshold. |
minShares | integer | Keeps rows at or above the share count threshold. |
minDurationSeconds | integer | Keeps rows at or above the minimum duration. |
maxDurationSeconds | integer | Keeps rows at or below the maximum duration. |
includePhotoPosts | boolean | Includes image carousel posts when true. |
maxPagesPerHashtag | integer | Safety cap for provider pagination per hashtag. |
providerOrder | string | Provider routing order across ScrapeCreators and SociaVault. |
includeRawData | boolean | Adds the raw provider payload under rawResult in each row. |
Example input
{"hashtags": ["fitness", "booktok"],"hashtagUrls": [],"maxVideosPerHashtag": 25,"region": "US","minViews": 10000,"minLikes": 0,"minComments": 0,"minShares": 0,"minDurationSeconds": 0,"maxDurationSeconds": 0,"includePhotoPosts": true,"maxPagesPerHashtag": 20,"providerOrder": "scrapecreators-first","includeRawData": false}
Output
The default dataset contains one row per saved TikTok hashtag video. The output is normalized for analysis and agent workflows. RUN_SUMMARY contains provider usage, per-hashtag counts, filter statistics, cost estimate, and stop reason.
| Field | Type | Description |
|---|---|---|
hashtag | string | The hashtag feed that returned the row. |
provider | string | Backend provider that served the row. |
resultPosition | integer | 1-based rank within the hashtag results. |
page | integer | Provider page where the row was found. |
isPhotoPost | boolean | True when TikTok returned an image carousel post. |
videoId | string | TikTok aweme or video ID. |
videoUrl | string | Canonical TikTok URL for the video when available. |
caption | string | Video caption or description text. |
createdAt | string | ISO 8601 post timestamp. |
durationSeconds | integer | Video length in seconds. |
region | string | TikTok region code returned for the video. |
authorId | string | Creator numeric user ID when exposed by TikTok. |
authorSecUid | string | Creator stable secUid when exposed by TikTok. |
authorUsername | string | Creator handle without the @ prefix. |
authorNickname | string | Creator display name. |
authorVerified | boolean | Verified status for the creator account. |
authorAvatarUrl | string | Creator profile picture URL. |
playCount | integer | View or play count. |
likeCount | integer | Like count. |
commentCount | integer | Comment count. |
shareCount | integer | Share count. |
collectCount | integer | Bookmark or collect count. |
engagementRate | number | (likes + comments + shares) / plays, rounded to 4 decimals. |
coverUrl | string | Video cover or thumbnail URL. |
imageUrls | array of strings | Image URLs for photo carousel posts. |
hashtags | array of strings | Hashtags present in the caption or challenge metadata. |
musicId | string | Sound or music track ID. |
musicTitle | string | Sound or music track title. |
musicAuthor | string | Sound or music author. |
scrapedAt | string | ISO 8601 timestamp when the row was scraped. |
rawResult | object | Raw provider payload when includeRawData is enabled. |
Example output record
{"hashtag": "fitness","provider": "scrapecreators","resultPosition": 1,"page": 1,"isPhotoPost": false,"videoId": "7412345678901234567","videoUrl": "https://www.tiktok.com/@runner/video/7412345678901234567","caption": "suitable running shoes #running #fitness","createdAt": "2024-06-01T00:00:00.000Z","durationSeconds": 32,"region": "US","authorId": "111","authorSecUid": "MS4wLjABC","authorUsername": "runner","authorNickname": "Runner","authorVerified": true,"authorAvatarUrl": "https://p16.tiktokcdn.com/avatar.jpg","playCount": 250000,"likeCount": 12000,"commentCount": 340,"shareCount": 210,"collectCount": 90,"engagementRate": 0.0502,"coverUrl": "https://p16.tiktokcdn.com/cover.jpg","imageUrls": [],"hashtags": ["running", "fitness"],"musicId": "900","musicTitle": "Original sound","musicAuthor": "runner","scrapedAt": "2026-07-09T12:00:00.000Z"}
How it works
This Actor uses provider-backed public TikTok hashtag feeds. The live contract shows two backend provider routes: ScrapeCreators and SociaVault, with routing controlled by providerOrder. Rows that pass the configured filters are saved to the dataset and counted as charged events. The dataset is normalized, and the run summary is written to the key-value store at RUN_SUMMARY for diagnostics and cost visibility.
The Actor also supports these operational choices:
- Hashtag names or
/tag/URLs as input - Per-hashtag caps through
maxVideosPerHashtag - Region-localized hashtag results through
region - Photo-post inclusion through
includePhotoPosts - Optional raw provider payloads through
includeRawData
Pricing
This Actor uses Pay per event plus Apify platform usage. The live Pricing tab shows the current pricing details for your plan and usage context, so review it before running production jobs.
The charged events are:
apify-actor-start- charged once when the Actor starts after input validationhashtag-video-found- charged once per saved TikTok hashtag video after filters
A simple example in words: if one run saves ten videos, the Actor start event is charged once, and the video-found event is charged ten times. Filtered-out rows are not saved and are not charged.
Use with AI agents (MCP)
This Actor is usable through Apify MCP as a tool for collecting structured TikTok hashtag video analytics. It returns compact, machine-readable rows plus execution diagnostics, which makes it practical for agent workflows that need hashtags, creators, engagement metrics, captions, timestamps, thumbnails, and music metadata.
Actor identity: khadinakbar/tiktok-hashtag-scraper
Collect public TikTok hashtag videos for the hashtags
fitnessandbooktok, keep rows with at leasta bounded number of views, and return the saved dataset items plus the run summary. Use the provider route that starts with ScrapeCreators.
Output interpretation:
- The dataset contains one row per saved hashtag video.
providershows which backend served the row.resultPositionandpageshow where the record appeared in provider pagination.engagementRateis derived from likes, comments, and shares divided by plays.scrapedAtis the collection timestamp for the row.
Provenance and scope:
- The Actor targets public hashtag feeds only.
RUN_SUMMARYrecords provider usage, per-hashtag counts, filter stats, cost estimate, and stop reason.includeRawDatacan attach the raw provider payload underrawResultfor debugging or custom parsing.
Pagination and cost guidance:
maxPagesPerHashtagis a safety cap for provider pagination.maxVideosPerHashtagis the per-hashtag save-and-charge cap.- Raising either setting can increase the number of pages visited or rows saved, depending on filter strictness.
API example
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/tiktok-hashtag-scraper').call({hashtags: ['fitness', 'booktok'],maxVideosPerHashtag: 25,region: 'US',minViews: 10000,includePhotoPosts: true,providerOrder: 'scrapecreators-first',includeRawData: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.slice(0, 3));
Best results and outcome guidance
Use hashtag names that match the exact feed you want to study. When you already have /tag/ URLs, provide them directly. Set region to the country code that matches the audience you want to review. Use the quality filters to shape the dataset around your analysis goal:
minViewsfor reach-focused samplesminLikesfor visible engagementminCommentsfor discussion-heavy postsminSharesfor spread-oriented contentminDurationSecondsandmaxDurationSecondsfor clip-length bandsincludePhotoPostswhen you want all hashtag-feed content, or set it to false for video-only analysis
For compact agent prompts, keep includeRawData set to false. Enable it when you need provider payload inspection or custom downstream parsing.
Continue the workflow
- Then use TikTok Live Scraper to continue from TikTok Hashtag Scraper - Video Analytics discovery into content data for the selected records.
- Then use TikTok Video Downloader - No Watermark MP4 + MP3 to continue Tiktok records selected with TikTok Hashtag Scraper - Video Analytics into a focused media workflow.
Design note
I found that the output contract includes a dedicated collectCount field for saves and a separate RUN_SUMMARY record for provider telemetry and filter stats, which makes the dataset and diagnostics cleanly separated.
FAQ
Can I start from hashtag names or hashtag URLs?
Yes. This Actor accepts both plain hashtag names and TikTok /tag/ URLs.
Can I use this for TikTok profiles or keyword search?
This Actor is built for public hashtag feeds. For discovery and broader search workflows, use the related TikTok search or trending Actors, then pass verified public URLs or IDs into this Actor when hashtag feed analytics are needed.
How do I compare provider routes?
Use providerOrder to choose ScrapeCreators-first, SociaVault-first, or a single-provider route. The provider field in each row and RUN_SUMMARY help you review which backend served the saved rows.
Where are execution diagnostics stored?
execution diagnostics are stored in the key-value store under RUN_SUMMARY. The default dataset contains the normalized hashtag video rows.
How do I control the number of saved rows?
Use maxVideosPerHashtag for the per-hashtag cap and the quality filters to narrow the set before rows are saved.
Responsible use
This Actor works with public TikTok hashtag data through provider APIs. Use the exported dataset in ways that respect TikTok's terms, creator rights, privacy laws, copyright rules, and your local regulations. Review the live Pricing tab before production runs and choose input settings that match your collection scope and data-handling requirements.