Turn any URL into clean, LLM-ready data.

Scrape a page, crawl a whole site, run a search, or pull schema-shaped JSON. One API, one response shape, one credit a page. The nav, banners and boilerplate are stripped out.

6,831 tokens instead of 59,769. Same article.

POST /v1/web/scrape https://en.wikipedia.org/wiki/Web_scraping

What the page ships

<head>
<meta charset="UTF-8">
<title>Web scraping - Wikipedia</title>
<script>(function(){var className="client-js vector-feature-l…
RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":…
<script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(f…
}];});});</script>
<link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=…

59,769 tokens · mostly chrome

What your model reads

**Published:** 2005-09-17
# Web scraping
**Web scraping**, **web harvesting**, or **web data extractio…
Scraping a web page involves fetching it and then extracting …
Contact scraping is a type of web scraping that is used as a …
Web pages are built using text-based markup languages (HTML a…
There are methods that some websites use to prevent web scrap…
## History

6,831 tokens · 4,072 words of content

confidence 0.99 complete 1 credit captured from the live API
Measured, not claimed.

Everyone says their output is clean. We publish the number.

Extraction quality is the whole product, so we benchmark it against human labels and re-run it against the deployed engine on every change. No competitor selling this primitive publishes an equivalent figure.

0.857 word-level F1

Extraction accuracy on held-out pages

2,008 human-labeled pages (WCXB). Trafilatura, the strong open baseline, scores 0.841.

64% fewer tokens

Less boilerplate survives the extraction

25k vs 69k tokens across 10 URLs end-to-end, against Jina Reader, on the same content.

Both figures are reproducible from the benchmark in the repo. How we measure it

Primitives that compose.

The endpoints chain into whole workflows.

Most jobs are two calls: discover the pages, then get them in the shape your model needs. Because every endpoint shares one options object and one response shape, the chaining is the easy part.

  • Feed a site into your model
    crawl → your vector store

    Crawl documentation, a knowledge base, or a whole site and get clean Markdown for every page, ready to chunk and embed for retrieval.

  • Answer with fresh web context
    search

    One call runs the query and returns the top results already fetched and cleaned: cited, current context your model can answer from.

  • Turn pages into a table
    search or crawl → extract

    Point a JSON schema at a directory, a listing site, or a pile of articles and get back typed rows with per-field confidence and sources.

  • Give your agent the web
    MCP

    Every endpoint is exposed as an MCP tool, so an agent can search, scrape, and extract mid-conversation to ground its own answers.

A bill you can predict.

One credit a page. Whatever it took.

A hard page and an easy page cost you the same, because you cannot know in advance which one you asked for, and knowing would not help you. You pay for what you asked for, never for how hard it was to get.

No multipliers stacking onto the headline rate at the end of the month. If a request does not succeed, it is not billed.

See pricing
Scrape, map, crawl, or search a page 1 credit
Structured extraction and summaries, per page 5 credits
Anything that fails free

Send it a URL. See what comes back.

Free credits to start, no card. The quickstart gets you a first clean response in under a minute.