ScriptHaul API
Log inGet API key

For developers · 100 free credits a month

The YouTube transcript API that does whole channels.

Find the right videos. Fetch one transcript or a whole channel. Search what was said, cite the moment and keep your library current. Cache hits and failures are free.

Email only. No password.

Connect your assistant with OAuth ↗

curl --get https://api.scripthaul.com/v1/transcript \
  -H "Authorization: Bearer $SCRIPTHAUL_API_KEY" \
  --data-urlencode "video_id=jNQXAC9IVRw" \
  --data-urlencode "format=srt" \
  --data-urlencode "raw=1"

HTTP/2 200
X-Cache: HIT
X-Credits-Charged: 0

1
00:00:00,000 --> 00:00:02,400
We the People of the United States…

Example output uses public-domain text.

Seven formatsText, timestamps, SRT, VTT, Markdown, JSON
Credits never expireBuy once, use them whenever
scripthaul.comBuilt on the free tool

The complete toolkit

Everything the API can do.

Find the right videos, fetch their transcripts, search a channel library and follow new uploads. Every capability is here, with its cost and a way to use it.

Find

Start with a question, a channel, a playlist or a list of links.

1 credit per delivered page

Search YouTube

Find videos, channels and playlists without knowing a URL. Video results show what is already cached.

  • GET /v1/search
  • Keyed MCP search_youtube
Read the docs

1 credit per delivered page

Search within a channel

Add a channel handle or ID to the same search. Continue through results one page at a time.

  • GET /v1/search
  • Keyed MCP search_youtube

Use q=your topic and channel=@TED.

Read the docs

0 credits

See the latest uploads

Read the newest 15 entries from a channel or playlist, with a ten-minute cache. Use a channel ID or an already-resolved handle.

  • GET /v1/channels/latest
  • Keyed + keyless MCP get_latest_videos
Read the docs

0 credits

Resolve a channel

Turn a handle or channel URL into a stable channel ID, title and uploads playlist.

  • GET /v1/channels/resolve
  • Keyed MCP resolve_channel
Read the docs

0 credits · cold enumeration allowance applies

List a channel or playlist

Inspect up to 500 videos per enumeration, including dates and cache flags, before deciding what to fetch.

  • GET /v1/videos
  • Keyed + keyless MCP list_videos
Read the docs

0 credits · cold enumeration allowance applies

Bring a pasted list

Validate YouTube links or IDs and get a reusable list key for enumeration and bulk jobs.

  • POST /v1/videos/resolve
Read the docs

Fetch

Get the words, the timestamps and an honest account of the language delivered.

1 credit per cold delivery · cache hits 0

Fetch one transcript

Request a video by URL or ID. A slow cold fetch returns a poll URL; a cached transcript is ready to read.

  • GET /v1/transcript
  • Keyed + keyless MCP get_transcript

Keyless MCP costs 0 credits within its small daily allowance.

Read the docs

0 extra credits for the format

Choose any of seven formats

Clean text, timestamped text, both together, SRT, VTT, Markdown or JSON. Use raw=1 for a file response.

  • GET /v1/transcript
  • Keyed + keyless MCP get_transcript
Read the docs

1 credit per cold delivery · refusals 0

Choose language and strict mode

See requested and delivered language, caption kind and translation verdict. With fallback=false, a strict refusal costs nothing.

  • GET /v1/transcript
  • Keyed MCP get_transcript

Available caption tracks are also listed by GET /v1/video.

Read the docs

300 credits per started 10,000 characters of transcript (at most 1,500), on top of the delivery credit

Get the language you asked for

When YouTube declines to translate the captions, add translate=true to a transcript request or a bulk job to receive the requested language anyway, labelled like any served translation. Later requests for it are cache hits.

  • GET /v1/transcript
  • POST /v1/jobs
  • Keyed MCP get_transcript
  • Keyed MCP create_bulk_job

Opt-in, in most languages. Nothing extra is charged when it cannot be delivered.

Read the docs

0 credits

Read known video facts

Get the title, channel, publish date, duration, available caption tracks and durable fetch outcome when known.

  • GET /v1/video
Read the docs

Deliver

Let durable jobs handle a whole channel, then collect the result in the form you need.

Creation 0 · each cold delivery 1 credit

Create a durable bulk job

Submit a channel, playlist or up to 500 video IDs. Jobs reserve cold work, settle successful deliveries and pause when credits run out.

  • POST /v1/jobs
  • Keyed MCP create_bulk_job
Read the docs

0 credits

