# Web Page Scraper with Structured JSON Extraction

> Web Page Scraper with Structured JSON Extraction is a paid API for AI agents from app-446.hdgregory.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-16).

Scrapes one or more URLs and returns structured JSON containing title, meta tags, headings, paragraphs, links, tables, extracted emails, phone numbers, and word counts.

## Facts

- Endpoint: POST https://app-446.hdgregory.com/run?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/web-page-scraper-with-structured-json-extraction-e8b60caf
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_z6zFZuv1v5-gRSVBSFI3t

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 web-page-scraper-with-structured-json-extraction-e8b60caf -d '<json body>'
```

Example prompt: Scrape https://example.com/about and give me all the emails, phone numbers, headings, and links you find on the page as structured JSON.

## When to prefer this

Choose this endpoint when you need structured extraction of multiple content types (text, links, contact info, tables, meta) from a webpage in a single call, especially when batch scraping multiple URLs or when you need retry logic and anti-detection headers built in. Prefer over simpler fetch tools when you need contact information (emails, phone numbers) or table records automatically parsed out.

## Known failure modes

- URL is unreachable or returns a non-200 status after retries — error string returned in result.errors
- Malformed or non-HTTP URL provided — validation error returned
- Target page uses JavaScript rendering and content is not available in raw HTML — partial or empty parse result
- Rate limiting or bot detection by target site despite anti-detection headers — fetch failure or incomplete content
- Timeout exceeded for slow-loading pages — partial result or error after configured timeout

## How this service works

Scrapes a URL and returns structured JSON: title, meta tags, headings, paragraphs, links, tables, extracted emails and phone numbers, and word counts. Accepts a single 'url' or a list of 'urls' for batch scraping. Includes retry logic and anti-detection headers.

## Output

Returns a JSON object with a success flag and a result object containing: fetch metadata, parsed content (title, meta tags, headings, paragraphs, links, tables), extracted entities (emails, phone numbers), word counts, a schema version string, and any errors encountered during scraping.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "description": "Single URL to scrape (required unless 'urls' given)"
  },
  "urls": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "List of URLs for batch mode instead of 'url'"
  },
  "timeout": {
   "type": "integer",
   "description": "Fetch timeout in seconds (default 15)"
  },
  "max_retries": {
   "type": "integer",
   "description": "Fetch retry attempts (default 3)"
  },
  "delay_between": {
   "type": "number",
   "description": "Delay in seconds between requests, batch mode only (default 1.0)"
  },
  "normalize_links": {
   "type": "boolean",
   "description": "Resolve relative links to absolute URLs (default true)"
  },
  "extract_tables_as_records": {
   "type": "boolean",
   "description": "Convert HTML tables to key/value records (default true)"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/web-page-scraper-with-structured-json-extraction-e8b60caf/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from app-446.hdgregory.com](https://www.zero.xyz/host/app-446.hdgregory.com/llms.txt)
