Skim vs the alternatives

A factual, side-by-side comparison of the major reader APIs for AI agents. No trash talk — just what each one is, what it costs, and what it's best at.

Last updated July 2026. If anything here is wrong, please tell us — we'll fix it.

Senior LLMs delegate.

Which reader API should an AI agent use?

For an autonomous agent that reads URLs on demand, Skim is usually the best fit: it is the only option here that is agent-native — pay $0.002 per successful read in USDC over HTTP 402, with no signup and no API key — and it refunds failed reads automatically. Choose Firecrawl for scheduled full-site crawls, Jina Reader for a generous free tier on low-volume reads, xAI Live Search when you need web search bundled with Grok, and self-hosted Crawl4AI at very high volume where per-call pricing stops penciling out.

CapabilitySkimJina ReaderFirecrawlxAI Live SearchSelf-hosted (Crawl4AI)
Pricing modelPer call ($0.002)Free + paid API tierMonthly subscription ( 9+)Bundled with Grok APIYour compute only
Payment railUSDC on Base (x402)Credit cardCredit card subscriptionCredit card subscriptionN/A
Signup / account required
API key
Account
xAI account
Self-managed
Agent-native (HTTP 402)
MCP server
Official
Official
Clean markdown output
Search results
DIY
Word-safe link/image stripping
Links + images, keeps words
Images only
Images only
Search results
DIY
Structured extraction (JSON schema)
/v1/extract — $0.015
DIY
Multi-page crawl
Batch reads (up to 10 URLs)
Limited
PDF support
DIY
JS rendering
/v1/read/js
via Playwright
SSRF protection
Built-in
Unclear
Unclear
DIY
Speed (typical read)Sub-second2–8 seconds1–3 seconds3–10 secondsYour infra
Vendor lock-inNone — open protocolAPI key + accountAccount + subscriptionxAI ecosystemNone
Refund on failure
Auto, never settled
Credit pool
Bundled
N/A
Supported Partial / caveats apply Not supported

Want the head-to-head detail?

Deep-dive pages for the most common one-on-one questions, same honest tone:

What would your setup cost with Skim?

Plug in your monthly read volume and the model doing your HTML cleanup today — the savings calculator shows the math, with every assumption on the page.

Open the savings calculator →

Real benchmarks

Speed claims are easy to make. These are end-to-end HTTP timings measured from a single client machine: Skim runs as a local unpaywalled instance (extraction path only, no x402 settlement on the wire), Jina is called against its public endpoint. Median of 3 timed runs after a warm-up. Lower is better.

Basic mode — Skim /v1/read vs Jina (default)

URLSkim (ms)Jina (ms)Skim vs Jina
GitHub README (raw)411884.6x faster
Personal blog (patrickcollison.com/fast)831521.8x faster
Long-form essay (paulgraham.com/greatwork)2112841.3x faster
Wikipedia article (HTTP_402)4223171.3x slower
PDF (Bitcoin whitepaper)9211815.1x slower

Skim is faster on every fresh-extraction URL in this sample. The two cases Jina wins — the Wikipedia article and the Bitcoin PDF — are both popular URLs that Jina almost certainly serves from its edge cache (sub-300ms turnaround on a multi-megabyte PDF is not a parse, it's a hit). Skim now ships a short-TTL response cache (60s default, configurable) so repeat reads of hot URLs return in <5ms server time too — the cache hit / miss is exposed via the X-Cache response header. For long-tail agent workloads, fresh extraction remains the typical case, and that's where the numbers above apply.

JS rendering — Skim /v1/read/js vs Jina X-Engine: browser

URLSkim JS (ms)Jina JS (ms)Skim vs Jina
Supabase marketing43222925.3x faster
React docs (react.dev/learn)439Jina free-tier rate-limit
Vercel marketing510Jina free-tier rate-limit
Notion product page5432801.9x slower

Skim's JS rendering (powered by Cloudflare Browser Rendering) finished in 430–550ms on all four targets in this sample. Jina's free-tier browser endpoint (no API key) rate-limited us on two of them — a paid Jina key would presumably lift that limit, but the free tier is the experience an evaluating developer actually has on day one. On the two URLs we got head-to-head, Skim was 5.3x faster on Supabase and 1.9x slower on Notion. The Notion result, like the basic-mode PDF and Wikipedia rows, is consistent with Jina serving a cached extraction — but we haven't proven that.

Reproduce it yourself — the script is scripts/src/bench-skim.ts. You need two shells: in shell A, start a local unpaywalled Skim server — PORT=9090 PAY_TO_ADDRESS= pnpm --filter @workspace/api-server run dev (JS rendering additionally requires CF_ACCOUNT_ID and CF_BROWSER_RENDERING_TOKEN); in shell B, run SKIM_URL=http://localhost:9090 RUNS=3 pnpm --filter @workspace/scripts exec tsx src/bench-skim.ts. Run on 2026-05-21 from a Replit container in the US; your latencies will depend on your network distance to each provider.

What each one is best at

Skim isn't the right answer for every team. Here's where each tool shines.

Skim

Autonomous agents that read URLs ad-hoc. Pay only for successful reads. No signup, no API key rotation, no monthly minimum. Best when the consumer is software, not a human dev integrating once.

Jina Reader

Devs who want a generous free tier for low-volume reads and don't mind managing an API key. Strong if you're already in the Jina ecosystem.

Firecrawl

Production RAG pipelines that need multi-page crawl plus structured extraction by JSON schema. Best when your workload is predictable enough for a monthly plan.

xAI Live Search

Apps already paying for the xAI / Grok API that want web search bundled in. Search-shaped queries, not 'fetch and clean this URL'.

Self-hosted (Crawl4AI etc.)

Teams with infra expertise and very high volume where per-call pricing stops penciling. You own the SSRF, queueing, retries, and PDF parsing.

Where Skim falls short today

Honest disclosure beats marketing spin. As of May 2026, Skim does not yet ship:

  • Full-site crawl. Skim can batch up to 10 URLs in one paid call via /v1/read/batch, but it doesn't yet follow links to crawl a whole site. Firecrawl and self-hosted Crawl4AI handle full-site crawls; Skim is planning a /v1/crawl endpoint for v2.
  • Wallet onboarding. Skim requires an x402-capable wallet on Base. That's frictionless for agents but adds a learning step for human devs who've never touched USDC. A hosted-wallet onramp is on the roadmap.

The bet: per-call pricing with no signup is the right shape for autonomous agents. The gaps above are real, and we're closing them in priority order.

Try Skim in one curl

No signup, no API key. Fund a Base wallet with a few cents of USDC and your agent can call Skim today.