TikTok Video Scraper: Related Videos & Hashtag Network
Pricing
$19.99/month + usage
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
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
0
Monthly active users
4 days ago
Last modified
Categories
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
- Fetches your seed videos by direct TikTok video URL — full metadata, stats, author, and music info per video.
- Recursively expands the related-video graph from each seed, up to the depth you set, tagging every discovered video with
depth,parentVideoId, anddiscoveryPath. - 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". - Pushes every row to the dataset in real time as it's found, so the Output tab fills in live during the run.
Input
| Field | Type | Description |
|---|---|---|
postURLs | array of strings (required) | TikTok video URLs to use as seed videos. |
scrapeRelatedVideos | boolean | Legacy field kept for compatibility with older input configs. Enables one level of related-video expansion when the fields below are left unset. |
resultsPerPage | integer (1-50) | Legacy field kept for compatibility. Used only when maxRelatedPerLevel is unset. |
relatedVideoDepth | integer (0-2) | How many levels deep to recursively expand the related-video graph from each seed (0 = off). |
maxRelatedPerLevel | integer (1-20) | Max related videos to collect per video, per graph level. |
expandHashtagNeighborhood | boolean | When enabled, also collects sibling videos sharing each seed video's own top hashtag. |
maxHashtagNeighborsPerSeed | integer (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,nullfor seeds),discoveryPath(e.g.seed,seed>related,seed>related>related,seed>hashtag:travel),expansionType(seed/related/hashtagNeighbor/error). - Error transparency:
error,errorReason,errorMessage— present andfalse/nullon 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.