Tiktok Viral Video Finder avatar

Tiktok Viral Video Finder

Pricing

from $3.20 / 1,000 video results

Go to Apify Store
Tiktok Viral Video Finder

Tiktok Viral Video Finder

TikTok Viral Video Finder finds high-performing TikTok videos by trend, keyword, hashtag, or creator, with views, likes, comments, shares, and viral scoring. Use it for content research, competitor monitoring, creator scouting, and trend analysis.

Pricing

from $3.20 / 1,000 video results

Rating

0.0

(0)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

TikTok Viral Video Finder Thumbnail

Find high-performing public TikTok videos by trend, keyword, hashtag, or seed creator with viral scoring, qualification fields, and discovery lineage.

What this Actor does

TikTok Viral Video Finder is an Apify Actor for viral-content discovery, shortlist building, and analytics workflows. It collects public TikTok video records and returns flat, CSV-friendly rows designed for datasets, Sheets, Airtable, BI tools, and AI pipelines.

This Actor helps users:

  • find breakout or high-momentum public TikTok videos
  • monitor videos around keywords, hashtags, and creators
  • identify recent videos worth researching
  • export structured video rows for analytics and automation

Supported discovery inputs

  • includeTrending: collect currently trending public TikTok videos
  • keywords: discover videos from TikTok video search
  • hashtags: discover videos from hashtag pages
  • seedCreators: collect recent public videos from specific creator profiles

Behavior:

  • if users provide any discovery input, only those provided inputs are used
  • if users leave all discovery inputs empty, the Actor falls back to trending-only discovery

Why use this Actor

  • video-first output instead of creator-first lead output
  • viral-style scoring and transparent ranking reasons
  • lineage fields showing how each video was found
  • mixed discovery in one run
  • flat, analytics-ready output
  • run summary in the default key-value store under SUMMARY
  • pay-per-event pricing based on returned video rows

Example input 1

Mixed discovery for trend research:

