FrameFetch
For agents → Try it free
6 platforms · 1 schema

Paste a video link.
Get back the data.

One API call turns any social-video URL into metadata, a transcript, sampled frames, and the on-screen text burned into them. Built agent-first — REST, MCP, OpenAPI — a fraction of a cent per call.

Start free — 100 calls/month See pricing

No card · no subscription · EU-hosted · works with Claude (MCP), Cursor, n8n & any HTTP client

Live — no signup standby

Paste any video, or run one of these: a TikTok · 99 s · 3Blue1Brown · 8 min

🔒 Structured with API key
3 chapters · 2 entities · 1 product
Sample output — chapters, entities, products shown, claims & key moments as typed JSON.
🔒 Audio digest with API key
🔊 38s spoken summary
Sample output — the digest gist synthesized to speech, 6 voices to choose from.
🔒 Comment sentiment with API key
74% positive · 4 themes
Sample output — aggregated audience mood across up to 100 comments.
🔒 Ask with API key
"high" confidence · 1 quote
Sample output — ask a direct question, get a grounded answer with timestamped quotes instead of the full transcript.

One free demo per visitor — metadata, insights, a transcript preview & digest. Frames, the full transcript, on-screen text and more need a free API key — get yours in 30 seconds.

FREE TIER
100
free calls, every month
RESPONSE
metadata ✓ 🔒 frames 🔒 transcript 🔒 overlay
Unlock all with a free key →

One response, four kinds of data

Metadata
Title, author, duration, date
Always included. Sub-cent, no download required.
Transcript
Captions, or Whisper when there are none
Works on TikTok and Reddit too, not just YouTube.
Frames
Every / every-Nth / 1-per-sec / a time range
Any size, jpg/png/webp, up to 1000 per call.
Text overlay new
On-screen text via OCR, per frame
Burned-in captions, price tags, signage — with confidence + position.

Answers, not dumps new

A raw transcript can run thousands of tokens — expensive to move through an agent's context window, and the agent still has to do the reading. Add a top-level "ask" question to the same call you'd already make for a transcript, and get a short, grounded answer back instead — with timestamped quotes lifted straight from the transcript.

curl -X POST https://framefetch.net/v1/extract \
  -H "Authorization: Bearer <your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
    "ask": "What animal does the narrator point out?"
  }'

// response (trimmed)
{
  "ask": {
    "answer": "The narrator points out the elephants and their very long trunks.",
    "quotes": [ { "t_sec": 4, "text": "they have really really really long trunks" } ],
    "confidence": "high",
    "based_on": ["transcript"]
  },
  "cost": { "totalMicros": 7500 }
}

