TikTok Hashtag Scraper - Video Analytics avatar

TikTok Hashtag Scraper - Video Analytics

Pricing

from $3.00 / 1,000 hashtag video founds

Go to Apify Store
TikTok Hashtag Scraper - Video Analytics

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

5

Monthly active users

2 days ago

Last modified

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.

FieldTypeDescription
hashtagsarray of stringsHashtag names with or without #, such as fitness or #booktok.
hashtagUrlsarray of stringsTikTok /tag/ URLs, such as https://www.tiktok.com/tag/skincare.
maxVideosPerHashtagintegerMaximum filter-passing videos to save and charge for per hashtag.
regionstringTwo-letter ISO country code used to localize hashtag results.
minViewsintegerKeeps rows at or above the play count threshold.
minLikesintegerKeeps rows at or above the like count threshold.
minCommentsintegerKeeps rows at or above the comment count threshold.
minSharesintegerKeeps rows at or above the share count threshold.
minDurationSecondsintegerKeeps rows at or above the minimum duration.
maxDurationSecondsintegerKeeps rows at or below the maximum duration.
includePhotoPostsbooleanIncludes image carousel posts when true.
maxPagesPerHashtagintegerSafety cap for provider pagination per hashtag.
providerOrderstringProvider routing order across ScrapeCreators and SociaVault.
includeRawDatabooleanAdds 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.

FieldTypeDescription
hashtagstringThe hashtag feed that returned the row.
providerstringBackend provider that served the row.
resultPositioninteger1-based rank within the hashtag results.
pageintegerProvider page where the row was found.
isPhotoPostbooleanTrue when TikTok returned an image carousel post.
videoIdstringTikTok aweme or video ID.
videoUrlstringCanonical TikTok URL for the video when available.
captionstringVideo caption or description text.
createdAtstringISO 8601 post timestamp.
durationSecondsintegerVideo length in seconds.
regionstringTikTok region code returned for the video.
authorIdstringCreator numeric user ID when exposed by TikTok.
authorSecUidstringCreator stable secUid when exposed by TikTok.
authorUsernamestringCreator handle without the @ prefix.
authorNicknamestringCreator display name.
authorVerifiedbooleanVerified status for the creator account.
authorAvatarUrlstringCreator profile picture URL.
playCountintegerView or play count.
likeCountintegerLike count.
commentCountintegerComment count.
shareCountintegerShare count.
collectCountintegerBookmark or collect count.
engagementRatenumber(likes + comments + shares) / plays, rounded to 4 decimals.
coverUrlstringVideo cover or thumbnail URL.
imageUrlsarray of stringsImage URLs for photo carousel posts.
hashtagsarray of stringsHashtags present in the caption or challenge metadata.
musicIdstringSound or music track ID.
musicTitlestringSound or music track title.
musicAuthorstringSound or music author.
scrapedAtstringISO 8601 timestamp when the row was scraped.
rawResultobjectRaw 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 validation
  • hashtag-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 fitness and booktok, 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.
  • provider shows which backend served the row.
  • resultPosition and page show where the record appeared in provider pagination.
  • engagementRate is derived from likes, comments, and shares divided by plays.
  • scrapedAt is the collection timestamp for the row.

Provenance and scope:

  • The Actor targets public hashtag feeds only.
  • RUN_SUMMARY records provider usage, per-hashtag counts, filter stats, cost estimate, and stop reason.
  • includeRawData can attach the raw provider payload under rawResult for debugging or custom parsing.

Pagination and cost guidance:

  • maxPagesPerHashtag is a safety cap for provider pagination.
  • maxVideosPerHashtag is 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:

  • minViews for reach-focused samples
  • minLikes for visible engagement
  • minComments for discussion-heavy posts
  • minShares for spread-oriented content
  • minDurationSeconds and maxDurationSeconds for clip-length bands
  • includePhotoPosts when 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

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.

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.