# AgentFeed Structured Data Extraction

> AgentFeed Structured Data Extraction is a paid API for AI agents from x402.ochinimus.app, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-19).

Fetches a web page or PDF at a given URL and extracts user-defined structured fields as JSON using an AI model

## Facts

- Endpoint: GET https://x402.ochinimus.app/api/extract?utm_source=zero.xyz
- Price: $0.025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-19
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agentfeed-structured-data-extraction-e3eb9706
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_zNdaFog-YNZ5Yk-EM5_tA

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 agentfeed-structured-data-extraction-e3eb9706
```

Example prompt: Fetch the page at https://example.com/product/42 and extract the title, price, and release date for me — return them as structured data.

## When to prefer this

Choose this endpoint when you need to extract specific named fields from any publicly accessible web page or PDF URL and receive them as typed, structured JSON — especially when you don't want to write custom scrapers or parse raw HTML. It is distinct from general web search (no search query needed, you already have the URL) and from summarization (you get discrete fields, not prose). Ideal for product data extraction, document parsing, and lead enrichment workflows where the schema is known upfront.

## Known failure modes

- URL is unreachable or returns non-200 status — extraction fails with an error
- PDF or page exceeds character limit — response is truncated (truncated: true, pct_read < 100)
- Schema fields cannot be found in the page content — returned as null_fields
- Invalid URL format — request rejected
- Schema definition exceeds 20 fields or 2 KB limit — request rejected
- Payment not completed (x402 flow incomplete) — 402 response returned

## How this service works

Structured extraction: JSON for a schema of up to 20 fields (string, number, boolean, date, string[]), with null for anything the document does not state, never an invented value. Use when you need to answer: What are these fields on this page or PDF, as JSON?

## Output

A JSON response containing a 'data' object with the extracted fields matching the user-defined schema, plus metadata: the AI model used, whether the result was cached, percentage of the page read, character counts, the final resolved URL, a list of fields that were null, and a 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",
     "required": [
      "url",
      "schema"
     ],
     "properties": {
      "url": {
       "type": "string",
       "description": "the page or PDF: an absolute http or https URL"
      },
      "schema": {
       "type": "string",
       "description": "JSON object of field name to type, e.g. {\"title\":\"string\",\"price\":\"number\",\"released\":\"date\"}; up to 20 fields and 2 KB"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "data": {
       "type": "object",
       "properties": {
        "data": {
         "type": "object"
        },
        "kind": {
         "type": "string"
        },
        "model": {
         "type": "string"
        },
        "title": {
         "type": "string"
        },
        "cached": {
         "type": "boolean"
        },
        "pct_read": {
         "type": "number"
        },
        "final_url": {
         "type": "string"
        },
        "truncated": {
         "type": "boolean"
        },
        "chars_read": {
         "type": "number"
        },
        "fetched_at": {
         "type": "string"
        },
        "source_url": {
         "type": "string"
        },
        "chars_total": {
         "type": "number"
        },
        "null_fields": {
         "type": "array"
        },
        "verbatim_fields": {
         "type": "array"
        },
        "tokens_estimated": {
         "type": "number"
        }
       }
      },
      "paid": {
       "type": "boolean"
      },
      "tool": {
       "type": "string"
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": {
   "data": {
    "title": "Example Domain",
    "contact_email": null
   },
   "kind": "html",
   "model": "gemini-3.1-flash-lite",
   "title": "Example Domain",
   "cached": false,
   "pct_read": 100,
   "final_url": "https://example.com/",
   "truncated": false,
   "chars_read": 156,
   "fetched_at": "2026-10-14T06:27:40.974Z",
   "source_url": "https://example.com/",
   "chars_total": 156,
   "null_fields": [
    "contact_email"
   ],
   "verbatim_fields": [],
   "tokens_estimated": 45
  },
  "paid": true,
  "tool": "get_extract"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agentfeed-structured-data-extraction-e3eb9706/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.ochinimus.app](https://www.zero.xyz/host/x402.ochinimus.app/llms.txt)
