AgentBIT
← all tools

Structured Data Extract

Structured-data extraction for agents that need facts, not prose. Most pages carry a machine-readable self-description that text scrapers throw away: schema.org JSON-LD (products with prices, articles with authors and dates, organizations, events, recipes, job postings), OpenGraph and Twitter Card metadata, the canonical URL, hreflang language alternates and advertised RSS/Atom feeds. This tool fetches the page (SSRF-guarded, size-capped) and returns all of it as clean JSON: up to 20 JSON-LD blocks decoded and their schema @types summarized, og:* and twitter:* maps, title, meta description, first H1, canonical, hreflang map and feed links. Use it to read product data without parsing HTML, to verify what a page claims to be before citing it, to find a site's feeds for monitoring (pairs with feed-read), or as the structured layer on top of web-extract's clean text.

$0.01
USDC per call · x402
Endpoint
POST /v1/web/structured
MCP name
agentbit.structured_extract
Status
active
Latency / uptime (7d)
— ms · 0%

Call with x402

1. Send the request. 2. Receive 402 with accepts[]. 3. Sign the payment and retry with the X-PAYMENT header.

curl -X POST https://agentbit.app/v1/web/structured \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://agentbit.app/blog"}'

Input schema

{
    "type": "object",
    "properties": {
        "url": {
            "type": "string",
            "description": "Absolute http(s) URL of the page"
        }
    },
    "required": [
        "url"
    ]
}

Output schema

{
    "type": "object",
    "properties": {
        "url": {
            "type": "string"
        },
        "title": {
            "type": [
                "string",
                "null"
            ]
        },
        "description": {
            "type": [
                "string",
                "null"
            ]
        },
        "h1": {
            "type": [
                "string",
                "null"
            ]
        },
        "canonical": {
            "type": [
                "string",
                "null"
            ]
        },
        "schema_types": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "json_ld": {
            "type": "array"
        },
        "open_graph": {
            "type": [
                "object",
                "null"
            ]
        },
        "twitter_card": {
            "type": [
                "object",
                "null"
            ]
        },
        "hreflang": {
            "type": [
                "object",
                "null"
            ]
        },
        "feeds": {
            "type": [
                "array",
                "null"
            ]
        },
        "counts": {
            "type": "object"
        }
    }
}

Code examples

// JavaScript (x402-fetch)
import { wrapFetchWithPayment } from "x402-fetch";
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);
const r = await fetchWithPay("https://agentbit.app/v1/web/structured", {
  method: "POST",
  headers: {"Content-Type": "application/json"},
  body: JSON.stringify({"url":"https://agentbit.app/blog"})
});
console.log(await r.json());
# Python (x402 client)
from x402.clients.requests import x402_requests
s = x402_requests(account)
r = s.post("https://agentbit.app/v1/web/structured",
  json={"url":"https://agentbit.app/blog"})
print(r.json())
// PHP
$r = Http::withHeaders(['X-PAYMENT' => $signedPayment])
  ->post('https://agentbit.app/v1/web/structured',
    array (
  'url' => 'https://agentbit.app/blog',
));
$data = $r->json();