Single videos
Fetch full text and timestamped caption segments.
VidWords API
Timestamped transcripts and channel video metadata—ready for your product or workflow.
HTTPS • Authenticated routes • Delete history anytime
curl -X POST https://vidwords.com/api/transcripts \
-H "Authorization: Basic YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ids": ["dQw4w9WgXcQ"],
"lang": "en"
}'
import requests
data = requests.post(
"https://vidwords.com/api/transcripts",
headers={"Authorization": "Basic YOUR_API_KEY"},
json={"ids": ["dQw4w9WgXcQ"], "lang": "en"}
).json()
const data = await fetch(
"https://vidwords.com/api/transcripts", {
method: "POST",
headers: { "Authorization": "Basic YOUR_API_KEY" },
body: JSON.stringify({ ids: ["dQw4w9WgXcQ"] })
}
).then(r => r.json());
{
"status": "completed",
"language": "en",
"duration_seconds": 142,
"segments": [
{ "start": 0.00,
"end": 4.35,
"text": "We separate transcripts and Watch minutes..." }
]
}Fetch full text and timestamped caption segments.
Fetch transcripts for up to 50 videos in one request.
List up to 500 recent uploads and their metadata.
Handle successes and per-item errors in one response.
From link to data.
Two focused endpoints return transcripts, timed segments and channel uploads in clean JSON.
Send one video, a batch of IDs, a channel handle or a channel URL.
Each requested video returns its own transcript data or a specific error.
{
"results": [{
"id": "dQw4w9WgXcQ",
"languageCode": "en",
"text": "Welcome to the product update…",
"segments": [{
"start": 0.24,
"duration": 3.18,
"text": "Welcome to the product update…"
}]
}]
}Use the representation that fits your pipeline.