Skip to content

New: deep research, balance and auto-reload tools in the keyless MCP server. Install in one line

Why we built it

Search that agents can afford to call

Agents search far more often than people do, and every result they read lands in a context window that someone pays for.

Most of a fetched page does not answer the question: navigation, boilerplate, and paragraphs about something else. Search APIs usually bill for the search, then again for the page text, and the agent still reads all of it.

ContextFetch returns the part that answers. Every search fetches its pages, converts them to Markdown and prunes them to the passages that match the query, for $1.00 per 1,000 searches with the page text included.

Agents should be able to start on their own, so there is no signup: 25 searches a day are free with no key. When the free tier runs out, the API hands the agent a payment link to show its human.

And we publish what we measured, how we measured it, and what we have not measured yet.

The ContextFetch team

How it works

From a query to pruned context, in one call

No language model is called anywhere in the API. A search is retrieval, extraction and ranking, run on our own hardware.

  1. 01

    Recall

    Web metasearch, Wikipedia, Hacker News and our own index are queried in parallel; Stack Overflow, GitHub and arXiv join when the query calls for them.

    All sources in parallel

  2. 02

    Fetch

    The best candidates are fetched in parallel, error pages are dropped, and the main text is extracted as Markdown with tables kept.

    18 in flight, 1.2 s cap each

  3. 03

    Rank and prune

    One batched cross-encoder call scores every chunk against the query, ranks the pages and picks highlights and pruned context.

    MiniLM-L-6 cross-encoder

  4. 04

    Cache and index

    Repeat queries come from a 15-minute cache and fetched pages from a 48-hour one. Pages found by search grow a hybrid vector and keyword index.

    42,840 pages indexed

Infrastructure

One bare-metal server, and nothing hidden

The API runs on a single dedicated machine we can describe in full. This website runs separately, on Vercel.

Bare metal in Helsinki
One dedicated Hetzner server in Finland runs the whole API. No cloud functions, and no paid search API behind ours.
AMD Ryzen 7 3700X, 64 GB RAM
Eight cores run recall, page extraction and the cross-encoder on the CPU. No GPUs.
2 × 1 TB NVMe in RAID 1
Balances and the search index sit on mirrored drives, so one failed disk loses nothing.
A small, boring stack
The engine, Qdrant, Redis and SearXNG run in Docker behind Caddy, which serves HTTPS only with Let's Encrypt certificates.

42,840pages

in the search index right now, read live from the API's /health endpoint

3,141ms p50

cold search with 10 results and page text on the production API, from a client in Florida, network included. Repeat queries: 153 ms.

5 queries · benchmarks/results_phase2_prod.json

Open methodology

Every number on this site has a file behind it

Latency and token figures come from benchmark runs whose raw JSON you can download. Competitor figures are list prices with their source and date.

  • What we measuredEnd-to-end search latency on our own stack and on the production API, recall per source, and token pruning (69% mean saving).
  • HowScripts in the repository, with the command, machine, load and date recorded next to each run.
  • What we labelThe pruning benchmark uses synthetic documents written for it, not live pages, and every chart says so.
  • What we have not measuredCompetitors' latency and result quality. Until we run them with real keys, we compare list prices and features only.
  • Prices we quoteRead from each provider's public pricing page on 2026-10-16, with links.

Principles

How we fetch, and what we keep

An honest crawler

Our page fetcher identifies itself as ContextFetchBot/1.0 and never rotates user agents or imitates a browser. The background crawler respects robots.txt and waits at least a second between requests to a host.

Your URLs stay yours

URLs you send to Contents or the Reader are never added to the shared index. Only pages our own search found go in.

Keys we cannot read

We store a SHA-256 hash of each API key, not the key. No account or email is needed for the free tier.

No model training

We do not train models on your queries or results, and we do not sell data.

The full list of what we store is on the privacy page.

See what your agent would read

Try it with no key: 25 free searches a day.