{
"includeTrending": true,
"keywords": ["skincare routine", "ugc creator"],
"hashtags": ["beautytok", "skincaretips"],
"seedCreators": ["@examplecreator"],
"maxVideos": 200,
"country": "AU",
"timePeriod": "7d",
"sortBy": "viralScore",
"minViews": 10000,
"minLikes": 1000,
"minComments": 50,
"minShares": 25,
"minEngagementRate": 0,
"verifiedCreatorsOnly": false,
"languageHint": "en",
"includeCreatorFields": true,
"includeScoring": true,
"deduplicateVideos": true,
"stopOnError": false,
"emitPartialResults": true,
"includeRawPayload": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Example input 2

Hashtag-only shortlist with stricter filtering:

{
"includeTrending": false,
"hashtags": ["beauty", "makeup"],
"maxVideos": 100,
"timePeriod": "7d",
"sortBy": "viralScore",
"minViews": 50000,
"minLikes": 5000,
"minComments": 100,
"minShares": 50,
"verifiedCreatorsOnly": false,
"includeCreatorFields": true,
"includeScoring": true,
"deduplicateVideos": true,
"emitPartialResults": true,
"includeRawPayload": false
}

Example input 3

Seed creator monitoring:

{
"includeTrending": false,
"seedCreators": [
"@mikaylanogueira",
"https://www.tiktok.com/@goodwipes"
],
"maxVideos": 50,
"timePeriod": "30d",
"sortBy": "createTime",
"includeCreatorFields": true,
"includeScoring": true,
"deduplicateVideos": true,
"emitPartialResults": true
}

Output

Each dataset row represents one public TikTok video.

Core fields

  • videoId
  • videoUrl
  • caption
  • createTime
  • durationSeconds
  • videoThumbnailUrl
  • playCount
  • likeCount
  • commentCount
  • shareCount
  • saveCount

Creator fields

  • creatorUsername
  • creatorProfileUrl
  • creatorId
  • creatorDisplayName
  • creatorVerified
  • creatorFollowersCount
  • creatorFollowingCount
  • creatorLikesCount

Classification and lineage

  • hashtags
  • mentions
  • soundTitle
  • soundId
  • soundAuthor
  • region
  • language
  • isAd
  • discoveredVia
  • sourceKeywords
  • sourceHashtags
  • sourceSeedCreators
  • sourceCountry
  • sourceTimePeriod
  • discoveryCount

Qualification fields

  • viralScore
  • viralScoreReason
  • engagementRateApprox
  • velocityHint
  • isRecent
  • isBreakoutCandidate
  • qualificationBucket
  • qualificationReason

Run metadata

  • position
  • scrapedAt
  • isPartial
  • errorType
  • errorMessage

If includeRawPayload is enabled, the row can also include rawPayload.

Output views

The Actor defines these dataset tabs:

  • overview
  • lineage
  • qualification
  • errors

Overview table view

TikTok Viral Video Finder Overview Table View

Overview tab example

{
"position": 1,
"videoUrl": "https://www.tiktok.com/@jfgtdmdm369/video/7617058535091834142",
"caption": "#fyp #viral EDIT: GUYS ITS A JOKE IV HAD THIS BIRD SINCE I WAS 2!!! ITS A MATING CALL!! HES A SWEETHEART. I DIDNT THINK MY VIDEO WOULD GO VIRAL",
"creatorUsername": "jfgtdmdm369",
"playCount": 2200000,
"likeCount": 402400,
"commentCount": 1540,
"shareCount": 34300,
"viralScore": 83,
"qualificationBucket": "high-opportunity",
"velocityHint": "medium",
"scrapedAt": "2026-03-21T07:07:59.168Z"
}

Lineage tab example

{
"videoUrl": "https://www.tiktok.com/@stellvrr/video/7617787996905196818",
"creatorUsername": "stellvrr",
"discoveredVia": ["hashtag"],
"sourceKeywords": [],
"sourceHashtags": ["beauty"],
"sourceSeedCreators": [],
"sourceCountry": null,
"sourceTimePeriod": "7d",
"discoveryCount": 1
}

Qualification tab example

{
"videoUrl": "https://www.tiktok.com/@mikaylanogueira/video/7619389493778369805",
"creatorUsername": "mikaylanogueira",
"createTime": "2026-03-20T17:22:53.000Z",
"engagementRateApprox": 0.1058,
"viralScore": 67,
"viralScoreReason": "high view count, strong likes, active comments, share activity, healthy engagement rate, recent post, high velocity",
"isRecent": true,
"isBreakoutCandidate": true,
"qualificationBucket": "high-opportunity",
"qualificationReason": "Recent or strong-performing video with multiple viral signals"
}

Errors tab example

This tab is populated only when emitPartialResults is enabled and a discovery path fails or returns no videos. The sample output file used for this README contained no error rows, so the example below shows the expected structure.

{
"discoveredVia": ["hashtag"],
"sourceKeywords": [],
"sourceHashtags": ["beauty"],
"sourceSeedCreators": [],
"isPartial": true,
"errorType": "DiscoveryError",
"errorMessage": "No videos found from this discovery path",
"scrapedAt": "2026-03-21T07:07:59.168Z"
}

Full output example

{
"videoId": "7617058535091834142",
"videoUrl": "https://www.tiktok.com/@jfgtdmdm369/video/7617058535091834142",
"caption": "#fyp #viral EDIT: GUYS ITS A JOKE IV HAD THIS BIRD SINCE I WAS 2!!! ITS A MATING CALL!! HES A SWEETHEART. I DIDNT THINK MY VIDEO WOULD GO VIRAL",
"createTime": "2026-03-14T10:38:39.000Z",
"durationSeconds": 10,
"videoThumbnailUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oYfTE6PGaAyfCjuXAILhaOqGpeZZDrnIIICC1I~tplv-tiktokx-origin.image?...",
"playCount": 2200000,
"likeCount": 402400,
"commentCount": 1540,
"shareCount": 34300,
"saveCount": 20286,
"creatorUsername": "jfgtdmdm369",
"creatorProfileUrl": "https://www.tiktok.com/@jfgtdmdm369",
"creatorId": "7617037932486771725",
"creatorDisplayName": "Linda",
"creatorVerified": false,
"creatorFollowersCount": 411,
"creatorFollowingCount": 12,
"creatorLikesCount": 404700,
"hashtags": ["fyp", "viral"],
"mentions": [],
"soundTitle": "Dr Rick Trager Chase Theme",
"soundId": "7450116884730563360",
"soundAuthor": "K Crew",
"region": null,
"language": "en",
"isAd": false,
"discoveredVia": ["trending"],
"sourceKeywords": [],
"sourceHashtags": [],
"sourceSeedCreators": [],
"sourceCountry": null,
"sourceTimePeriod": "7d",
"discoveryCount": 1,
"viralScore": 83,
"viralScoreReason": "high view count, strong likes, active comments, share activity, high engagement rate, recent post, outperforming creator size",
"engagementRateApprox": 0.2084,
"velocityHint": "medium",
"isRecent": true,
"isBreakoutCandidate": true,
"qualificationBucket": "high-opportunity",
"qualificationReason": "Recent or strong-performing video with multiple viral signals",
"position": 1,
"scrapedAt": "2026-03-21T07:07:59.168Z",
"isPartial": false,
"errorType": null,
"errorMessage": null
}

Viral score notes

viralScore is a heuristic, not an official TikTok metric. It uses public signals such as:

  • views
  • likes
  • comments
  • shares
  • approximate engagement rate
  • recency
  • discovery overlap across multiple inputs
  • creator-size context when available

velocityHint is derived from recency and public performance. qualificationBucket is a shortlist-oriented interpretation of the score and context.

Summary output

The Actor also writes a run summary to the default key-value store under SUMMARY.

Typical summary fields include:

  • runStatus
  • startedAt
  • finishedAt
  • durationSeconds
  • totalVideosReturned
  • totalVideosAfterDeduplication
  • totalErrorRows
  • averageViews
  • averageLikes
  • averageComments
  • averageShares
  • topHashtags
  • topCreators
  • topSounds
  • videosByQualificationBucket
  • videosByCountry
  • videosByTimeBucket
  • discoveryInputs
  • filters
  • totalRowsPushed
  • spendingLimitReached

Pricing

This Actor uses pay-per-event pricing.

  • pricing event: video-result
  • charging model: one billable event per returned video row

The Actor also respects user-configured spending limits and stops billable output when the charge limit is reached.

Use cases

  • viral content research
  • competitor monitoring
  • trend detection
  • UGC inspiration
  • creator scouting
  • reporting and analytics
  • AI enrichment pipelines

Notes and limitations

  • Public TikTok data only.
  • Viral score is heuristic and should not be treated as predictive certainty.
  • Available fields can vary by discovery path and TikTok response shape.
  • Some fields such as saveCount, region, language, and isAd depend on public response availability and may be missing or approximate.
  • Partial rows can be emitted when a discovery path fails or returns no videos.
  • Residential proxies are recommended for more stable TikTok access.