RAG and semantic video search
Chunk full_text, attach the video ID and timestamps, then retrieve exact moments across a channel or research corpus.
YouTube Transcript API
Fetch manual or auto-generated captions as timestamped JSON and full text with one API call.
import Influship from 'influship';
const client = new Influship({
apiKey: process.env.INFLUSHIP_API_KEY,
});
const response = await client.raw.youtube.getTranscript(
'dQw4w9WgXcQ',
{ language: 'auto' },
);
console.log(response.data.full_text);
console.log(response.data.transcript[0]);
// { text, start, duration }$0.005
per transcript with an API key
20 videos
maximum channel batch per request
JSON + text
timestamped segments and full transcript
manual + auto
caption sources supported
Use the single-video route for synchronous product requests. Use the channel route when you need a bounded corpus with partial-success handling.
| Method | Endpoint | Use it for | API-key price |
|---|---|---|---|
| GET | /v1/raw/youtube/transcript/{video_id} | Fetch one video transcript, full text, timestamped segments, and available languages. | $0.005 / transcript |
| GET | /v1/raw/youtube/channel-transcripts/{handle} | Fetch up to 20 channel transcripts sorted by popular, newest, or oldest. | $0.005 / transcript |
Both paths use the same public contract. The TypeScript SDK provides generated types; REST works from Python, Go, Ruby, automation tools, and serverless functions.
const corpus = await client.raw.youtube.getChannelTranscripts(
'@mkbhd',
{
video_limit: 20,
sort_by: 'popular',
language: 'en',
include_segments: false,
},
);
for (const item of corpus.data.items) {
if (item.full_text) {
console.log(item.video_id, item.full_text);
}
}curl 'https://api.influship.com/v1/raw/youtube/transcript/dQw4w9WgXcQ?language=auto' -H "X-API-Key: $INFLUSHIP_API_KEY"Store full_text for retrieval and language processing. Keep transcript when users need clickable timestamps or segment-level citations.
Choose full text for indexing or timestamped segments for playback and citations.
full_text transcript[] word_count
Inspect the selected language, source type, and all caption tracks found.
language source available_languages[]
Join transcript records back to the exact video and preserve scrape time.
video_id url title scraped_at
Measure partial success without discarding transcripts that completed.
transcripts_fetched transcripts_failed items[].error
{
"data": {
"video_id": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Example video",
"language": "en",
"source": "manual",
"transcript": [
{
"text": "Welcome to the channel.",
"start": 0.5,
"duration": 2.3
}
],
"full_text": "Welcome to the channel...",
"word_count": 1245,
"available_languages": [
{ "code": "en", "name": "English", "is_auto": false }
],
"scraped_at": "2026-07-19T15:38:38.366Z"
}
}The response is ready for a database, vector index, review queue, or customer-facing transcript experience.
Chunk full_text, attach the video ID and timestamps, then retrieve exact moments across a channel or research corpus.
Search spoken content for products, companies, claims, and topics that never appear in titles or descriptions.
Feed reliable transcript text into summarization, clipping, newsletter, article, and social-content pipelines.
Add transcript views and in-video search to libraries where manual caption processing would slow publication.
The independent guide compares four serious approaches, including operating cost, cloud-IP failure modes, official API restrictions, and when self-hosting still makes sense.
One credit equals $0.01. API-key calls use credit-based rate limits, and every successful response reports the credits charged and remaining minute and hour budgets.
400
validation_error
Fix an invalid video ID, handle, language, sort option, or batch parameter.
401
unauthorized
Check the X-API-Key header. Do not retry an invalid key in a loop.
429
rate_limit_exceeded
Honor Retry-After or the rate-limit reset headers, then retry with jitter.
503
service_unavailable
Treat live-platform throttling as temporary. Use bounded backoff and preserve the job.
Exact behavior lives in the API reference. These answers cover the decisions teams make before integrating.
A successful single-video response includes the video ID, title, URL, selected language, caption source, timestamped transcript segments, full plain text, word count, available language tracks, and scrape time.
Yes. The endpoint supports manual captions and auto-generated captions. The source field tells you which track was returned, and available_languages lists the other caption tracks found on the video.
Use GET /v1/raw/youtube/channel-transcripts/{handle}. It fetches up to 20 video transcripts per request, can sort by popular, newest, or oldest, and reports per-video failures without failing the complete response.
API-key requests cost 0.5 credits per transcript returned. One credit is $0.01, so the effective price is $0.005 per transcript. Failed requests are not billed.
Yes. Influship publishes an official TypeScript SDK, and Python applications can call the REST endpoint with requests or httpx. Send the API key in the X-API-Key header.
The transcript endpoint accepts the YouTube video ID in the path. If your application receives full URLs, extract and validate the 11-character video ID before making the request.
Generate an API key, copy a working example, and inspect the response before you commit to production volume.