Tiktok Hashtag Scraper avatar

Tiktok Hashtag Scraper

Pricing

from $2.40 / 1,000 hashtag results

Go to Apify Store
Tiktok Hashtag Scraper

Tiktok Hashtag Scraper

TikTok Hashtag Scraper extracts videos, creators, captions, stats, and hashtag page data from TikTok hashtags. Use it to monitor trends, track campaigns, discover creators, analyze niche content, and power research, analytics, and AI workflows.

Pricing

from $2.40 / 1,000 hashtag results

Rating

0.0

(0)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

Extract TikTok hashtag videos, creator data, music metadata, and hashtag analytics for research, campaign monitoring, trend discovery, and AI workflows.

TikTok Hashtag Scraper

What does this actor do?

TikTok Hashtag Scraper is an Apify Actor that extracts public TikTok data for one or more hashtags, including:

  • Video records — video metadata, engagement metrics (plays, likes, comments, shares, saves), creator info, music data, hashtag matching, and analytics-ready derived fields
  • Hashtag summary records — hashtag-level stats with view counts, video counts, descriptions, and related hashtags
  • Hashtag lineage — every output row traces back to the exact input hashtag that produced it

This actor is designed for hashtag intelligence — not just fetching videos, but providing analytics-ready output for campaign tracking, niche research, creator discovery, and automation workflows.

Why use this actor?

  • Multi-hashtag batching — scrape one or many hashtags in a single run with automatic deduplication
  • Rich structured output — 50+ fields per video including creators, sounds, engagement stats, and hashtag summaries
  • Hashtag lineage — every row shows which input hashtag produced it, making cross-hashtag comparison easy
  • Analytics-ready derived fieldsengagementTotal, engagementRateSimple, engagementPerDay, videoAgeDays, captionLength, keywordHints, and more
  • Consistent null handling — missing optional fields return null, never omitted unpredictably
  • Structured error handling — failed hashtags emit error records instead of breaking the run
  • AI-ready datasets — feed results into clustering, summarization, trend scoring, and reporting pipelines

Input

ParameterTypeDefaultDescription
hashtagsstring[]["ai", "smallbusiness"]Hashtag names or TikTok hashtag URLs to scrape (required)
startUrlsobject[][]Optional TikTok hashtag page URLs (advanced)
resultsPerHashtaginteger50Maximum videos to extract per hashtag (1–500)
includeVideosbooleantrueInclude video records in output
includeHashtagSummarybooleantrueEmit hashtag summary records
includeAuthorDetailsbooleantrueInclude creator fields on video records
includeMusicDetailsbooleantrueInclude music/sound fields on video records
includeRelatedHashtagsbooleantrueExtract related hashtags when available
debugModebooleanfalseEnable verbose logging
proxyConfigurationobjectApify proxy configuration (residential recommended)

Hashtag input formats

The actor accepts hashtags in multiple formats and normalizes them automatically:

  • Plain text: ai
  • With hash: #ai
  • Full URL: https://www.tiktok.com/tag/ai

Duplicates are removed automatically.

Sample input: Campaign hashtag monitoring

Track branded and campaign hashtags to analyze top-performing posts and measure hashtag reach.

