Reddit doesn't caption or transcribe its own video. Send a Reddit post or v.redd.it URL and FrameFetch resolves the DASH stream, transcribes the audio with Whisper, and returns metadata, frames, and on-screen text — one URL, one JSON response. (Comments and audience sentiment are YouTube-only — see below.)
A post on r/videos with an embedded clip isn't serving a single .mp4. Reddit's own video host, v.redd.it, publishes a DASH manifest with a video-only representation (often several resolutions) and a separate audio-only representation — the two tracks are muxed together only at playback time, by the player. There is no caption track anywhere in that manifest, and Reddit doesn't run any speech-to-text over the audio on its side. If you fetch the raw post JSON yourself, the video's audio is effectively invisible unless you go pull the DASH_audio representation directly and decode it.
YouTube has captions most of the time, so "get a YouTube transcript" is a crowded, well-documented problem. Reddit video transcription is not: there's no captions API to wrap, so most tools that claim to handle Reddit only extract the raw video/audio file and stop there — the caller still has to run their own Whisper pass, or skip transcription entirely. FrameFetch does that last step for you as part of the same call you'd use for metadata or frames.
FrameFetch downloads the post's video with yt-dlp, which understands the v.redd.it DASH manifest and resolves the separate video and audio representations into one file. From there Reddit is treated exactly like any other caption-less platform: the audio is extracted and sent to Whisper for transcription. The response's transcript.source always reads "whisper" for Reddit — there's no captions branch to prefer, because Reddit never offers one.
curl -X POST https://framefetch.net/v1/extract \
-H "Authorization: Bearer <your-key>" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.reddit.com/r/videos/comments/1abcxyz/a_short_clip/",
"fields": ["metadata", "transcript"]
}'Shape of the response (field names match the schema exactly; content below is illustrative, not a captured call):
{
"platform": "reddit",
"metadata": {
"title": "A short clip",
"uploader": "u/some_redditor",
"durationSec": 14,
"uploadDate": "2026-06-02",
"thumbnail": "https://external-preview.redd.it/....jpg"
},
"transcript": {
"text": "...",
"source": "whisper",
"lang": "en",
"segments": [ { "start": 0, "end": 3.2, "text": "..." } ]
},
"cost": { "totalMicros": 21000 },
"warnings": []
}Get a key with POST /v1/keys (free credit). Full reference in the docs. Agents can pay per call with x402 (USDC) — no account.
FrameFetch reaches Reddit the same way an anonymous, logged-out browser tab does — it never signs in as a Reddit user and never bypasses an interstitial. That draws a hard line around what a call can reach:
| Situation | What happens |
|---|---|
| Private or banned subreddit | The post JSON isn't publicly reachable; the call fails to extract (no charge) |
| Deleted or removed post | Same — nothing to fetch, extraction fails, no charge |
| NSFW / quarantined content behind an interstitial | Works when it's reachable without a login; fails the same way if Reddit gates it behind account verification |
| Crosspost pointing off-Reddit (e.g. an embedded YouTube link) | Not supported — send the underlying platform's own URL instead (only reddit.com / redd.it hosts are accepted) |
| Image-only or gallery post | No video stream to extract — transcript/frames fail; metadata still works |
None of this is Reddit-specific special-casing on FrameFetch's side — it's the same "can an anonymous request reach it" rule every platform gets. Failures never surface as a mysterious hang: they come back as a typed error (500 EXTRACTION_FAILED) or, for a field that degrades gracefully, a plain-English string in the response's warnings array.
Reddit used to be one of two platforms FrameFetch supported for comments (the other is YouTube), reading the thread's public JSON endpoint directly — no proxy needed. Reddit deprecated unauthenticated access to that endpoint on 2026-05-28: every variant now returns a hard 403 regardless of proxy, user-agent, or using old.reddit.com, and there's no supported alternative in the current architecture. Requesting "comments" or "comment_sentiment" on a Reddit URL now degrades with a warning and is never billed, the same as on TikTok, Instagram, or Pinterest — check GET /v1/platforms before requesting it. Metadata, transcript, frames, and text_overlay on Reddit are all unaffected. Comment sentiment is still a real, working feature on YouTube.
Add "frames" for parametrically-sampled stills (every Nth frame, a fixed fps, or a [from,to] range, at any width from 16–7680px), and "text_overlay" alongside it to run OCR — useful for burned-in captions, on-screen labels, or watermark text a spoken-word transcript would miss.
curl -X POST https://framefetch.net/v1/extract \
-H "Authorization: Bearer <your-key>" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.reddit.com/r/videos/comments/1abcxyz/a_short_clip/",
"fields": ["frames", "text_overlay"],
"frames": { "mode": "fps", "fps": 1, "width": 480 }
}'FrameFetch ships an MCP server at POST https://framefetch.net/mcp with the tools framefetch_extract and framefetch_platform_capabilities — point your agent at a Reddit URL directly. See the MCP setup guide for a working Claude Desktop / Cursor config.
No. Reddit-hosted video (v.redd.it) ships as a silent DASH video track plus a separate DASH audio track, with no caption track and no built-in speech-to-text. Almost nothing indexes Reddit video text as a result — it's one of the thinnest corners of the video-data-API space.
FrameFetch downloads the post's video with yt-dlp, which resolves the DASH manifest (merging the separate video and audio representations Reddit serves) into one file, extracts the audio, and transcribes it with Whisper — the same fallback path used for TikTok and Instagram, which also don't expose reliable captions.
FrameFetch never authenticates as a Reddit user or bypasses an age/content gate — it only reaches what an anonymous, logged-out request can see. A private subreddit, a deleted or removed post, or content Reddit blocks from anonymous access fails the same way any inaccessible URL does: no charge, and either a warning on the specific field or a 500 EXTRACTION_FAILED on the whole call.
No, not anymore. Reddit used to be supported (its public thread JSON endpoint, no proxy needed) alongside YouTube, but Reddit deprecated unauthenticated access to that endpoint on 2026-05-28 — every request now returns a 403 regardless of proxy or user-agent. Requesting comments or comment_sentiment on a Reddit URL now degrades with a warning and is never charged, the same as on TikTok, Instagram, or Pinterest. Metadata, transcript, frames, and text_overlay are all unaffected.
Yes — add text_overlay alongside frames to run OCR on each extracted frame and get back on-screen text, per-line confidence, and bounding boxes.