# netintel.dev Table Extractor

> netintel.dev Table Extractor is a paid API for AI agents from netintel.dev, paid per call via x402, $0.02/call, status unknown (last checked 2026-09-13).

Extracts structured table data from a webpage or document and returns rows, columns, and cell values as JSON

## Facts

- Endpoint: POST https://netintel.dev/extract/table
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/netintel-dev-table-extractor-a3bb2d05
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_pYDPuT8rGnx1pvcE092pm

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 netintel-dev-table-extractor-a3bb2d05 -d '<json body>'
```

Example prompt: Pull the pricing table from this product comparison page and give me the rows and columns as structured data: https://example.com/pricing

## When to prefer this

Use this endpoint when you need to extract structured tabular data from a webpage or HTML document and get back clean, machine-readable rows and columns. Prefer it over generic scraping when you specifically need table contents as JSON with quality grading. Best for pricing tables, comparison grids, data tables, or any HTML <table> element on a page.

## Known failure modes

- No table found on the page — returns empty rows/columns with a low score
- Invalid or unreachable URL — returns an error response
- Page requires JavaScript rendering that the extractor cannot handle
- Table is image-based (not HTML) and cannot be parsed
- Payment not sent or insufficient — returns HTTP 402 before processing

## How this service works

Extract tabular data from messy text or HTML using Claude Haiku — detects columns and rows in unstructured content and returns clean structured JSON (columns + rows) so agents can turn pasted tables, HTML tables, and delimited text into usable data in one call.

## Output

Returns a JSON object with a quality grade (e.g. 'A') and numeric score (0–100), plus a 'table' object containing an array of column names, a row count, a column count, and an array of row objects with key-value pairs for each cell. Also includes a 'cached' boolean and a 'findings' array for any extraction notes or warnings.

## 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",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "object",
     "required": [
      "text"
     ],
     "properties": {
      "text": {
       "type": "string",
       "description": "The messy text or HTML containing tabular data to extract. Max 10000 words or 50KB. Aliases also accepted: content, html, csv, table, markdown, data."
      }
     }
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "grade": {
       "type": "string",
       "description": "Letter grade A-F"
      },
      "score": {
       "type": "number",
       "description": "Quality score 0-100"
      },
      "table": {
       "type": "object",
       "description": "Parsed table: columns (array of column names), rows (array of objects keyed by column name), and row_count (number of rows). Empty columns/rows with row_count 0 when no tabular structure is detected."
      },
      "cached": {
       "type": "boolean",
       "description": "True if served from the in-memory cache."
      },
      "findings": {
       "type": "array",
       "items": {
        "type": "string"
       },
       "description": "Informational findings (e.g. no_table_found, count_mismatch)."
      },
      "column_count": {
       "type": "number",
       "description": "Number of columns detected."
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "grade": "A",
  "score": 100,
  "table": {
   "rows": [
    {
     "qty": "10",
     "price": "5.00",
     "product": "Widget A"
    },
    {
     "qty": "4",
     "price": "7.50",
     "product": "Widget B"
    }
   ],
   "columns": [
    "product",
    "price",
    "qty"
   ],
   "row_count": 2
  },
  "cached": false,
  "findings": [],
  "column_count": 3
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/netintel-dev-table-extractor-a3bb2d05/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from netintel.dev](https://www.zero.xyz/host/netintel.dev/llms.txt)