{
"hashtags": ["nike", "justdoit", "nikerunning"],
"resultsPerHashtag": 50,
"includeVideos": true,
"includeHashtagSummary": true,
"includeAuthorDetails": true,
"includeMusicDetails": true,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Sample input: Niche research with URLs

Explore content under topic hashtags. You can mix plain names and full TikTok URLs.

{
"hashtags": ["booktok", "#bookish", "https://www.tiktok.com/tag/readinglist"],
"resultsPerHashtag": 30,
"includeVideos": true,
"includeHashtagSummary": true,
"includeRelatedHashtags": true,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Sample input: Creator discovery (minimal output)

Find creators posting under specific hashtags. Disable music details to keep the output focused.

{
"hashtags": ["smallbusiness", "entrepreneur", "sidehustle"],
"resultsPerHashtag": 100,
"includeVideos": true,
"includeAuthorDetails": true,
"includeMusicDetails": false,
"includeHashtagSummary": false,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Output

The actor outputs a dataset where each video is one row with full hashtag lineage. Results are available in five dataset views:

  • Overview — combined view with record type, key metrics, and hashtag lineage
  • Videos — full video details with engagement data
  • Engagement — engagement metrics and derived analytics fields
  • Creators — creator/author data with their video performance
  • Hashtag Summary — hashtag-level stats, view counts, and related hashtags

TikTok Hashtag Scraper — Output Overview Table View

Hashtag summary record

When includeHashtagSummary is enabled, the actor emits one summary record per hashtag with entity-level metadata. This record appears first in the dataset with recordType: "hashtag-summary".

{
"recordType": "hashtag-summary",
"inputHashtag": "Google",
"normalizedHashtag": "google",
"hashtagUrl": "https://www.tiktok.com/tag/google",
"scrapedAt": "2026-03-17T01:57:53.970Z",
"sourceType": "hashtag",
"hashtagName": "google",
"hashtagDisplayName": "google",
"hashtagId": "12902",
"hashtagDescription": "google | 2.7M posts Watch the latest videos about #google on TikTok.",
"hashtagViewCount": 2700000,
"hashtagVideoCount": 2700000,
"hashtagCoverUrl": null,
"relatedHashtags": null
}

Video record

Each video record carries full hashtag lineage, summary data, video metadata, engagement metrics, creator info, music data, hashtag matching, and derived analytics.

{
"recordType": "video",
"inputHashtag": "Google",
"normalizedHashtag": "google",
"hashtagUrl": "https://www.tiktok.com/tag/google",
"hashtagRankContext": 5,
"scrapedAt": "2026-03-17T01:57:55.267Z",
"sourceType": "hashtag",
"hashtagName": "google",
"hashtagDisplayName": "google",
"hashtagId": "12902",
"hashtagDescription": "google | 2.7M posts Watch the latest videos about #google on TikTok.",
"hashtagViewCount": 2700000,
"hashtagVideoCount": 2700000,
"relatedHashtags": null,
"videoId": "7262839443147590944",
"videoUrl": "https://www.tiktok.com/@gamingdenji/video/7262839443147590944",
"createTime": "2023-08-02T21:26:29.000Z",
"caption": "7 Google Easter eggs ! #easteregg #google",
"textLanguage": "en",
"duration": 61,
"width": 576,
"height": 1024,
"coverUrl": "https://p16-common-sign.tiktokcdn-us.com/...",
"dynamicCoverUrl": "https://p16-common-sign.tiktokcdn-us.com/...",
"shareUrl": "https://www.tiktok.com/@gamingdenji/video/7262839443147590944",
"region": null,
"originalItem": false,
"isAd": false,
"isPinned": false,
"isSponsored": false,
"playCount": 6800000,
"likeCount": 507400,
"commentCount": 10800,
"shareCount": 27100,
"saveCount": 177700,
"engagementTotal": 723000,
"engagementRateSimple": 0.106324,
"authorId": "7038016246633382917",
"authorUniqueId": "gamingdenji",
"authorNickname": "GamingDenji",
"authorProfileUrl": "https://www.tiktok.com/@gamingdenji",
"authorAvatarUrl": "https://p16-common-sign.tiktokcdn-us.com/...",
"authorVerified": false,
"authorFollowerCount": 402300,
"authorFollowingCount": 2,
"authorHeartCount": 31700000,
"authorVideoCount": 108,
"musicId": "7262839400319486753",
"musicTitle": "son original",
"musicAuthorName": "GamingDenji",
"musicOriginal": true,
"musicUrl": "https://v16m.tiktokcdn-us.com/...",
"musicDuration": 61,
"musicCoverUrl": "https://p16-common-sign.tiktokcdn-us.com/...",
"videoHashtags": ["easteregg", "google"],
"matchedInputHashtag": true,
"matchedHashtagExact": true,
"relatedMatchedHashtagsCount": 0,
"captionLength": 42,
"hasMention": false,
"hasLinkInCaption": false,
"videoAgeDays": 957,
"engagementPerDay": 755,
"keywordHints": ["easteregg", "google", "easter", "eggs"]
}

Engagement view record

The engagement view highlights metrics and derived analytics for quick comparison.

{
"videoId": "7616668738456276246",
"caption": "La mise à jour de Google Maps, en cours de déploiement aux États-Unis...",
"authorUniqueId": "brutofficiel",
"playCount": 2200000,
"likeCount": 172900,
"commentCount": 447,
"shareCount": 11700,
"saveCount": 10900,
"engagementTotal": 195947,
"engagementRateSimple": 0.089067,
"engagementPerDay": 48987,
"videoAgeDays": 4,
"captionLength": 104,
"hasMention": false,
"hasLinkInCaption": false,
"isAd": false,
"isSponsored": false,
"normalizedHashtag": "google"
}

Creators view record

The creators view surfaces author details alongside their video performance.

{
"authorUniqueId": "brutofficiel",
"authorNickname": "Brut.",
"authorProfileUrl": "https://www.tiktok.com/@brutofficiel",
"authorVerified": true,
"authorFollowerCount": 19800000,
"authorFollowingCount": 62,
"authorHeartCount": 885600000,
"authorVideoCount": 14900,
"videoId": "7616668738456276246",
"caption": "La mise à jour de Google Maps, en cours de déploiement aux États-Unis...",
"playCount": 2200000,
"engagementTotal": 195947,
"normalizedHashtag": "google"
}

Error record

Failed hashtags emit structured error records so individual failures don't break the run.

{
"error": true,
"errorMessage": "No data found for hashtag #invalidtag",
"inputHashtag": "invalidtag",
"normalizedHashtag": "invalidtag",
"hashtagUrl": "https://www.tiktok.com/tag/invalidtag",
"scrapedAt": "2026-03-17T05:30:00.000Z",
"sourceType": "hashtag"
}

Output fields

Lineage fields (all video records)

FieldDescription
recordType"video" or "hashtag-summary"
inputHashtagThe original hashtag input as provided
normalizedHashtagCleaned, lowercase hashtag name
hashtagUrlFull TikTok hashtag page URL
hashtagRankContextPosition/rank of this video on the hashtag page
scrapedAtISO 8601 timestamp of extraction
sourceTypeAlways "hashtag"

Hashtag summary fields (repeated on each video row)

FieldDescription
hashtagNameHashtag name
hashtagDisplayNameDisplay title
hashtagIdTikTok internal hashtag ID
hashtagDescriptionHashtag description (if available)
hashtagViewCountTotal view count
hashtagVideoCountTotal video count (best-effort)
relatedHashtagsArray of related hashtag names (best-effort)

Video fields

FieldDescription
videoIdTikTok video ID
videoUrlFull video URL
createTimeVideo creation time (ISO 8601)
captionVideo caption/description
textLanguageContent language (if available)
durationDuration in seconds
width, heightVideo dimensions (if available)
coverUrl, dynamicCoverUrlCover image URLs
shareUrlShare URL
regionRegion/country code (best-effort)
isAd, isPinned, isSponsoredContent flags

Engagement fields

FieldDescription
playCountPlay/view count
likeCount, commentCount, shareCount, saveCountEngagement counts
engagementTotalSum of likes + comments + shares + saves
engagementRateSimpleengagementTotal / playCount

Author/creator fields

FieldDescription
authorId, authorUniqueId, authorNicknameAuthor identification
authorProfileUrl, authorAvatarUrlAuthor links
authorVerifiedVerified badge status
authorFollowerCount, authorFollowingCountFollow counts
authorHeartCount, authorVideoCountAuthor stats

Music/sound fields

FieldDescription
musicId, musicTitle, musicAuthorNameSound identification
musicOriginalWhether the sound is original
musicUrlPlayback URL (best-effort)
musicDurationSound duration in seconds
musicCoverUrlSound cover art URL

Hashtag matching fields

FieldDescription
videoHashtagsArray of hashtag strings on the video
matchedInputHashtagWhether the video's hashtags include the input hashtag
matchedHashtagExactExact match with input hashtag
relatedMatchedHashtagsCountCount of related hashtags found on the video

Derived/analytics fields

FieldDescription
captionLengthLength of caption in characters
hasMentionWhether caption contains @mentions
hasLinkInCaptionWhether caption contains a URL
videoAgeDaysAge of video in days
engagementPerDayengagementTotal / videoAgeDays
keywordHintsExtracted keywords from caption

Best-effort fields

The following fields depend on what TikTok includes in its responses. They are extracted when available and returned as null when not: hashtagVideoCount, hashtagCoverUrl, relatedHashtags, region, textLanguage, saveCount, musicUrl, width, height, dynamicCoverUrl

Use cases

  • Campaign hashtag monitoring — track how many videos appear under branded or event hashtags and analyze top posts
  • Niche research — explore content under topic hashtags like fitness, AI, books, beauty, or finance
  • Creator discovery — find creators repeatedly posting under a specific hashtag
  • Content ideation — see what captions, sounds, and formats succeed inside a hashtag
  • Competitive tracking — compare multiple brand or category hashtags in a single run
  • AI workflow input — feed hashtags and related videos into enrichment, categorization, summarization, or scoring pipelines

Tips and best practices

  • Use normalizedHashtag to trace results — every record includes the hashtag that produced it
  • Check recordType — the Overview tab shows "hashtag-summary" and "video" so you can easily distinguish record types
  • Start small — use resultsPerHashtag: 10–20 for initial exploration, then increase
  • Batch multiple hashtags — scrape many hashtags in a single run for comparative analysis
  • Schedule for monitoring — run on a schedule to track hashtag momentum over time
  • Use derived fieldsengagementPerDay and videoAgeDays help identify fast-growing content
  • Toggle output sections — disable includeMusicDetails or includeAuthorDetails to reduce output size when you don't need those fields

Proxy configuration

Residential proxies are recommended for reliable TikTok scraping.

{
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Integrations

  • Google Sheets — export hashtag data to spreadsheets for team dashboards
  • Slack/email — set up notifications when new content appears under a hashtag
  • Webhooks — trigger downstream workflows when a run completes
  • API — access results programmatically via the Apify API
  • Other actors — feed discovered video URLs into TikTok Video Scraper for deeper analysis

Limitations

  • Results per hashtag depend on how much data TikTok returns on the hashtag page. The actual number may be lower than resultsPerHashtag.
  • Some fields are best-effort and may be null depending on what TikTok includes in its page data (see "Best-effort fields" above).
  • This actor scrapes public hashtag pages. It does not access private or restricted content.
  • TikTok hashtag pages do not reliably support sorting; results reflect TikTok's default ordering.

FAQ

How many results can I get per hashtag? Up to 500 per hashtag. The actual number depends on how much data TikTok returns for that hashtag page.

Why are some fields null? Fields like region, textLanguage, saveCount, and musicUrl depend on what TikTok includes in its page data. They are extracted on a best-effort basis and returned as null when unavailable.

What is the first record with mostly empty video fields? That's the hashtag-summary record (recordType: "hashtag-summary"). It contains hashtag-level metadata only — not video data. Use the recordType column in the Overview tab to identify it.

What is the difference between inputHashtag and normalizedHashtag? inputHashtag is exactly what you typed (e.g., #AI, https://www.tiktok.com/tag/ai). normalizedHashtag is the cleaned lowercase form (ai).

Can I scrape specific video pages? This actor is designed for hashtag intelligence. For scraping specific video URLs, use TikTok Video Scraper.

What happens if a hashtag fails? Failed hashtags emit a structured error record with error: true and errorMessage, so you can identify failures without the whole run breaking.

Is the hashtag-summary record charged? Yes. The pay-per-event pricing charges for each record pushed to the dataset, including summary records. Error records are not charged.