# Web URL Distillation & BM25 Token Budget API

> Web URL Distillation & BM25 Token Budget API is a paid API for AI agents from serp-extract.agentdiet.dev, paid per call via MPP, $0.001/call, status unknown (last checked 2026-10-21).

Fetches a web URL (or raw HTML) and distills it into compact, agent-ready tokens using markdown, structured, skeleton, or BM25 budget modes with token-ceiling control

## Facts

- Endpoint: GET https://serp-extract.agentdiet.dev/v1/web-scrape?utm_source=zero.xyz
- Price: $0.001/call
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-21
- Activations on Zero: 0
- Provider: serp-extract.agentdiet.dev
- Website: https://serp-extract.agentdiet.dev
- Canonical page: https://www.zero.xyz/c/serp-extract-agentdiet-dev-web-url-distillation-bm25-token-budget-api-c7b636c3
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_NzxnzweARHq-sG-xK1HDh

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability serp-extract-agentdiet-dev-web-url-distillation-bm25-token-budget-api-c7b636c3
```

Example prompt: Grab the page at https://docs.stripe.com/api/charges and distill it into compact markdown — use budget mode with my query 'charge creation parameters' and cap it at 2000 tokens so I'm not blowing my context window.

## When to prefer this

Choose this endpoint when your agent needs to consume web content within a strict token budget, wants BM25-focused excerpts relevant to a specific query, or needs to convert raw HTML into structured JSON or clean markdown before passing it to an LLM. It is ideal over generic scrapers when token cost reduction and compression ratio reporting matter — the roi_proof field lets you audit exactly how many tokens and dollars were saved per call.

## Known failure modes

- URL is unreachable or returns non-200 — endpoint may return an error status
- mode=budget used without providing a query — BM25 scoring may fall back to generic compression
- max_tokens set too low — may produce truncated or empty excerpts
- Raw HTML provided with a URL simultaneously — may cause ambiguity in which source is used
- Target page blocks bots or requires authentication — content may be empty or partial
- Invalid URL format — schema requires minLength:1 string but malformed URLs will fail fetch

## How this service works

Distill a web URL into compact agent-ready tokens (Live x402 v2, IETF MPP & MCP endpoint at https://serp-extract.agentdiet.dev/v1/web-scrape)

## Output

Returns a 'data' object containing the distilled content (markdown text, structured JSON tables/metadata, a skeleton outline, or a BM25-focused excerpt), plus an roi_proof object showing raw_tokens, distilled_tokens, tokens_saved, compression_ratio_pct, roi_multiplier, and llm_cost_saved_usd. Also includes cache status (HIT/MISS) and billing metadata.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "url"
 ],
 "properties": {
  "url": {
   "type": "string",
   "minLength": 1,
   "description": "Target webpage URL to distill (or builtin://stripe-docs)"
  },
  "mode": {
   "enum": [
    "markdown",
    "structured",
    "skeleton",
    "budget"
   ],
   "type": "string",
   "default": "markdown",
   "description": "Extraction mode: markdown, structured, skeleton, or budget"
  },
  "limit": {
   "type": "integer",
   "default": 20,
   "maximum": 100,
   "minimum": 1,
   "description": "Maximum number of items to return per page (1-100)"
  },
  "query": {
   "type": "string",
   "description": "BM25 focus query when mode=budget"
  },
  "cursor": {
   "type": "string",
   "description": "Opaque pagination cursor for fetching the next page"
  },
  "max_tokens": {
   "type": "integer",
   "minimum": 20,
   "description": "Strict token ceiling when mode=budget"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "status",
  "roi_proof",
  "data"
 ],
 "properties": {
  "data": {
   "type": "object",
   "description": "Distilled Markdown, structured JSON tables/metadata, skeleton outline, or BM25 budget excerpt."
  },
  "cache": {
   "type": "object",
   "properties": {
    "status": {
     "enum": [
      "HIT",
      "MISS"
     ],
     "type": "string"
    },
    "cache_key": {
     "type": "string"
    },
    "latency_ms": {
     "type": "number"
    }
   }
  },
  "status": {
   "type": "string",
   "description": "Execution status ('ok')"
  },
  "billing": {
   "type": "object",
   "properties": {
    "agent_id": {
     "type": "string"
    },
    "payment_method": {
     "type": "string"
    },
    "fee_charged_usd": {
     "type": "number"
    }
   }
  },
  "roi_proof": {
   "type": "object",
   "properties": {
    "raw_tokens": {
     "type": "integer"
    },
    "tokens_saved": {
     "type": "integer"
    },
    "roi_multiplier": {
     "type": "number"
    },
    "distilled_tokens": {
     "type": "integer"
    },
    "llm_cost_saved_usd": {
     "type": "number"
    },
    "compression_ratio_pct": {
     "type": "number"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/serp-extract-agentdiet-dev-web-url-distillation-bm25-token-budget-api-c7b636c3/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from serp-extract.agentdiet.dev](https://www.zero.xyz/host/serp-extract.agentdiet.dev/llms.txt)
