Labsco
MarvinRey7879 logo

FrameFetch

from MarvinRey7879

One social-video URL in β†’ metadata, transcript (captions or Whisper), engagement insights, and parametric frames out. 6 platforms (YouTube, Shorts, TikTok, Instagram, Pinterest, Reddit). REST + MCP. Pay per call with x402 (USDC), no account.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedAccount requiredNeeds API keys

FrameFetch logo

FrameFetch

Any social-video URL β†’ metadata, transcript, insights, frames & on-screen text (OCR).
Agent-first video data API + MCP server. Pay per call, or with x402 (USDC) β€” no account.


FrameFetch turns one YouTube, YouTube Shorts, TikTok, Instagram Reels, Pinterest, or Reddit video URL into a single JSON response: metadata, engagement insights, a transcript (captions or Whisper), parametrically-sampled frames (every Nth / 1-per-second / a time range, at any width), and the on-screen text burned into those frames (OCR β€” captions, price tags, signage). Built API-first and MCP-first for AI agents.

This repo is the open-source client + docs. The service itself runs at framefetch.net β€” you bring a free API key (or pay per call with x402); the backend stays hosted.

Why

An LLM can't watch a video. To reason about one it needs the video turned into text and images first β€” a transcript, metadata, and a few frames. FrameFetch returns all three from a URL, across six platforms, through one schema.

Use it from an MCP agent

FrameFetch ships an MCP server (Streamable HTTP) with the tools framefetch_extract and framefetch_platform_capabilities. Add it to Claude, Cursor, or any MCP client:

{
  "mcpServers": {
    "framefetch": {
      "url": "https://framefetch.net/mcp",
      "headers": { "Authorization": "<YOUR_FRAMEFETCH_KEY>" }
    }
  }
}

Or one line:

claude mcp add --transport http framefetch https://framefetch.net/mcp \
  --header "Authorization: <YOUR_FRAMEFETCH_KEY>"

Local stdio bridge

Prefer a local stdio server (Claude Desktop, sandboxes, no inbound HTTP)? This package ships framefetch-mcp, a zero-dependency stdio↔HTTP bridge that exposes the same tools and forwards calls to framefetch.net:

{
  "mcpServers": {
    "framefetch": {
      "command": "npx",
      "args": ["-y", "framefetch-mcp"],
      "env": { "FRAMEFETCH_API_KEY": "<YOUR_FRAMEFETCH_KEY>" }
    }
  }
}

tools/list works with no key; tool calls use FRAMEFETCH_API_KEY (or x402). Override the endpoint with FRAMEFETCH_MCP_URL.

Pay without an account (x402)

Autonomous agents can pay per call in USDC via x402 on Base β€” no signup, no human in the loop. Discoverable in the x402 Bazaar and at /.well-known/x402.json. Humans can use a free tier, prepaid credits, or a Stripe card.

Errors

import { FrameFetchError } from 'framefetch';
try {
  await ff.transcript(url);
} catch (e) {
  if (e instanceof FrameFetchError && e.status === 402) {
    // out of credit β€” top up at framefetch.net or via x402
  }
}

API surface

MethodEndpointAuth
extract({ url, fields, frames })POST /v1/extractkey
metadata(url)POST /v1/metadatakey
transcript(url)POST /v1/transcriptkey
frames(url, spec)POST /v1/frameskey
platforms()GET /v1/platformsβ€”
status()GET /v1/statusβ€”
demo(url)POST /v1/demoβ€”
createKey(email)POST /v1/keysβ€”

Full OpenAPI: framefetch.net/openapi.json Β· Docs: framefetch.net/docs

Website Β· Docs Β· Pricing Β· Status Β· Guide: giving an agent video data Β· Compare vs alternatives