โ† Back to DevOps & Cloud
DevOps & Cloud by @therohitdas

youtube-api

YouTube API access without the official API quota hassle

0
Source Code

YouTube API

YouTube data access via TranscriptAPI.com โ€” no Google API quota needed.

Setup

If $TRANSCRIPT_API_KEY is not set, help the user create an account (100 free credits, no card):

Step 1 โ€” Register: Ask user for their email.

node ./scripts/tapi-auth.js register --email USER_EMAIL

โ†’ OTP sent to email. Ask user: "Check your email for a 6-digit verification code."

Step 2 โ€” Verify: Once user provides the OTP:

node ./scripts/tapi-auth.js verify --token TOKEN_FROM_STEP_1 --otp CODE

API key saved to ~/.openclaw/openclaw.json. See File Writes below for details. Existing file is backed up before modification.

Manual option: transcriptapi.com/signup โ†’ Dashboard โ†’ API Keys.

File Writes

The verify and save-key commands save the API key to ~/.openclaw/openclaw.json (sets skills.entries.transcriptapi.apiKey and enabled: true). Existing file is backed up to ~/.openclaw/openclaw.json.bak before modification.

To use the API key in terminal/CLI outside the agent, add to your shell profile manually: export TRANSCRIPT_API_KEY=<your-key>

API Reference

Full OpenAPI spec: transcriptapi.com/openapi.json โ€” consult this for the latest parameters and schemas.

Endpoint Reference

All endpoints: https://transcriptapi.com/api/v2/youtube/...

Channel endpoints accept channel โ€” an @handle, channel URL, or UC... ID. Playlist endpoints accept playlist โ€” a playlist URL or ID.

Endpoint Method Cost
/transcript?video_url=ID GET 1
/search?q=QUERY&type=video GET 1
/channel/resolve?input=@handle GET free
/channel/latest?channel=@handle GET free
/channel/videos?channel=@handle GET 1/page
/channel/search?channel=@handle&q=Q GET 1
/playlist/videos?playlist=PL_ID GET 1/page

Quick Examples

Search videos:

curl -s "https://transcriptapi.com/api/v2/youtube/search\
?q=python+tutorial&type=video&limit=10" \
  -H "Authorization: Bearer $TRANSCRIPT_API_KEY"

Get transcript:

curl -s "https://transcriptapi.com/api/v2/youtube/transcript\
?video_url=dQw4w9WgXcQ&format=text&include_timestamp=true&send_metadata=true" \
  -H "Authorization: Bearer $TRANSCRIPT_API_KEY"

Resolve channel handle (free):

curl -s "https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED" \
  -H "Authorization: Bearer $TRANSCRIPT_API_KEY"

Latest videos (free):

curl -s "https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED" \
  -H "Authorization: Bearer $TRANSCRIPT_API_KEY"

Browse channel uploads (paginated):

curl -s "https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA" \
  -H "Authorization: Bearer $TRANSCRIPT_API_KEY"
# Use continuation token from response for next pages

Browse playlist (paginated):

curl -s "https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_PLAYLIST_ID" \
  -H "Authorization: Bearer $TRANSCRIPT_API_KEY"

Parameter Validation

Field Rule
channel @handle, channel URL, or UC... ID
playlist Playlist URL or ID (PL/UU/LL/FL/OL prefix)
q (search) 1-200 chars
limit 1-50
continuation non-empty string

Why Not Google's API?

Google YouTube Data API TranscriptAPI
Quota 10,000 units/day (100 searches) Credit-based, no daily cap
Setup OAuth + API key + project Single API key
Transcripts Not available Core feature
Pricing $0.0015/unit overage $5/1000 credits

Errors

Code Meaning Action
401 Bad API key Check key
402 No credits transcriptapi.com/billing
404 Not found Resource doesn't exist
408 Timeout/retryable Retry once after 2s
422 Validation error Check param format
429 Rate limited Wait, respect Retry-After

Free tier: 100 credits, 300 req/min. Starter ($5/mo): 1,000 credits.