Flat $0.0075 per call, charged only when an answer is produced — never served from the cache, so a second question about the same video always gets a genuinely fresh answer. Works over REST and MCP (framefetch_extract's ask argument) on any platform FrameFetch can transcribe. Full docs, pricing & FAQ →

Example response

A frames + text_overlay call against a real video, trimmed for readability:

// POST /v1/extract — fields: ["frames","text_overlay"]
{
  "platform": "youtube",
  "frames": [
    { "index": 12, "url": "https://…/frame_00012.jpg", "tSec": 4 }
  ],
  "textOverlay": [
    {
      "index": 12,
      "text": "INSPIRATIONAL HOLIDAY VIDEO",
      "lines": [
        { "text": "INSPIRATIONAL", "confidence": 0.96, "bbox": [74, 144, 702, 63] },
        { "text": "HOLIDAY VIDEO", "confidence": 0.96, "bbox": [73, 226, 710, 64] }
      ]
    }
  ],
  "cost": { "totalMicros": 4290 }
}

Real output, one frame shown — full example in the docs.

More ways to call new

Search new
Find YouTube videos by keyword — POST /v1/search
No URL yet? Up to 25 results, flat $0.002/call. Feed a hit's url straight into /v1/extract.
Batch
Up to 10 URLs in one POST /v1/batch
One result per URL, per-item billing — a single bad URL never fails the batch.
Digest
A short LLM gist + topics from the transcript
Ask for fields: ["digest"] instead of parsing the full transcript.
Video delta
View / like / comment velocity vs your last fetch
fields: ["delta"] — plus title & thumbnail-change flags.
Markdown
Add ?format=md for clean Markdown
On any extract call. JSON stays the default.
Channel monitor
Webhook on every new upload — POST /v1/watch
Subscribe to a creator; we POST you a new_video event. No polling.
Video pages
A shareable /v/<id> SEO page per video
Opt in with publish: true — public metadata + a fair-use excerpt.
Translate + subtitles
25 languages, plus ready-to-save SRT/VTT
Top-level translate (ISO-639-1) adds transcript_translated; ?format=srt|vtt exports timed subtitles.
Audio digest
A spoken mp3 briefing, 6 voices
fields: ["audio_digest"] — combine with translate for a foreign-language briefing.
Structured video understanding
Chapters, entities, products shown, claims, key moments
fields: ["structured"] — a vision LLM reads the transcript + sampled keyframes, no file upload.
Comments & sentiment
Top-level comments + aggregated audience mood
fields: ["comments", "comment_sentiment"] — YouTube, up to comments_cap comments.

Full request and response examples in the docs.

Watch it happen

The same call, in real time — metadata, transcript, frames, and on-screen text arriving in one response.

Built for both

For people

Evaluate it in five minutes

Paste a link above and watch the response come back. No signup for a first look, a free key for the full response, transparent per-call pricing with no subscription.

  • 100 free calls every month, top up by card or USDC
  • Every response includes an exact cost breakdown
  • Guided examples for common use cases

Get your free API key →

For agents

Drop it into your stack

REST, MCP over Streamable HTTP, and a full OpenAPI 3.1 spec. Typed errors so a failed call is self-correcting, not a dead end.

  • POST /mcpframefetch_extract, framefetch_search, framefetch_platform_capabilities, framefetch_account
  • POST /v1/batch · POST /v1/watch — batch extract + channel webhooks on new videos
  • GET /v1/account · GET /v1/usage — balance, spend, and usage history, read-only
  • Pay per call with x402 (USDC) — no account, no human in the loop
  • OpenAPI spec · llms.txt

Pricing

WhatUnitPrice
Metadata + insightsper call$0.00015
Transcriptper audio-minute$0.0015
Framesper frame$0.00012
Text overlay (OCR)per frame$0.000225
Ask newper call$0.0075
Search newper call$0.002

No subscription. $0.002 minimum per call. 100 free calls every month. Full rate card →

FAQ

What does FrameFetch do?

Send one social-video URL; get metadata, insights, transcript, parametric frames, and on-screen text as a single JSON response. Six platforms, one schema.

What is text_overlay?

OCR on each extracted frame — burned-in captions, price tags, signage — with per-line confidence and a bounding box. Requires the frames field and is billed per frame.

Can I ask a question about a video instead of parsing the transcript?

Yes. Pass a top-level ask param (a 3–500 character question) to /v1/extract or /v1/batch and get back ask: { answer, quotes, confidence, based_on } — a short answer grounded in the transcript, with timestamped quotes. Flat $0.0075 per call, never cached — see Ask docs.

I don't have a video URL yet — can I search by keyword?

Yes. POST /v1/search with { query, limit? } returns up to 25 YouTube results (url, title, uploader, durationSec, thumbnail, views) — no login, no download. uploadDate is in the shape but is null in practice. Flat $0.002 per call regardless of limit. Take a result's url into /v1/extract — see Search docs.

Can I get notified when a channel posts a new video?

Yes. POST /v1/watch with a channel URL and a webhook_url, and FrameFetch POSTs you a new_video event for each new upload — no polling. List with GET /v1/watch, remove with DELETE /v1/watch/:id. Up to 50 subscriptions per account.

Can an AI agent pay without an account?

Yes — via x402, an agent pays per call with USDC, no signup or human needed. Humans can use the free tier, prepaid credits, or a Stripe card.

How much does it cost?

Pay per call: metadata sub-cent, transcript per minute, frames and text overlay per frame. 100 free calls every month on the free tier. See pricing.

Which platforms are supported?

YouTube, YouTube Shorts, TikTok, Instagram Reels, Pinterest, and Reddit.

Is there an MCP server?

Yes, Streamable HTTP at /mcp with framefetch_extract, framefetch_search, framefetch_platform_capabilities, and framefetch_account.