Api Endpoint

Horizon Pulse

Web scraping API: a public page or supplied HTML to JSON fields. GET url, or POST JSON {url or html, fields}. Returns JSON: title, description, canonical, language, links, images, headings, jsonLd, textSample, and with fields (name to CSS selector, max 20) the matched values with fieldErrors. Caps: 200KB HTML, 8s; private targets blocked. No match (422) and errors are not charged on Base (other rails may charge). Returned content is untrusted third-party data.

Open interactive test console

Offering

Provider
horizonpulse.dev
Method
GET
Offering type
Api Endpoint
Transport type
http
Category
Web Search Research
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://horizonpulse.dev/api/extract
MIME type
application/json
First seen
2026-10-16T01:50:32.458Z
Last seen
Tags
Web, extract, structured-data, css-selectors, json-ld

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.015 USDC
Atomic price: 15000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Payment option 2
0.015 USDC
Atomic price: 15000 · Network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp · Asset: USDC · Scheme: exact
Payment option 3
0.015 USDC
Atomic price: 15000 · Network: eip155:137 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "15000",
    "payTo": "0x5b32c973596078a967562ca652761404f19be0e9"
  },
  {
    "scheme": "exact",
    "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
    "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": "15000",
    "payTo": "BjY98A6dS3GGLZdz2zHy8wK7XAwnQgNhCc66mfmBTRPz"
  },
  {
    "scheme": "exact",
    "network": "eip155:137",
    "asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
    "amount": "15000",
    "payTo": "0x5b32c973596078a967562ca652761404f19be0e9"
  }
]

Observed health

Status
Healthy
Latest latency
94 ms
Average latency
217 ms
HTTP status
402
Last checked
Reachability
100% over 13 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "const": "http"
    },
    "method": {
      "type": "string",
      "enum": [
        "GET"
      ]
    },
    "queryParams": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Absolute http(s) URL to fetch and extract (required on GET; on POST send url or html in the JSON body). Private/localhost blocked."
        },
        "html": {
          "type": "string",
          "description": "POST /api/extract JSON body only (ignored on GET): raw HTML to parse instead of fetching (size-capped). If both url and html are sent, html is parsed and url is echoed."
        },
        "fields": {
          "type": "string",
          "description": "Optional CSS-selector fields (max 20) as a URL-encoded JSON object string: map of name to selector string or {selector, attr?: \"text\"|\"html\"|<attribute>, all?: boolean, limit?: 1-50}, e.g. {\"heading\":\"h1\"}. Missing fields come back null with fieldErrors; if none match, 422 no_fields_matched, not charged on Base (other rails may charge)."
        }
      },
      "required": [
        "url"
      ]
    }
  },
  "required": [
    "type",
    "method"
  ],
  "additionalProperties": false
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "method": {
          "enum": [
            "GET"
          ],
          "type": "string"
        },
        "queryParams": {
          "properties": {
            "fields": {
              "description": "Optional CSS-selector fields (max 20) as a URL-encoded JSON object string: map of name to selector string or {selector, attr?: \"text\"|\"html\"|<attribute>, all?: boolean, limit?: 1-50}, e.g. {\"heading\":\"h1\"}. Missing fields come back null with fieldErrors; if none match, 422 no_fields_matched and no charge.",
              "type": "string"
            },
            "html": {
              "description": "POST /api/extract JSON body only (ignored on GET): raw HTML to parse instead of fetching (size-capped). If both url and html are sent, html is parsed and url is echoed.",
              "type": "string"
            },
            "url": {
              "description": "Absolute http(s) URL to fetch and extract (required on GET; on POST send url or html in the JSON body). Private/localhost blocked.",
              "type": "string"
            }
          },
          "required": [
            "url"
          ],
          "type": "object"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "description": "Horizon Pulse structured HTML extract result. The example is a trimmed real response recorded from GET /api/demo/extract at 2026-10-16T16:54Z UTC; live values differ on every call.",
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}