Follow jobs and video rows

List account jobs, inspect progress and credit totals, or page through individual videos and failures.

  • GET /v1/jobs
  • GET /v1/jobs/{jobId}
  • GET /v1/jobs/{jobId}/videos
  • Keyed MCP get_job
Read the docs

0 credits

Read a download manifest

Get a machine-readable list of delivered files, language facts and integrity metadata.

  • GET /v1/jobs/{jobId}/manifest
Read the docs

0 credits

Download individual files

Retrieve a job video in the requested format, with account authorization on every file request.

  • GET /v1/jobs/{jobId}/files/{videoId}
Read the docs

0 credits

Collect a ZIP archive

Build a server-side archive in one or more formats. Large exports are split into bounded parts.

  • GET /v1/jobs/{jobId}/archive
Read the docs

0 credits

Stream job events

Follow progress as server-sent events and reconnect from the last event you received.

  • GET /v1/jobs/{jobId}/events
Read the docs

Actions 0 · a successful cold retry 1 credit

Retry or cancel work

Retry eligible failures or cancel unfinished work. Credits settle only for successful cold deliveries.

  • POST /v1/jobs/{jobId}/retry
  • POST /v1/jobs/{jobId}/cancel
Read the docs

0 credits

Receive signed webhooks

Configure, read, rotate or remove an endpoint for job completion, credit events and new monitored uploads.

  • GET /v1/webhooks
  • PUT /v1/webhooks
  • DELETE /v1/webhooks
Read the docs

0 credits

Open the free bulk tool

Ask an assistant for a prefilled channel or playlist download link on scripthaul.com.

  • Keyed + keyless MCP get_bulk_download_link
Read the docs

Know

Check what a channel library contains, search what was said and keep it current.

0 credits

Check library coverage

See known, indexed and missing videos plus the cold count. Use the suggested job to fill the gaps.

  • GET /v1/library
  • Keyed MCP get_library
Read the docs

0 credits · daily search allowance applies

Search transcript passages

Search a named channel or video with phrases and prefixes. Ranked passages include a link to the exact video timestamp.

  • GET /v1/library/search
  • Keyed MCP search_transcripts
Read the docs

Monitoring 0 · auto-fetch cold delivery 1 credit

Watch for new uploads

Monitor a channel or playlist through RSS. Optional auto-fetch creates ordinary jobs so new uploads enter the library.

  • POST /v1/monitors
  • Keyed MCP watch_channel

1 monitor free; 25 on paid accounts. Checks are at least 15 minutes apart.

Read the docs

0 credits

Manage your monitors

List watches, inspect the last check and new-video count, or cancel. Automatic fetching pauses for credits and resumes after a purchase.

  • GET /v1/monitors
  • GET /v1/monitors/{monitorId}
  • DELETE /v1/monitors/{monitorId}
  • Keyed MCP list_monitors
Read the docs

Connect

Use REST, an SDK or your assistant, with the account controls that make it practical.

0 credits to connect · endpoint costs apply

REST, SDKs and examples

Use the interactive OpenAPI reference, JavaScript and Python SDKs, or runnable curl, Node, Python, Go and n8n examples.

Runnable examples · n8n setup

Read the docs

0 credits to connect · tool costs apply

Connect an assistant with OAuth

Connect Claude, ChatGPT and other MCP clients with email-code consent, or use an API key. Revoke connected apps from the dashboard.

https://api.scripthaul.com/mcp
Try the keyless server: https://scripthaul.com/mcp

Read the docs

0 credits to install · tool costs apply

Install the agent skill

Give an assistant instructions for discovery, bulk work, timestamped library research and monitors.

/.well-known/agent-skills · MCP server card

Read the docs

0 credits

Sign in with an email code

Request and verify a sign-in code, then sign out when finished. Keep keys in a secret manager and send them only as Bearer headers.

  • POST /v1/auth/code
  • POST /v1/auth/verify
  • POST /v1/auth/logout
Read the docs

0 credits

Manage API keys

List or create keys, change names and daily credit caps, revoke keys or rotate with a 24-hour migration grace period.

  • GET /v1/keys
  • POST /v1/keys
  • POST /v1/keys/{keyId}
  • DELETE /v1/keys/{keyId}
  • POST /v1/keys/{keyId}/rotate
Read the docs

0 credits

Manage your account

Read balance and limits, manage dashboard webhook settings and connected apps, or close the account.

  • GET /v1/account
  • PUT /v1/account
  • DELETE /v1/account

