# Scrooge x402 Structured Data Extractor (GET)

> Scrooge x402 Structured Data Extractor (GET) is a paid API for AI agents from scrooge-x402-tool-mill.vercel.app, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-11).

Fetches a public URL and returns its structured semantic data including JSON-LD, Open Graph tags, schema.org types, and normalized entities, paid via x402 micropayment at $0.01 USDC per call.

## Facts

- Endpoint: GET https://scrooge-x402-tool-mill.vercel.app/v1/structured-data?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/scrooge-x402-structured-data-extractor-get-8cf9c9f9
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_YlJ6Ysfs1Z8nxr9ywmLf3

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 scrooge-x402-structured-data-extractor-get-8cf9c9f9
```

Example prompt: Can you pull the structured semantic data from https://www.rei.com/product/12345 — I want the JSON-LD nodes, schema.org types, Open Graph tags, and any normalized product or organization entities on the page?

## When to prefer this

Choose this endpoint when you need machine-readable semantic metadata from a public webpage — specifically JSON-LD, schema.org typed entities, and Open Graph data — without needing an API key. Prefer it over generic scraping endpoints when your goal is structured/semantic extraction (products, articles, events, organizations) rather than raw HTML or readable text. The GET alias is convenient for simple single-URL lookups; use the POST workhorse for more complex integration patterns.

## Known failure modes

- 402 Payment Required if x402 payment challenge is not satisfied
- Private, link-local, or SSRF-unsafe URLs are blocked and return an error
- Pages with no structured data return empty arrays/objects for types, entities, jsonLd
- Redirects to paywalled or bot-blocked pages may return incomplete data
- Pages exceeding 64 KB of JSON-LD are trimmed silently

## How this service works

Extract schema.org structured data from a public HTML page: JSON-LD (@graph flattened), top-level microdata, and Open Graph / Twitter meta. Normalizes Product/Offer, Article, Organization, Event, FAQ, and breadcrumbs. POST JSON {"url":"https://example.com"}. No structured data is HTTP 200 with empty arrays, not an error. Public http(s) only. $0.01 USDC on Base (eip155:8453). No API key.

## Output

Returns a JSON object with: url (input URL), finalUrl (after redirects), types (unique schema.org @type values found), entities (normalized Product/Article/Organization/Event/FAQ/breadcrumb facts), jsonLd (raw JSON-LD nodes trimmed to under 64 KB), openGraph (key-value Open Graph properties), counts (number of JSON-LD and microdata items), and fetchedAt (ISO timestamp of when the page was fetched).

## 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"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "url": {
       "type": "string",
       "format": "uri",
       "description": "Public http(s) URL to fetch (SSRF-safe; private/link-local blocked)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "url",
      "finalUrl",
      "types",
      "entities",
      "jsonLd",
      "openGraph",
      "counts",
      "fetchedAt"
     ],
     "properties": {
      "url": {
       "type": "string",
       "format": "uri"
      },
      "types": {
       "type": "array",
       "items": {
        "type": "string"
       },
       "description": "Unique schema.org @type values"
      },
      "counts": {
       "type": "object",
       "required": [
        "jsonLd",
        "microdata"
       ],
       "properties": {
        "jsonLd": {
         "type": "integer",
         "minimum": 0
        },
        "microdata": {
         "type": "integer",
         "minimum": 0
        }
       },
       "additionalProperties": false
      },
      "jsonLd": {
       "type": "array",
       "items": {},
       "description": "Raw JSON-LD nodes, trimmed so the body stays under 64 KB"
      },
      "entities": {
       "type": "array",
       "items": {
        "type": "object",
        "additionalProperties": true
       },
       "description": "Normalized Product, Article, Organization, Event, FAQ, or breadcrumb facts"
      },
      "finalUrl": {
       "type": "string",
       "format": "uri",
       "description": "Final URL after redirects"
      },
      "fetchedAt": {
       "type": "string",
       "format": "date-time"
      },
      "openGraph": {
       "type": "object",
       "additionalProperties": true
      }
     },
     "additionalProperties": false
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/scrooge-x402-structured-data-extractor-get-8cf9c9f9/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from scrooge-x402-tool-mill.vercel.app](https://www.zero.xyz/host/scrooge-x402-tool-mill.vercel.app/llms.txt)
