AI transcription
Transcript endpoints return the platform's own captions when the media has them. When it does not, SocialScrape can transcribe the audio for you, so a transcript request does not dead-end on "no captions".
How it works#
- We look for captions first. If we find them, you get them:
sourceiscaptionsorauto_captionsand the price is 1 credit. - If there are none, we transcribe the audio on our own GPUs and return the text with
source: "ai", alanguage, and timedsegments.
{
"object": "transcript",
"platform": "youtube",
"video_id": "dQw4w9WgXcQ",
"language": "en",
"source": "ai",
"duration_seconds": 213.0,
"text": "...",
"segments": [ { "start": 0.0, "end": 4.0, "text": "..." } ]
}Always check source if the difference between captions and machine transcription matters to you.
What it costs#
Captions cost 1 credit. AI transcription costs 1 credit for up to 2 minutes of audio, then 1 more credit for each started minute after that. You pay only when the transcript is delivered; a failed transcription is free.
| Audio length | Credits |
|---|---|
| Captions (any length) | 1 |
| 30 seconds | 1 |
| 2 minutes | 1 |
| 2 minutes 1 second | 2 |
| 3 minutes | 2 |
| 10 minutes | 9 |
| 30 minutes | 29 |
| 1 hour | 59 |
| 2 hours | 119 |
Cached repeats are free like any request, so fetching a transcript you already paid for again with max_age_days costs nothing.
Turn it off#
These transcript endpoints take ai_fallback=false: Kick clip transcript, TikTok video transcript, Twitch clip transcript. With it, the endpoint returns nothing instead of transcribing, and charges nothing. ScrapeCreators' use_ai_as_fallback is accepted as the same parameter.
Time and long media#
Short clips finish within the normal request time. Long media can take minutes. A request still running after about 25 seconds answers 202 with a job to poll; see Batch and jobs. Poll rather than holding a connection open.
Our own transcription capacity is shared and limited, by design:
- If the lane is busy or the daily allowance for your team is used up, the request fails with
overloaded(retryable, free). Retry with backoff. - Media longer than about 4 hours is refused with
transcript_unavailable. transcript_unavailablealso covers media with no speech or no audio track.
Any URL#
Transcript from any video URL takes a video URL from any supported platform, picks the right endpoint and returns the same result at the same price and from the same cache.
curl -G "https://api.socialscrape.io/v1/transcript" \
-H "x-api-key: $SOCIALSCRAPE_API_KEY" \
--data-urlencode "url=https://www.youtube.com/watch?v=dQw4w9WgXcQ"Endpoints that return transcripts#
- YouTube video transcript (
GET /v1/youtube/video/transcript) - TikTok video transcript (
GET /v1/tiktok/video/transcript) - Instagram reel transcript (
GET /v1/instagram/post/transcript) - Twitch clip transcript (
GET /v1/twitch/clip/transcript) - Kick clip transcript (
GET /v1/kick/clip/transcript) - Facebook Ad Library ad transcript (
GET /v1/facebook/ad-library/ad/transcript) - X video transcript (
GET /v1/twitter/tweet/transcript) - Facebook video transcript (
GET /v1/facebook/post/transcript) - LinkedIn post video transcript (
GET /v1/linkedin/post/transcript) - Rumble video transcript (
GET /v1/rumble/video/transcript) - Transcript from any video URL (
GET /v1/transcript)