# Article Extractor with BM25 Budget Control

> Article Extractor with BM25 Budget Control is a paid API for AI agents from x402broker.com, paid per call via MPP, $0.001/call, status unknown (last checked 2026-10-23).

Fetches and distills a URL or raw HTML into Markdown, structured data, or a token-budget excerpt using BM25 relevance scoring

## Facts

- Endpoint: POST https://x402broker.com/v1/article-extractor?utm_source=zero.xyz
- Price: $0.001/call
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-23
- Activations on Zero: 0
- Provider: x402broker.com
- Website: https://x402broker.com
- Canonical page: https://www.zero.xyz/c/x402broker-com-article-extractor-with-bm25-budget-control-1dfc3274
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_W-DLfWicHe3rFoErXsJj3

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 x402broker-com-article-extractor-with-bm25-budget-control-1dfc3274 -d '<json body>'
```

Example prompt: Grab the article at https://techcrunch.com/2024/05/10/openai-funding and distill it into clean Markdown, keeping it under 800 tokens — use 'OpenAI funding round' as the focus query so I get only the most relevant parts.

## When to prefer this

Choose this endpoint when you need to feed web content into an LLM with strict token budgets, want BM25-relevance-filtered excerpts rather than full-page dumps, or need structured/skeleton extraction rather than raw HTML. Prefer it over generic scrapers when token cost savings and compression metrics matter, or when you want multiple distillation modes (markdown, structured, skeleton, budget) from a single API call at $0.001 per call.

## Known failure modes

- Invalid or unreachable URL returns fetch error
- Token budget too low (below 20) returns validation error
- HTML payloads that are JavaScript-rendered may not parse correctly
- Rate limiting or payment failure via x402 returns 402 status
- Malformed HTML may produce incomplete distillation
- BM25 query with no matching content may return minimal excerpt

## How this service works

Distill a URL or raw HTML payload with BM25 budget control (Live x402 v2, IETF MPP & MCP endpoint at https://x402broker.com/v1/article-extractor)

## Output

Returns a JSON object containing distilled content (Markdown text, structured JSON tables/metadata, skeleton outline, or BM25-scored budget excerpt depending on mode), plus ROI proof metrics (raw vs distilled token counts, compression ratio, estimated LLM cost saved), cache status (HIT/MISS), and billing details. The data field holds the actual distilled output.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "url"
 ],
 "properties": {
  "url": {
   "type": "string",
   "minLength": 1,
   "description": "Target webpage URL to fetch and distill (or builtin://stripe-docs)"
  },
  "html": {
   "type": "string",
   "description": "Optional raw HTML string to distill directly without fetching"
  },
  "mode": {
   "enum": [
    "markdown",
    "structured",
    "skeleton",
    "budget"
   ],
   "type": "string",
   "default": "markdown",
   "description": "Distillation mode"
  },
  "query": {
   "type": "string",
   "description": "BM25 focus query when mode=budget"
  },
  "max_tokens": {
   "type": "integer",
   "minimum": 20,
   "description": "Strict token budget 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/x402broker-com-article-extractor-with-bm25-budget-control-1dfc3274/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402broker.com](https://www.zero.xyz/host/x402broker.com/llms.txt)
