Web page to Markdown

Returns JSON with the clean Markdown of a public web page plus its title, description, language, canonical URL and links.

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 when the page needs JavaScript to render, sits behind a login or paywall, or is not HTML (use a PDF reader for PDFs).

Price: 0.01 USDC per call (x402, eip155:8453). Typical response time: 2500 ms (p95).

Call it over HTTP (x402)

POST https://x402-gateway.blackwoodstate8.workers.dev/v1/web-markdown. A request without payment gets 402 Payment Required with the PAYMENT-REQUIRED header; any x402 client signs an EIP-3009 authorization and retries with PAYMENT-SIGNATURE (or X-PAYMENT). Invalid input is answered with 400 and not charged.

curl -i -X POST https://x402-gateway.blackwoodstate8.workers.dev/v1/web-markdown -H 'content-type: application/json' -d '{"url":"https://httpbin.org/html","maxChars":500}'
Pay to0x5A6c77758820182484EA8DE614FC65423E80749a
Asset0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (USDC)
Amount10000 atomic units (0.01 USDC)
Authorization window60 s

Call it over MCP

Streamable HTTP at https://x402-gateway.blackwoodstate8.workers.dev/mcp, tool web-markdown_v1. Payment goes in _meta["x402/payment"]; without it the tool returns the payment requirements.

Input

FieldTypeMeaning
urlstringPublic http(s) URL of the web page to read
maxChars (optional)integerMaximum length of the returned markdown (500-100000 characters, 50000 when omitted)

Example:

{
  "url": "https://httpbin.org/html",
  "maxChars": 500
}

Output

Real example:

{
  "url": "https://httpbin.org/html",
  "finalUrl": "https://httpbin.org/html",
  "status": 200,
  "title": null,
  "description": null,
  "lang": null,
  "canonical": null,
  "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",
  "links": [],
  "wordCount": 78,
  "truncated": true
}
JSON Schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    },
    "finalUrl": {
      "type": "string"
    },
    "status": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "title": {
      "type": [
        "string",
        "null"
      ]
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "lang": {
      "type": [
        "string",
        "null"
      ]
    },
    "canonical": {
      "type": [
        "string",
        "null"
      ]
    },
    "markdown": {
      "type": "string"
    },
    "links": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "href": {
            "type": "string"
          }
        },
        "required": [
          "text",
          "href"
        ],
        "additionalProperties": false
      }
    },
    "wordCount": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "truncated": {
      "type": "boolean"
    }
  },
  "required": [
    "url",
    "finalUrl",
    "status",
    "title",
    "description",
    "lang",
    "canonical",
    "markdown",
    "links",
    "wordCount",
    "truncated"
  ],
  "additionalProperties": false
}

More

Free schema and example: GET https://x402-gateway.blackwoodstate8.workers.dev/v1/web-markdown. OpenAPI 3.1 · llms.txt · All services