npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@kazedevid/tiktok-sup

v1.5.0

Published

Pure TikTok scraper & downloader for Node.js without third-party APIs. Scrape videos (clean MP4 no-watermark), photo carousels, audio MP3, creator profile & video feed, hashtags, sound feeds, engagement analytics, captions/transcripts, and comments direct

Readme

@kazedevid/tiktok-sup

npm version License: MIT Node.js Version

A pure Node.js scraper library and CLI for tiktok.com. Extracts videos (clean no-watermark MP4 & watermarked MP4), photo slideshows / carousels (HD images), creator profile feeds, user recent videos, hashtag feeds, sound feeds, engagement analytics, MP3 soundtracks, subtitle closed captions & transcripts, comments, and trending topics directly from official TikTok web pages.

No 3rd-party APIs. No proxies required. 100% Pure tiktok.com web parsing.


Features

  • Video Scraper & Downloader: Extracts clean, high-resolution MP4 streams without watermarks (video.noWatermarkUrl) and standard watermarked streams.
  • Photo Slideshow Scraper: Automatically identifies photo carousels (postType === "photo"), providing an array of high-definition images with batch downloaders.
  • Creator Video Feed Scraper: Extract all recent uploaded videos from any creator (scrapeUserVideos("@username")) with view counts, likes, duration, and direct video links.
  • Hashtag Video Scraper: Extract top trending videos under any hashtag (scrapeHashtagVideos("mlbb")).
  • Sound & Music Feed Scraper: Extract videos created using a specific audio track (scrapeSoundVideos("soundId")).
  • Engagement & Virality Calculator: Calculate engagement rate %, like-to-view ratio %, virality score, and performance tier (Viral, High, Average, Low).
  • Subtitle Transcripts Parser: WebVTT/SRT closed-caption parser returning timestamped dialogue cues and full-text transcripts.
  • Creator Profile Stalker: Scrape follower count, following count, total likes, video count, bio, verified status, and high-res avatars.
  • Comment Trees: Extracts top comments with author metadata and like counts.
  • Discover & Trending: Live viral creators, trending hashtags, and popular music tracks.
  • Downloader Helpers: Built-in downloadFile(), downloadBuffer(), downloadPhoto(), and downloadAllPhotos().
  • Dual Extraction Engine: Mobile Safari rehydration parser backed by Googlebot Schema.org engine for bypass resilience.
  • CLI Executable: Run commands right in your terminal with npx @kazedevid/tiktok-sup.
  • TypeScript Ready: Full type definitions included (index.d.ts).

Installation

npm install @kazedevid/tiktok-sup

Or run via npx:

npx @kazedevid/tiktok-sup --help

Quick Start

1. Scrape Video & Download Clean MP4 (No Watermark)

import { scrapeVideo, downloadFile } from "@kazedevid/tiktok-sup";

const post = await scrapeVideo("https://vt.tiktok.com/ZSprKn3h8/");

console.log("Post Type:", post.postType); // "video" or "photo"
console.log("Title:", post.description);
console.log("Author:", post.author.nickname, "(@" + post.author.username + ")");
console.log("Views:", post.stats.views.toLocaleString());
console.log("Engagement Rate:", post.engagement.engagementRate + "%");

// Download clean no-watermark MP4 directly
const cleanUrl = post.video.noWatermarkUrl || post.video.playUrl;
await downloadFile(cleanUrl, "clean_video.mp4", post.sessionCookies);
console.log("Saved clean_video.mp4!");

2. Scrape Creator Recent Video Feed

Scrape recent videos published by any TikTok creator with play counts, likes, duration, and direct links:

import { scrapeUserVideos } from "@kazedevid/tiktok-sup";

const feed = await scrapeUserVideos("@zachking");

console.log(`Creator: ${feed.author.nickname} (@${feed.author.username})`);
console.log(`Found ${feed.totalVideos} recent videos:`);

feed.videos.forEach((vid, i) => {
  console.log(`[${i + 1}] ${vid.description.slice(0, 40)}...`);
  console.log(`    Duration: ${vid.durationFormatted} | Views: ${vid.views.toLocaleString()} | Likes: ${vid.likes.toLocaleString()}`);
  console.log(`    URL: ${vid.url}`);
  console.log(`    Engagement: ${vid.engagementRate}% (${vid.benchmark})`);
});

