Api Endpoint

17711 URL Extract with Question

URL extract with a question: ask any web page a question and get structured data as JSON that matches your schema

Open interactive test console

Offering

Provider
api.17711.xyz
Method
POST
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://api.17711.xyz/registry/url-extract-service/v1/url-extract/get_structured_data
MIME type
Not provided
First seen
2026-10-16T01:50:32.458Z
Last seen
Tags
url-extract, structured-data, web-page-to-json, json-schema, ask-a-page

Payment pricing

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

Payment option 1
0.02 USDC
Atomic price: 20000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "20000",
    "payTo": "0x19824cf672f28fa63024731ebc7405aa3733e0ba"
  }
]

Observed health

Status
Healthy
Latest latency
314 ms
Average latency
1008 ms
HTTP status
200
Last checked
Reachability
92.3% over 13 checks

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

Input schema

{
  "properties": {
    "body": {
      "properties": {
        "max_age_seconds": {
          "default": null,
          "description": "The oldest answer you accept, in seconds. Omit it for the default (an identical question about\nthe same page up to 1 hour old); `0` forces a fresh read of the page and a fresh answer. The\nresponse always says how old it is.",
          "format": "uint64",
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "question": {
          "description": "What to extract or answer, in plain language, e.g. \"list the pricing plans with their name\nand monthly price in USD\".",
          "type": "string"
        },
        "schema": {
          "default": null,
          "description": "Optional JSON Schema the answer must satisfy. When given, the answer is validated against it\nand automatically corrected where a safe fix exists (type coercion, missing defaults,\nout-of-range numbers, unknown properties); anything that cannot be fixed is reported in\n`remaining_issues`. Omitted = a free-form JSON answer, returned as-is."
        },
        "url": {
          "description": "Address of the web page to read (`http` or `https`).",
          "type": "string"
        }
      },
      "required": [
        "url",
        "question"
      ],
      "title": "GetStructuredDataRequest",
      "type": "object"
    },
    "bodyType": {
      "const": "json"
    },
    "method": {
      "const": "POST"
    },
    "type": {
      "const": "http"
    }
  },
  "required": [
    "type",
    "method",
    "bodyType",
    "body"
  ],
  "type": "object"
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "properties": {
        "body": {
          "properties": {
            "max_age_seconds": {
              "default": null,
              "description": "The oldest answer you accept, in seconds. Omit it for the default (an identical question about\nthe same page up to 1 hour old); `0` forces a fresh read of the page and a fresh answer. The\nresponse always says how old it is.",
              "format": "uint64",
              "minimum": 0,
              "type": [
                "integer",
                "null"
              ]
            },
            "question": {
              "description": "What to extract or answer, in plain language, e.g. \"list the pricing plans with their name\nand monthly price in USD\".",
              "type": "string"
            },
            "schema": {
              "default": null,
              "description": "Optional JSON Schema the answer must satisfy. When given, the answer is validated against it\nand automatically corrected where a safe fix exists (type coercion, missing defaults,\nout-of-range numbers, unknown properties); anything that cannot be fixed is reported in\n`remaining_issues`. Omitted = a free-form JSON answer, returned as-is."
            },
            "url": {
              "description": "Address of the web page to read (`http` or `https`).",
              "type": "string"
            }
          },
          "required": [
            "url",
            "question"
          ],
          "title": "GetStructuredDataRequest",
          "type": "object"
        },
        "bodyType": {
          "const": "json"
        },
        "method": {
          "const": "POST"
        },
        "type": {
          "const": "http"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "properties": {
            "age_seconds": {
              "description": "How old this answer is, in seconds (0 for a fresh read).",
              "format": "uint64",
              "minimum": 0,
              "type": "integer"
            },
            "applied_fixes": {
              "description": "Every automatic correction applied to the model's answer, in order.",
              "items": true,
              "type": "array"
            },
            "data": {
              "description": "The structured answer (an object or an array), corrected against `schema` when one was given."
            },
            "final_url": {
              "description": "The URL actually read, after redirects.",
              "type": "string"
            },
            "from_cache": {
              "description": "`true` when this answer was served from a stored result rather than computed now.",
              "type": "boolean"
            },
            "page_from_cache": {
              "description": "`true` when the page text came from a stored copy (fresh enough for `max_age_seconds`).",
              "type": "boolean"
            },
            "page_truncated": {
              "description": "`true` when the page was longer than the amount of text the answer is based on.",
              "type": "boolean"
            },
            "remaining_issues": {
              "description": "Every schema violation that could not be corrected.",
              "items": true,
              "type": "array"
            },
            "retrieved_at": {
              "description": "When the page was read to build this answer (UTC).",
              "type": "string"
            },
            "stale_page": {
              "description": "`true` when the page could not be refreshed and an older stored copy was used.",
              "type": "boolean"
            },
            "title": {
              "description": "The page title, when one could be extracted.",
              "type": [
                "string",
                "null"
              ]
            },
            "url": {
              "description": "The URL that was requested.",
              "type": "string"
            },
            "valid": {
              "description": "Whether `data` satisfies `schema` after correction; absent when no schema was given.",
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          "required": [
            "url",
            "final_url",
            "data",
            "applied_fixes",
            "remaining_issues",
            "page_truncated",
            "retrieved_at",
            "age_seconds",
            "from_cache",
            "page_from_cache",
            "stale_page"
          ],
          "title": "GetStructuredDataResponse",
          "type": "object"
        },
        "type": {
          "const": "json"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}