Dashboard modes: resource=webhook, resource=connected_apps and resource=account.

Read the docs

0 credits

Audit usage and credits

Read usage rollups and the itemized ledger; export the ledger as CSV from the dashboard.

  • GET /v1/usage

Use resource=ledger for individual credit entries.

Read the docs

0 API credits · purchases are charged in USD

Buy credits and manage receipts

Open checkout, request an eligible refund, and visit the billing portal for receipts and invoices. Stripe sends signed payment events to the callback.

  • POST /v1/checkout
  • GET /v1/billing/portal
  • POST /v1/billing/stripe

Use action=refund on checkout for refund requests.

Read the docs

0 credits

Check service status

Read API status before starting work, or use a lightweight HEAD request from your uptime monitor.

  • GET /v1/status
  • HEAD /v1/status
Read the docs

From a question to a result

Try asking.

Connect your assistant, then ask in your own words. These examples show which tools do the work. Transcript fetches and YouTube search pages use the costs shown above.

Find a video about solar energy and get its transcript.

Keyed MCP · search_youtube → get_transcript

Resolve @TED and show its latest uploads.

Keyed MCP · resolve_channel → get_latest_videos

Give me the free bulk download link for https://www.youtube.com/@TED.

Keyless MCP · get_bulk_download_link

Fetch the missing TED transcripts, then find what they say about solar energy and cite the timestamps.

Keyed MCP · get_library → create_bulk_job → get_job → search_transcripts

Watch new TED uploads, fetch their captions automatically, and show my monitors.

Keyed MCP · resolve_channel → watch_channel → list_monitors

Choose your assistant and connect ↗

What you pay for

Delivery, not attempts.

Re-run a channel every week and pay only for new uploads.

0 credits

Cache hit

A transcript already in the shared permanent cache.

1 credit

Cold delivery

A transcript successfully delivered after a new fetch, including a labelled fallback.

1 credit

YouTube search page

One delivered page of YouTube or in-channel search results. Failed pages cost 0.

0 credits

Library search

Search indexed transcript passages within one named channel or video.

0 credits

Failure

No captions, unavailable, strict refusal, rate limit, outage, or budget pause.

0 credits

Everything around it

Listing, facts, jobs, files, manifests, status, account, usage, and webhooks.

Pay as you go

One-time. No subscription. Nothing expires.

Free allowance first. Purchased credits stay in a separate bucket forever.

Starter

3,000 credits

$5

$1.67 per 1,000

Builder

14,000 credits

$20

$1.43 per 1,000

Team

40,000 credits

$50

$1.25 per 1,000

Scale

200,000 credits

$200

$1.00 per 1,000

Large

1,250,000 credits

$1,000

$0.80 per 1,000

ScriptHaul$14.30transcriptapi.com$27.50

The ScriptHaul figure is what that many credits cost at the block rate for that volume; checkout sells whole blocks, and unused credits stay banked. Every transcript is counted as a cold fetch, and cache hits cost nothing, so real bills are usually lower. The transcriptapi.com figure is its published $5/month plan with 1,000 credits plus $2.50 per 1,000 in monthly top-ups, checked 2026-09-06 on its pricing page. Method and caveats.

Never expires

Credits wait for the work.

Purchased means banked

There is no subscription to maintain and no clock on paid credits.

Free refills monthly

The free allowance resets to 100 on the first of each month (UTC) and does not accumulate.

No lapse penalty

There is no plan to cancel, so nothing can lapse and lock you out of credits you paid for.

Honest languages, honest failures

See what arrived, not what was hoped for.

Every transcript labels the requested language, delivered language, caption kind, fallback, and translation verdict.

"language": {
  "requested": "es",
  "delivered": "en",
  "kind": "manual",
  "fallback": true,
  "translation": "refused"
}

A refused translation with fallback enabled is still useful and clearly labelled. It costs 1 only when delivered cold.

Strict mode

fallback=false

If the requested language cannot be delivered, ScriptHaul returns a retryable typed error instead of silently substituting. No transcript delivered means 0 credits charged.

Read the language matrix

Seven formats

One cached object, the shape you need.

Examples use public-domain text, not a customer transcript.

[{"start":0,"duration":2.4,"text":"We the People of the United States"}]

Agents and MCP

Try keyless. Build keyed.

The keyless server on scripthaul.com is for trying the tools in an assistant, with a small daily allowance. The keyed server on this host uses your account's credits, limits, and durable jobs.

Keyless

https://scripthaul.com/mcp

A small allowance for trying transcript tools in an assistant.

