TikTok Video Scraper: Related Videos & Hashtag Network avatar

TikTok Video Scraper: Related Videos & Hashtag Network

Pricing

$19.99/month + usage

Go to Apify Store
TikTok Video Scraper: Related Videos & Hashtag Network

TikTok Video Scraper: Related Videos & Hashtag Network

🎯 TikTok Video Scraper: Related Videos & Hashtag Network pulls public video metadata at scale—captions, hashtags, views, likes, comments, shares, sound, author, publish time & URLs. 📊 Export CSV/JSON for analytics, growth, and competitor research. 🚀 Perfect for marketers, analysts & creators.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

Scraply

Scraply

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

0

Monthly active users

4 days ago

Last modified

Share

Scrape any TikTok video by URL and map the content network around it: a tagged, recursive related-video graph (depth 0, 1, or 2 hops) plus a hashtag-neighborhood expansion that finds sibling videos sharing the seed video's own hashtags. Every row is labeled with its graph depth, its parent video, and the exact discovery path that found it — so you can tell a direct scrape apart from a 2-hop related video or a hashtag-neighbor at a glance.

Use this TikTok video data scraper / TikTok network scraper to export video metadata, engagement stats, author info, music info, and content-network relationships to JSON, CSV, Excel, or via API — no login required.

What this actor does

  1. Fetches your seed videos by direct TikTok video URL — full metadata, stats, author, and music info per video.
  2. Recursively expands the related-video graph from each seed, up to the depth you set, tagging every discovered video with depth, parentVideoId, and discoveryPath.
  3. Expands the hashtag neighborhood of each seed — auto-discovers sibling videos published under the seed video's own top hashtag (not a hashtag you supply), tagged expansionType: "hashtagNeighbor".
  4. Pushes every row to the dataset in real time as it's found, so the Output tab fills in live during the run.

Input

FieldTypeDescription
postURLsarray of strings (required)TikTok video URLs to use as seed videos.
scrapeRelatedVideosbooleanLegacy field kept for compatibility with older input configs. Enables one level of related-video expansion when the fields below are left unset.
resultsPerPageinteger (1-50)Legacy field kept for compatibility. Used only when maxRelatedPerLevel is unset.
relatedVideoDepthinteger (0-2)How many levels deep to recursively expand the related-video graph from each seed (0 = off).
maxRelatedPerLevelinteger (1-20)Max related videos to collect per video, per graph level.
expandHashtagNeighborhoodbooleanWhen enabled, also collects sibling videos sharing each seed video's own top hashtag.
maxHashtagNeighborsPerSeedinteger (1-20)Max hashtag-neighbor videos to collect per seed video.

Example input:

{
"postURLs": ["https://www.tiktok.com/@apifyoffice/video/7200360993149553925"],
"relatedVideoDepth": 1,
"maxRelatedPerLevel": 5,
"expandHashtagNeighborhood": true,
"maxHashtagNeighborsPerSeed": 5
}

postURLs is the only required field — every other input has a working default, so the actor runs out of the box.

Output

Each dataset row is one TikTok video (a seed, a related video, or a hashtag neighbor). Key fields:

  • Identity & content: id, text, textLanguage, createTime, createTimeISO, locationCreated, isAd, hashtags, mentions, detailedMentions, webVideoUrl, submittedVideoUrl.
  • Author: authorMeta.{id, name, profileUrl, nickName, verified, signature, bioLink, avatar, originalAvatarUrl, privateAccount, following, friends, fans, heart, video, digg}.
  • Music: musicMeta.{musicName, musicAuthor, musicOriginal, playUrl, coverMediumUrl, originalCoverMediumUrl, musicId}.
  • Video: videoMeta.{height, width, duration, coverUrl, originalCoverUrl, definition, format, subtitleLinks}, mediaUrls (direct playable/downloadable CDN URLs — data only, no files are downloaded or stored by this actor).
  • Engagement: diggCount, shareCount, playCount, collectCount, commentCount, repostCount.
  • Content flags: isSlideshow, isPinned, isSponsored, effectStickers, IsAigc, AIGCDescription, ShowAIGC, diversificationLabels.
  • Network-graph tagging (this actor's own fields): depth (0 for seeds, 1+ for related-graph hops), parentVideoId (the video that led to this discovery, null for seeds), discoveryPath (e.g. seed, seed>related, seed>related>related, seed>hashtag:travel), expansionType (seed / related / hashtagNeighbor / error).
  • Error transparency: error, errorReason, errorMessage — present and false/null on every successful row, populated with an honest reason on rows that could not be scraped, instead of being silently dropped or shaped differently from the rest.

Example output row (trimmed):

{
"id": "7200360993149553925",
"text": "example caption #travel",
"createTimeISO": "2023-01-30T12:00:00.000Z",
"authorMeta": { "name": "apifyoffice", "fans": 12345, "verified": false },
"diggCount": 1520,
"playCount": 98000,
"hashtags": [{ "name": "travel" }],
"mediaUrls": ["https://v16-webapp.tiktok.com/..."],
"mentions": ["@someuser"],
"depth": 1,
"parentVideoId": "7200360993149553925",
"discoveryPath": "seed>related",
"expansionType": "related",
"error": false
}

Use cases

  • Content network mapping: trace which videos TikTok's own related-video graph connects to a given post, several hops deep.
  • Hashtag-community research: see what else is being posted under a video's own hashtags without having to already know the hashtag.
  • Competitor / trend monitoring: pull a competitor's video plus its surrounding content network in one run.
  • Dataset building: export structured TikTok video + author + music + engagement + network-graph data for analysis in Excel, BI tools, or your own pipeline.

FAQ

Do I need a TikTok account or login? No. This actor works from public video URLs only.

Does this download the actual video files? No. mediaUrls contains the CDN URL data field only — no video/image files are downloaded or stored by this actor.

What happens if a video can't be scraped? It still gets a row, with error: true, an errorReason, and an honest errorMessage — never silently dropped and never a blank/broken row.

Will my old input (scrapeRelatedVideos / resultsPerPage) still work? Yes — both legacy fields are still accepted and produce the same basic one-level expansion behavior as before; the new relatedVideoDepth / maxRelatedPerLevel / expandHashtagNeighborhood fields give you finer control on top of that.