# Blackwood Web Markdown Extractor

> Blackwood Web Markdown Extractor is a paid API for AI agents from x402-gateway.blackwoodstate8.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-22).

Fetches a public web page and returns its content as clean Markdown, along with metadata like title, description, language, canonical URL, and links.

## Facts

- Endpoint: POST https://x402-gateway.blackwoodstate8.workers.dev/v1/web-markdown?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-22
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/blackwood-web-markdown-extractor-84d33bc2
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_23-f9jmPVh6DoXW5z_lJI

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 blackwood-web-markdown-extractor-84d33bc2 -d '<json body>'
```

Example prompt: Can you fetch the article at https://www.bbc.com/news/technology-12345678 and give me its content as clean markdown so I can summarize it?

## When to prefer this

Choose this endpoint when you need to extract readable text content from a publicly accessible, server-rendered HTML web page and want it formatted as Markdown suitable for LLM consumption. It is ideal for articles, blog posts, documentation pages, and marketing pages. Avoid it for JavaScript-heavy single-page apps, paywalled content, login-required pages, or PDFs (use the sibling PDF extractor for those).

## Known failure modes

- Page requires JavaScript to render — HTML-only scraper returns empty or partial content
- Page is behind a login or paywall — returns limited or no content
- URL points to a PDF or non-HTML resource — should use the PDF extractor instead
- URL is malformed or unreachable — returns an error status
- Page content exceeds maxChars and is truncated — truncated flag is set true
- Network timeout on slow or geographically restricted pages

## How this service works

Use when you need to scrape a web page, extract content from a url or read an article as markdown for an LLM. Do not use for pages that need JavaScript to render, sit behind a login or paywall, or are not HTML (PDFs go to blackwood_pdf_extract). Returns JSON with the clean Markdown of a public web page plus its title, description, language, canonical URL and links for 0.01 USDC per call. Typical response time 2500 ms (p95). Category: Data.

## Output

Returns a JSON object containing: clean Markdown of the page body, page title, meta description, detected language, canonical URL, array of links (text + href), word count, a truncated flag, and a suggested next-call hint for chaining requests in the same family.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "object",
     "required": [
      "url"
     ],
     "properties": {
      "url": {
       "type": "string",
       "format": "uri",
       "maxLength": 2048,
       "description": "Public http(s) URL of the web page to read, e.g. https://example.com/article"
      },
      "maxChars": {
       "type": "integer",
       "maximum": 100000,
       "minimum": 500,
       "description": "Maximum length of the returned markdown (500-100000 characters, 50000 when omitted)"
      }
     }
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "url",
      "finalUrl",
      "status",
      "title",
      "description",
      "lang",
      "canonical",
      "markdown",
      "links",
      "wordCount",
      "truncated"
     ],
     "properties": {
      "url": {
       "type": "string"
      },
      "lang": {
       "type": [
        "string",
        "null"
       ]
      },
      "next": {
       "type": "object",
       "required": [
        "service",
        "tool",
        "method",
        "url",
        "useWhen",
        "sample"
       ],
       "properties": {
        "url": {
         "type": "string",
         "description": "Paid route of the next call"
        },
        "tool": {
         "type": "string",
         "description": "MCP tool name of the same call"
        },
        "method": {
         "enum": [
          "GET",
          "POST"
         ],
         "type": "string"
        },
        "sample": {
         "type": "string",
         "description": "Free fixed sample of the whole family"
        },
        "service": {
         "type": "string",
         "description": "Service id of the suggested next paid call"
        },
        "useWhen": {
         "type": "string",
         "description": "When the next 
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://httpbin.org/html",
  "lang": null,
  "links": [],
  "title": null,
  "status": 200,
  "finalUrl": "https://httpbin.org/html",
  "markdown": "# Herman Melville - Moby-Dick\n\nAvailing himself of the mild, summer-cool weather that now reigned in these latitudes, and in preparation for the peculiarly active pursuits shortly to be anticipated, Perth, the begrimed, blistered old blacksmith, had not removed his portable forge to the hold again, after concluding his contributory work for Ahab's leg, but still retained it on deck, fast lashed to ringbolts by the foremast; being now almost incessantly invoked by the headsmen, and harpooneers, a",
  "canonical": null,
  "truncated": true,
  "wordCount": 78,
  "description": null
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/blackwood-web-markdown-extractor-84d33bc2/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-gateway.blackwoodstate8.workers.dev](https://www.zero.xyz/host/x402-gateway.blackwoodstate8.workers.dev/llms.txt)
