Supadata API via curl. Use this skill to extract transcripts from YouTube/TikTok/Instagram videos and scrape web content to markdown.
If requests fail, run zero doctor check-connector --env-name SUPADATA_TOKEN or zero doctor check-connector --url https://api.supadata.ai/v1/transcript --method POST
All examples below assume you have SUPADATA_TOKEN 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:
Write to /tmp/supadata_url.txt:
https://www.youtube.com/watch?v=dQw4w9WgXcQ
curl -s "https://api.supadata.ai/v1/transcript" -H "x-api-key: $SUPADATA_TOKEN" -G --data-urlencode "url@/tmp/supadata_url.txt" -d "text=true"
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:
curl -s "https://api.supadata.ai/v1/transcript" -H "x-api-key: $SUPADATA_TOKEN" -G --data-urlencode "url@/tmp/supadata_url.txt" -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
curl -s "https://api.supadata.ai/v1/transcript" -H "x-api-key: $SUPADATA_TOKEN" -G --data-urlencode "url@/tmp/supadata_url.txt" -d "text=true"
# Instagram Reel
curl -s "https://api.supadata.ai/v1/transcript" -H "x-api-key: $SUPADATA_TOKEN" -G --data-urlencode "url@/tmp/supadata_url.txt" -d "text=true"
Supported platforms: YouTube, TikTok, Instagram, X (Twitter), Facebook
Fetch only existing transcripts without AI generation:
curl -s "https://api.supadata.ai/v1/transcript" -H "x-api-key: $SUPADATA_TOKEN" -G --data-urlencode "url@/tmp/supadata_url.txt" -d "text=true" -d "mode=native"
Use mode=native to avoid AI generation costs (1 credit vs 2 credits/min).
Get channel information:
curl -s "https://api.supadata.ai/v1/youtube/channel" -H "x-api-key: $SUPADATA_TOKEN" -G --data-urlencode "id=@mkbhd" | jq '{name, subscriberCount, videoCount}
Accepts channel URL, channel ID, or handle (e.g., @mkbhd).
Get video information:
curl -s "https://api.supadata.ai/v1/youtube/video" -H "x-api-key: $SUPADATA_TOKEN" -G --data-urlencode "url@/tmp/supadata_url.txt" | jq '{title, viewCount, likeCount, duration}
Get metadata from any supported platform:
curl -s "https://api.supadata.ai/v1/metadata" -H "x-api-key: $SUPADATA_TOKEN" -G --data-urlencode "url@/tmp/supadata_url.txt"
Works with YouTube, TikTok, Instagram, X, Facebook posts.
Extract web page content:
curl -s "https://api.supadata.ai/v1/web/scrape" -H "x-api-key: $SUPADATA_TOKEN" -G --data-urlencode "url@/tmp/supadata_url.txt"
Returns page content in Markdown format, ideal for AI processing.
Get all links from a website:
curl -s "https://api.supadata.ai/v1/web/map" -H "x-api-key: $SUPADATA_TOKEN" -G --data-urlencode "url@/tmp/supadata_url.txt" | jq '.urls[:10]'
Start a crawl job for multiple pages.
Write to /tmp/supadata_request.json:
{
"url": "https://example.com",
"maxPages": 10
}
Then run:
# Start crawl
JOB_ID="$(curl -s "https://api.supadata.ai/v1/web/crawl" -X POST -H "x-api-key: $SUPADATA_TOKEN" -H "Content-Type: application/json" -d @/tmp/supadata_request.json | jq -r '.jobId')"
echo "Job ID: ${JOB_ID}"
# Check status
curl -s "https://api.supadata.ai/v1/web/crawl/<your-job-id>" -H "x-api-key: $SUPADATA_TOKEN" | jq '{status, pagesCompleted}'
Status values: queued, active, completed, failed
Translate a YouTube transcript to another language:
curl -s "https://api.supadata.ai/v1/youtube/transcript/translate" -H "x-api-key: $SUPADATA_TOKEN" -G --data-urlencode "url@/tmp/supadata_url.txt" -d "lang=zh" -d "text=true"
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