FetchIndex

About FetchIndex

The AI web-data hub: independent price comparisons for scraping APIs, proxies, browsers and search APIs.

FetchIndex is an independent price comparison for services that AI agents and apps use to get web data. Prices come from each vendor's official public pricing page and are normalized so different pricing models can be compared. We show our formulas, our assumptions and the gaps. No vendor has paid for placement. FetchIndex has an affiliate relationship with Firecrawl (it may earn a commission if you buy through a labelled affiliate link); that relationship does not change prices, rankings or caveats, and rankings remain rule-based. See the disclosure.

Operator: FetchIndex · Contact: hello@fetchindex.com


Methodology

FetchIndex methodology

Dataset version 2026.10.16 · schema 1.0 · prices fetched 2026-10-16 (PT).

FetchIndex compares what services for AI agents and apps charge for web data: scraping APIs, proxies and unblockers, browser infrastructure, and search/SERP APIs. This page explains exactly how every number on the site is produced, so you can check it and so you know what it does not tell you.

What this is, and is not

Where the data comes from

  1. For each vendor we fetch the official pricing page (HTTP, or headless Chrome for pages that render prices with JavaScript). The URLs are listed per vendor in data/vendors.json under sources.
  2. Where the pricing page leaves a unit unexplained (for example what one "credit" buys), we use the vendor's official documentation or FAQ and name that page.
  3. We do not use affiliate dashboards, scraped third-party review sites, or vendor-supplied numbers that are not public. Third-party articles are never used as a price source.
  4. Every vendor record carries fetched_at (the date we read the page). Every price shown on the site is labelled "last checked" with that date.
  5. Text on vendor pages that addresses AI agents or tries to give instructions to automated readers is ignored. We only read prices and plan facts.

The normalized metric: "effective price per 1,000"

To compare services that bill in credits, requests, tokens, searches or hours, we convert published numbers into one comparable figure per use case:

Use case idMeaningUnit
page_basicone successful page fetch, no JavaScript rendering, no premium anti-bot tierUSD per 1,000 requests
page_jsone page that needs JavaScript renderingUSD per 1,000 requests
page_protectedone page behind aggressive bot protection, vendor's premium unblocking pathUSD per 1,000 requests
serpone search-engine results page returned as structured dataUSD per 1,000 requests
search_aione web search for an LLM/agent (about 10 results)USD per 1,000 requests
content_extractone URL converted into LLM-ready markdown/textUSD per 1,000 requests
browser_hourone hour of a hosted cloud browserUSD per hour
residential_gbone GB of residential proxy trafficUSD per GB

Formula

usd = price_usd / quantity * per_request * (1000 for per-1,000 units, 1 otherwise)

Each entry in data/vendors.json stores calc.price_usd, calc.quantity and calc.per_request plus a human-readable formula. scripts/validate.py recomputes every value from those inputs and fails if any stored number disagrees. Values are rounded to 4 decimals.

Assumptions we make

Confidence labels

What we leave as null

A field is null (shown as "not published") when the vendor does not state it on the pages we checked: for example Firecrawl's monthly-billed price for plans above Hobby, ScraperAPI's JS-rendering credit multiplier, ZenRows' top-up price, Apify's per-page cost (it is set per Actor), Oxylabs' per-request Web Unblocker cost (it bills per GB). We would rather show a gap than invent a number. Each vendor page has a "What we could not verify" box.

Verification status

MCP / agent support

"MCP supported" is only marked true when an official vendor page or an official repository under the vendor's own organisation mentions an MCP server. Otherwise it is null (not confirmed), never false by default.

Rankings and "cheapest tool for X"

The /api/cheapest.json feed and the on-site guide choose the lowest published effective price per use case among entries whose required monthly spend is at or below a stated budget. component rows are shown but flagged; assumption rows are excluded by default. Cheapest is not the same as best; read the vendor page.

Change tracking

scripts/refresh.py re-fetches the pages, stores a dated snapshot under data/snapshots/YYYY-MM-DD/, checks that the numbers we rely on still appear on each page (checks in the data), diffs numeric text against the previous snapshot, diffs the structured data, and writes findings to data/changelog.json, which feeds the Price change log page. A human then edits the facts. The script does not silently rewrite prices.

Independence

No vendor paid for placement, reviewed their entry before publication, or supplied data. FetchIndex has an affiliate relationship with Firecrawl and may earn a commission if you buy through a clearly labelled affiliate link. It does not change prices, rankings, ordering or caveats, and rankings remain rule-based. Every other link goes to an official vendor URL, and a plain official Firecrawl link always sits beside the affiliate one. See the affiliate and sponsor disclosure page.

Corrections

If you spot a wrong or stale number, tell us (hello@fetchindex.com) and include the vendor URL. We correct errors and note the correction in the change log.