Supadata API via curl. Use this skill to extract transcripts from YouTube/TikTok/Instagram videos and scrape web content to markdown.
/plugin marketplace add vm0-ai/api0/plugin install api0@api0This skill inherits all available tools. When active, it can use any tool Claude has access to.
Use the Supadata API via direct curl calls to extract video transcripts and scrape web content for AI applications.
Official docs:
https://docs.supadata.ai/
Use this skill when you need to:
export SUPADATA_API_KEY="your-api-key"
Important: When using
$VARin a command that pipes to another command, wrap the command containing$VARinbash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"' | jq .
All examples below assume you have SUPADATA_API_KEY set.
The base URL for the API is:
https://api.supadata.ai/v1Authentication uses the x-api-key header.
Extract transcript from a YouTube video:
bash -c 'curl -s "https://api.supadata.ai/v1/transcript" -H "x-api-key: ${SUPADATA_API_KEY}" -G --data-urlencode "url=https://www.youtube.com/watch?v=dQw4w9WgXcQ" -d "text=true"' | jq .
Parameters:
url: Video URL (required)text: Return plain text (true) or timestamped chunks (false, default)lang: Preferred language (ISO 639-1 code, e.g., en, zh)mode: native (existing only), generate (AI), auto (default)Get transcript with timing information:
bash -c 'curl -s "https://api.supadata.ai/v1/transcript" -H "x-api-key: ${SUPADATA_API_KEY}" -G --data-urlencode "url=https://www.youtube.com/watch?v=dQw4w9WgXcQ" -d "text=false"' | jq '.content[:3]
Response format:
{
"content": [
{"text": "Hello", "offset": 0, "duration": 1500, "lang": "en"}
],
"lang": "en",
"availableLangs": ["en", "es", "zh"]
}
Extract transcript from other platforms:
# TikTok
bash -c 'curl -s "https://api.supadata.ai/v1/transcript" -H "x-api-key: ${SUPADATA_API_KEY}" -G --data-urlencode "url=https://www.tiktok.com/@user/video/1234567890" -d "text=true"' | jq .
# Instagram Reel
bash -c 'curl -s "https://api.supadata.ai/v1/transcript" -H "x-api-key: ${SUPADATA_API_KEY}" -G --data-urlencode "url=https://www.instagram.com/reel/ABC123/" -d "text=true"' | jq .
Supported platforms: YouTube, TikTok, Instagram, X (Twitter), Facebook
Fetch only existing transcripts without AI generation:
bash -c 'curl -s "https://api.supadata.ai/v1/transcript" -H "x-api-key: ${SUPADATA_API_KEY}" -G --data-urlencode "url=https://www.youtube.com/watch?v=dQw4w9WgXcQ" -d "text=true" -d "mode=native"' | jq .
Use mode=native to avoid AI generation costs (1 credit vs 2 credits/min).
Get channel information:
bash -c 'curl -s "https://api.supadata.ai/v1/youtube/channel" -H "x-api-key: ${SUPADATA_API_KEY}" -G --data-urlencode "id=@mkbhd"' | jq '{name, subscriberCount, videoCount}
Accepts channel URL, channel ID, or handle (e.g., @mkbhd).
Get video information:
bash -c 'curl -s "https://api.supadata.ai/v1/youtube/video" -H "x-api-key: ${SUPADATA_API_KEY}" -G --data-urlencode "url=https://www.youtube.com/watch?v=dQw4w9WgXcQ"' | jq '{title, viewCount, likeCount, duration}
Get metadata from any supported platform:
bash -c 'curl -s "https://api.supadata.ai/v1/metadata" -H "x-api-key: ${SUPADATA_API_KEY}" -G --data-urlencode "url=https://www.tiktok.com/@user/video/1234567890"' | jq .
Works with YouTube, TikTok, Instagram, X, Facebook posts.
Extract web page content:
bash -c 'curl -s "https://api.supadata.ai/v1/web/scrape" -H "x-api-key: ${SUPADATA_API_KEY}" -G --data-urlencode "url=https://example.com"' | jq .
Returns page content in Markdown format, ideal for AI processing.
Get all links from a website:
bash -c 'curl -s "https://api.supadata.ai/v1/web/map" -H "x-api-key: ${SUPADATA_API_KEY}" -G --data-urlencode "url=https://example.com"' | jq '.links[:10]
Start a crawl job for multiple pages:
# Start crawl
JOB_ID="$(bash -c 'curl -s "https://api.supadata.ai/v1/web/crawl" -X POST -H "x-api-key: ${SUPADATA_API_KEY}" -H "Content-Type: application/json" -d '"'"'{"url": "https://example.com", "maxPages": 10}'"'"'' | jq -r '.jobId')"
echo "Job ID: ${JOB_ID}"
# Check status
bash -c 'curl -s "https://api.supadata.ai/v1/web/crawl/${JOB_ID}" -H "x-api-key: ${SUPADATA_API_KEY}"' | jq '{status, pagesCompleted}'
Status values: queued, active, completed, failed
Translate a YouTube transcript to another language:
bash -c 'curl -s "https://api.supadata.ai/v1/youtube/transcript/translate" -H "x-api-key: ${SUPADATA_API_KEY}" -G --data-urlencode "url=https://www.youtube.com/watch?v=dQw4w9WgXcQ" -d "lang=zh" -d "text=true"' | jq .
Synchronous (HTTP 200): Direct result returned.
Asynchronous (HTTP 202): Returns jobId for polling:
{"jobId": "abc123"}
Poll the job endpoint until status is completed.
mode=native to save credits: Only fetches existing transcripts--data-urlencode for URLsavailableLangs array