Skip to main content
POST
YouTube Transcripts
Send ids as an array of 1–100 bare eleven-character YouTube video IDs. Full watch URLs are rejected. Rows stay in input order. Use format=text (default) for joined caption text, or format=segments for start_ms, duration_ms and text on every segment. An optional language chooses a caption track; the returned language retains the provider’s track name when known. The source is the existing ScrapeCreators transcript API. Video identity and segment timings are checked before a row can succeed. Missing captions and unavailable videos are distinguished only when the source explicitly reports them. A source failure is error, not an invented empty transcript. Billing reserves 3 credits × number of input IDs and settles at 3 credits per successful row. not_found, error and deferred rows cost zero. For two IDs, send X-Max-Credits: 6. Duplicate input IDs are separate requested rows. The batch is not response-cached; repeat the same Idempotency-Key to replay a result without further work or charges. At most four source calls run concurrently. Calls have a twelve-second timeout; no new work starts after the batch’s twenty-eight-second scheduling budget. Remaining rows are returned as deferred and unbilled. Retry only those IDs in a new batch with a new idempotency key. Provider quota/authentication failures stop new source work. Large batches are not guaranteed to finish in one request. This release supports JSON responses. SSE requests return 422 before billing. Through MCP use execute_endpoint; through the Python skill supply --allow-mutation, an idempotency key and the full batch credit cap.

Authorizations

x-api-key
string
header
required

Headers

Cache-Control
string
Idempotency-Key
string
X-Max-Credits
integer

Optional nonnegative integer cap on the maximum request hold. A live request whose hold exceeds this cap returns 422 CREDIT_BUDGET_EXCEEDED before spending. Metered holds use the requested limit; cache hits and successful idempotent replays cost zero.

Required range: x >= 0

Body

application/json
ids
string[]
required
Required array length: 1 - 100 elements
Pattern: ^[A-Za-z0-9_-]{11}$
Example:
language
string
Pattern: ^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$
Example:

"en"

format
enum<string>
default:text
Available options:
text,
segments

Response

Fetch public captions for 1–100 bare YouTube video IDs in input order. Each row is ok, not_found, error or deferred. Reserve three credits per input row and refund every unsuccessful row. format=text joins source segments; format=segments preserves millisecond offsets and durations. language is the source-reported track name or null. JSON only; SSE is not implemented. Work that cannot start within the execution budget is deferred and unbilled. Retrying a batch with the same idempotency key replays it without new source work.

success
boolean
required
platform
string
required
endpoint
string
required
credits_used
integer
required
Required range: x >= 0
credits_remaining
integer | null
required
request_id
string
required
cached
boolean
required
data
object
required

The selected operation determines the resource fields in this object. Source data can omit a metric or report it as null.