Tutorial · curl
How to scrape YouTube transcripts with curl (2026)
A curl walkthrough for GET /v1/youtube/videos/transcript. Copy the snippet, run it, then read the JSON.
GET /v1/youtube/videos/transcript · 1 credit per successful request.
In this tutorial
You'll pull a YouTube transcript from a public video URL and see the text you get back.
Example job: turn a public YouTube video into text for search or alerts.
Step 1
Get ready
You need a Social Fetch API key and a working curl environment. New accounts include 100 free credits.
API key. Create a Social Fetch account and copy an API key. New accounts include 100 free credits.
curl setup. Any shell with curl. Export SOCIALFETCH_API_KEY before you run the sample.
When you're done, SOCIALFETCH_API_KEY is set in your shell.
Step 2
Make the request
Copy the curl snippet, keep SOCIALFETCH_API_KEY in the environment, and send GET /v1/youtube/videos/transcript with the x-api-key header. Example path: /v1/youtube/videos/transcript?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ. The sample uses public values for transcripts.
You should see a JSON body on stdout. Use curl -sS so HTTP errors still print on stderr.
Step 3
Read the response
A JSON body with data (the transcripts) and meta (creditsCharged, requestId). The sample below is illustrative; field-level docs live on the endpoint page. Credits charge on completed lookups, not transport failures.
Branch on data.lookupStatus when present, then keep meta.requestId if a row looks wrong.
Watch out
unlike TikTok transcripts, there is no useAiFallback on this route. Missing captions means not_found, not an automatic STT path. Do not discard segments if you later need timed citations — plainText alone will not reconstruct startMs.
Step 4
You finished
Same path and credits in playground, docs, and production. Pick a next action below.
FAQ
Common questions
Do I need an official YouTube developer account?
No. Social Fetch authenticates with your Social Fetch API key. You call GET /v1/youtube/videos/transcript and we handle upstream access. You still need to follow each platform's terms for how you use public data.
What does the youtube transcripts endpoint return?
A JSON envelope with data (the transcripts) and meta (creditsCharged, requestId). Shape details and field docs live on the endpoint page and in the OpenAPI docs.
Should I use plainText or segments from a YouTube transcript?
Use plainText when you need one string for embeddings or full-text search. Use segments when you need timed lines (text, startMs, endMs) for citations or a scrubber UI. Both arrive under data.transcript on a found lookup.
Does YouTube transcript lookup run speech-to-text when captions are missing?
No. This route returns caption tracks when they exist. not_found means no track was available — it does not invent speech text. Watch links, youtu.be, and Shorts URLs are all accepted formats.
How much does a successful request cost?
1 credit per successful request.
Is this okay for production?
Yes. Same production API as the rest of Social Fetch: typed errors, requestId on every response, and credit charges only on completed lookups (not infrastructure failures). New accounts get 100 free credits.
Any curl-specific tips for this request?
Yes. Pass the key with -H "x-api-key: $SOCIALFETCH_API_KEY", and wrap the full URL in double quotes so the shell does not split on & in query strings. Prefer curl -sS so HTTP errors still surface on stderr.
Related