Keyed

https://api.scripthaul.com/mcp

OAuth or an API key, with the same account credits and limits as REST.

Compare the contract

See the whole offering.

Discovery and assistant connections are a starting point. Compare how each API handles transcript libraries, ongoing work and the cost of reading again.

ScriptHaul API, transcriptapi.com and Supadata, checked 2026-09-06
CapabilityScriptHaul APItranscriptapi.comSupadata
YouTube search1 credit per delivered page [docs]1 credit/page [source]1 credit/page [source]
In-channel search1 credit per delivered page [docs]1 credit/page [source]No channel-scoped filter documented [source] [2]
Latest uploads0 credits; newest 15 RSS entries [docs]Free RSS; latest 15; active credit required [source]Latest-first channel IDs: 1 credit/request [source]
Transcript search0 credits; passages scoped to one channel or video, with timestamp links [docs]Not offered in the documented API [source] [2]Not offered in the documented API [source] [2]
Managed monitors1 free or 25 paid; RSS checks with optional automatic transcript jobs [docs]Not offered; poll latest uploads yourself [source] [2]Not offered in the documented API [source] [2]
OAuth connectorsYes; revocable MCP connections [docs]Yes [source]Yes [source]
Agent skillOne-command install; public MIT skill [docs]One-command install [source]One-command install [source]
FormatsSeven: clean, timestamped, both, SRT, VTT, Markdown, JSON [docs]JSON or text; Markdown through MCP [source] [2]JSON with text or timestamped chunks [source]
Durable bulk jobsUp to 500 videos per durable job; progress, retries and credit pause/resume [docs]Not offered; agent skill loops over videos [source] [2]Paid batch jobs, up to 5,000; 1 credit to start + 1/transcript [source] [2]
Delivery webhooksSigned job, credit and monitor events [docs]Not offered in the documented API [source] [2]Not offered in the documented API [source] [2]
Server ZIP archivesServer-built ZIPs, split into bounded parts [docs]Not offered in the documented API [source] [2]Not offered in the documented API [source] [2]
Cached transcript0 credits [docs]1 credit [source]Cache discount unspecified; native transcript: 1 credit [source] [2]
Credit expiryPurchased credits never expire; free credits reset monthly [docs]Top-ups: later of 30 days or subscription end; active subscription required [source] [2]Monthly credits do not roll over; recharge expiry unspecified [source]

Competitor contracts and prices verified against the linked first-party pages on 2026-09-06. “Not offered” means absent from the cited published API and MCP inventory; it does not rule out a private or unannounced feature. Undocumented cache discounts and recharge expiry are identified as unspecified.

Get a key

Email, code, done.

The key is shown once. Keep it in a secret manager and send it only in the Bearer header.

Start free

100 monthly credits.

FAQ

Before you wire it in.

Do I need an account?

Yes: a verified email holds your keys, balance, receipts, and recovery path. There is no password.

Do credits expire?

Purchased credits never expire. The free allowance resets to 100 each UTC month and does not accumulate.

What costs one credit?

A successfully delivered transcript that was not cached, or a delivered page of YouTube search results. A labelled cold fallback is a transcript delivery. Transcript cache hits, failed requests and library searches cost zero.

What if captions are missing?

You receive a typed NoCaptions error and pay zero credits.

How do languages work?

The response always identifies requested and delivered language, manual or ASR kind, fallback, and translation served/refused state. Strict mode refuses substitution.

How fast is it?

Cache hits return immediately. A cold fetch takes a few seconds; if it needs longer than 25 seconds you get a poll URL instead of waiting on the connection.

How large can a job be?

A free account may run one active job of up to 100 videos. A paid account may run five active jobs of up to 500 videos each.

Do you download video or audio?

No. Never. ScriptHaul handles public caption tracks and does not offer media download.

Is there an SLA?

No SLA at launch. Failed deliveries are not charged, and credits wait rather than expiring.

Can I get a refund?

Unused purchased blocks are eligible within 14 days, subject to the plain rules on the refunds page. Outage and cessation credits are defined there too.

Can I build a commercial product?

You are responsible for determining whether your commercial use, storage, or redistribution of each transcript is permitted. ScriptHaul grants no rights in source captions.

Is ScriptHaul affiliated with YouTube?

No. ScriptHaul is not affiliated with or endorsed by YouTube or Google.

How long is data kept?

Retention varies: request events 90 days, usage rollups 24 months, financial records 7 years, archives 7 days, and shared transcript cache objects may remain indefinitely independent of customer identity.