3. Scrape Hashtag Trending Videos

Fetch top videos currently trending under a specific hashtag:

import { scrapeHashtagVideos } from "@kazedevid/tiktok-sup";

const tagFeed = await scrapeHashtagVideos("mobilelegends");

console.log(`Hashtag #${tagFeed.tag} - ${tagFeed.videos.length} videos found`);
for (const vid of tagFeed.videos) {
  console.log(`- ${vid.description.slice(0, 50)} by @${vid.author.username} (${vid.views.toLocaleString()} views)`);
}

4. Scrape Sound / Music Feed

Discover videos that used a specific sound or song:

import { scrapeSoundVideos } from "@kazedevid/tiktok-sup";

const soundFeed = await scrapeSoundVideos("7123456789012345678");
console.log(`Music: ${soundFeed.musicTitle} (${soundFeed.videos.length} videos)`);

5. Engagement & Virality Analytics

Calculate detailed engagement performance from raw interaction counts:

import { calculateEngagement } from "@kazedevid/tiktok-sup";

const metrics = calculateEngagement({
  views: 531200,
  likes: 42100,
  comments: 890,
  shares: 1200,
  saves: 3400
});

console.log(metrics);
/*
{
  views: 531200,
  likes: 42100,
  comments: 890,
  shares: 1200,
  saves: 3400,
  totalEngagements: 47590,
  engagementRate: 8.96,
  likeRatio: 7.93,
  viralityScore: 41.2,
  benchmark: "High"
}
*/

6. Subtitles & Transcript Parser

Extract timestamped dialogue and full text from closed-caption URLs:

import { scrapeVideo, scrapeTranscript } from "@kazedevid/tiktok-sup";

const post = await scrapeVideo("https://www.tiktok.com/@creator/video/123456789");
if (post.subtitles && post.subtitles.length > 0) {
  const transcript = await scrapeTranscript(post.subtitles[0].url);
  console.log(`Total words: ${transcript.totalWords}`);
  console.log(transcript.fullText);
}

7. Scrape Photo Slideshows (Carousels)

import { scrapeVideo, downloadAllPhotos } from "@kazedevid/tiktok-sup";

const post = await scrapeVideo("https://www.tiktok.com/@creator/video/123456789");

if (post.postType === "photo" && post.photos) {
  console.log(`Found ${post.photos.length} photos!`);
  // Download all photos into a folder
  const savedFiles = await downloadAllPhotos(post.photos, "./my-photos", "slide", post.sessionCookies);
  console.log(`Saved ${savedFiles.length} photos to ./my-photos`);
}

8. Stalk / Scrape Creator Profile

import { scrapeUser } from "@kazedevid/tiktok-sup";

const user = await scrapeUser("@zachking");
console.log("Username:", user.username);
console.log("Followers:", user.followers.toLocaleString());
console.log("Total Likes:", user.likes.toLocaleString());
console.log("Verified:", user.verified);

// You can also get their recent videos directly:
const feed = await user.getVideos();
console.log(`Fetched ${feed.videos.length} videos from profile.`);

CLI Usage

You can run @kazedevid/tiktok-sup directly via npx without writing code:

# Scrape video info
npx @kazedevid/tiktok-sup video https://vt.tiktok.com/ZSprKn3h8/

# Download clean video (no watermark)
npx @kazedevid/tiktok-sup download https://vt.tiktok.com/ZSprKn3h8/ -o clean.mp4

# Scrape creator profile
npx @kazedevid/tiktok-sup user @zachking

# Scrape creator recent videos feed
npx @kazedevid/tiktok-sup user-videos @zachking -l 10

# Scrape hashtag trending videos
npx @kazedevid/tiktok-sup hashtag-videos mlbb -l 10

# Calculate engagement analytics
npx @kazedevid/tiktok-sup engagement --views 100000 --likes 12000 --shares 800 --comments 400

# Discover viral creators and trending hashtags
npx @kazedevid/tiktok-sup discover

License

MIT © KazeDevID