Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.vidjutsu.ai/llms.txt

Use this file to discover all available pages before exploring further.

Twenty-four typed methods that wrap the public-data surfaces of TikTok, Instagram, X, YouTube, and the Meta / Google / LinkedIn / Reddit ad libraries. You don’t sign up for a scraper — VidJutsu holds the upstream master credentials and meters calls through your existing API key. See the API reference for the wrap rationale and op-counting model. Rate group: scrape — 500 calls per day, shared across all 24 methods. Cost: 1 credit base + 1 per staged media file (only when download_media: true).

download_media — opt-in CDN staging

Every method that returns media URLs accepts an optional download_media: boolean (default false).
  • false — Response contains raw source CDN URLs (TikTok / IG / X / YT / ad-library hosts). These URLs are often gatekept and can’t be fetched by downstream tools like watchMedia, transcribeMedia, or external LLM video tools.
  • true — VidJutsu fetches every media URL, stages it to our public CDN, and replaces source URLs with VidJutsu URLs in the response. Use whenever you’ll pipe the media downstream.
import { createClient } from "vidjutsu";
const vj = createClient();

const { data } = await vj.scrapeInstagramUserPosts({
  handle: "natgeo",
  download_media: true,
});
// Every post.media_url now points at cdn.vidjutsu.ai — safe to pass into watchMedia.

Methods

TikTok

MethodRequiredOptional
scrapeTikTokProfilehandletrim, download_media
scrapeTikTokProfileVideoshandlecursor, download_media
scrapeTikTokVideourltrim, download_media
scrapeTikTokVideoTranscripturl
scrapeTikTokVideoCommentsurlcursor
scrapeTikTokSearchUsersquerycursor
scrapeTikTokTrendingcountry, download_media

Instagram

MethodRequiredOptional
scrapeInstagramProfilehandledownload_media
scrapeInstagramUserPostshandlecursor, download_media
scrapeInstagramPosturldownload_media
scrapeInstagramPostCommentsurlcursor
scrapeInstagramUserReelshandlecursor, download_media

X (Twitter)

MethodRequiredOptional
scrapeTwitterProfilehandledownload_media
scrapeTwitterUserTweetshandlecursor, trim, download_media
scrapeTwitterTweeturltrim, download_media
scrapeTwitterTweetTranscripturl

YouTube

MethodRequiredOptional
scrapeYouTubeChannelhandle, channel_id, download_media
scrapeYouTubeChannelVideoshandle, channel_id, cursor, download_media
scrapeYouTubeVideourldownload_media
scrapeYouTubeVideoCommentsurlcursor

Ad libraries

MethodRequiredOptional
scrapeMetaAdsquerycountry, download_media
scrapeGoogleAdscompanydownload_media
scrapeLinkedInAdsquerydownload_media
scrapeRedditAdsquerydownload_media

Example — research a niche end-to-end

// 1) Find recent posts from a creator
const { data: posts } = await vj.scrapeInstagramUserPosts({
  handle: "fitness_account",
  download_media: true,  // stage so we can pipe into watchMedia
});

// 2) Score the top post for hook strength
const top = posts.items[0];
const { data: review } = await vj.watchMedia({
  mediaUrl: top.media_url,
  prompt: "Rate the hook 1-10 and explain in one sentence.",
});

console.log(review.response);

Example — competitive ad teardown

const { data: ads } = await vj.scrapeMetaAds({
  query: "AG1",
  country: "US",
  download_media: true,
});

for (const ad of ads.items.slice(0, 5)) {
  const { data } = await vj.watchMedia({
    mediaUrl: ad.media_url,
    prompt: "What's the offer, the hook, and the CTA?",
  });
  console.log(ad.advertiser, data.response);
}

Errors

Every method returns the standard VidJutsu envelope:
const { data, error } = await vj.scrapeTikTokProfile({ handle: "..." });
if (error) {
  // error.code, error.message
}
CodeMeaning
rate_limit500/day shared scrape limit hit
bad_requestInvalid input (e.g. malformed URL or handle)
upstream_unavailableUpstream provider timed out or returned 5xx
subscription_requiredActive subscription required for the scrape rate group