1. readfetch
  2. choose

Routing

Which service should my agent call?

Thirteen routes, one question each. Go down the list and stop at the first line that is true — everything below it costs more than the answer needs. Every call is a POST to https://readfetch.com.

The decision

Cheapest first. A browser last.

  1. You do not know whether the page is worth reading/v1/probe
  2. The content is in the HTML/v1/text
  3. You need the URLs before you can read anything/v1/map
  4. It only appears after JavaScript, or the origin refused plain HTTP/v1/scrape
  5. The origin refuses datacentre addresses/v1/scrape/residential
  6. It is not a page: an API, a file, bytes/v1/fetch
  7. Many URLs, one payment/v1/batch
  8. It is a document, not a page/v1/pdf
  9. One heading or one selector is the whole answer/v1/section
  10. You hold a hash and want to know what changed/v1/diff
  11. You need to see the page/v1/screenshot
  12. You have no URL, only a question/v1/search
  13. You want a whole site, a few pages deep/v1/crawl

/v1/probe is the only free call, and it is the cheapest decision you can make: if it reports challenge: true, a bot wall will answer the cheap path and the route is /v1/scrape, not /v1/text.

The catalogue

Every published endpoint with its price. Generated from the same file the 402 quote reads.

MethodEndpointPriceReturns
POST /v1/text$0.005Article text and metadata, boilerplate stripped. No browser by default; falls back to one when a page blocks plain HTTP.
POST /v1/map$0.005Sitemaps, robots rules, feeds and link counts for a whole site, in one call. Plan a crawl before paying for it.
POST /v1/scrape$0.005Chromium renders the page, runs interactions, and returns Markdown, text or HTML with its links.
POST /v1/scrape/residential$0.02Scrape through a rotating residential exit, for targets that refuse a datacentre address. Same contract as /v1/scrape, one attempt, priced for the bandwidth.
POST /v1/fetch$0.003Raw HTTP through the same egress. JSON APIs, GraphQL, PDFs, byte ranges - anything that is not a page.
POST /v1/batch$0.0015/pageUp to 50 URLs in one call and one payment. Results in input order; undelivered pages come back as credit.
POST /v1/pdf$0.005/documentDocuments, not pages: page text plus one Markdown body, priced per document rather than per page.
POST /v1/section$0.003Read one heading or one selector instead of the whole page - ten to a hundred times fewer tokens.
POST /v1/diff$0.003Stateless change detection. Send the hash you hold, get back whether it changed and a bounded diff.
POST /v1/screenshot$0.003PNG, JPEG or PDF of a rendered page: viewport, full page, or a single element.
POST /v1/search$0.005Web search without a search subscription, returning titles, URLs and snippets.
POST /v1/crawl$0.003/pageBounded async crawl with a job id, a page cap quoted up front, and per-page Markdown.
POST /v1/probefreeMetadata before spending: status, type, title, size, language, whether a bot wall is waiting. No page body.

Two rules that decide most calls

Both are visible in the response, not in a policy page.

Ask for less

/v1/text and /v1/map reach for Chromium only when the origin blocks plain HTTP, and used_browser tells you which path served the call. Only /v1/scrape always takes a browser slot. When you need one heading, /v1/section returns that heading instead of the page.

Nothing is charged for nothing

A bot wall, an empty extraction, an unsupported type or a transport failure returns billed: false and settles nothing — the payment is only taken after the work is delivered. The hint on that response names the next call.

Then

Endpoint pages carry the fields, the curl call, a response example and the timeout for each route. Start at /text if you only want to see the shape of one.