# serp402 Web Extract API

> serp402 Web Extract API is a paid API for AI agents from serp402.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-31).

Scrapes, maps, or crawls web pages and returns structured JSON content including markdown, HTML, metadata, and links

## Facts

- Endpoint: POST https://serp402.com/api/v1/extract?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-31
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/serp402-web-extract-api-d061e8c8
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_PUuFVe8AcoK7FBX1wyZ11

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 serp402-web-extract-api-d061e8c8 -d '<json body>'
```

Example prompt: Scrape the article content from https://example.com/article/2024-review as markdown, using desktop mode, and give me the structured JSON result with nav and footer removed.

## When to prefer this

Choose this endpoint when you need raw or structured page content from any public URL without setting up API keys or accounts, especially for one-off or low-volume scraping tasks billed per-call in USDC. Ideal for agents that need to fetch, map, or crawl web content programmatically and want markdown output alongside JSON. Prefer alternatives with JavaScript rendering if the target page is heavily JS-dependent.

## Known failure modes

- Invalid or unreachable URL returns an error with no content
- Timeout exceeded (default 30s) if the server is slow to respond
- JavaScript-rendered content not captured since the API does not execute JS
- CSS selector typos in include_tags or exclude_tags silently match nothing
- max_pages limit reached before full site is crawled
- Payment failure if USDC balance is insufficient

## How this service works

Extract: Extract results, returned as JSON. Structured JSON, USD 0.05 per call in USDC — no API key, no account, no subscription, no minimum. Not affiliated with, endorsed by or an official channel of any of the services the results come from. All trademarks and copyright remain the property of their respective owners.

## Output

Returns structured JSON containing the extracted page content, optionally including markdown text, raw HTML, links, metadata, and for crawl/map modes a list of discovered URLs — one record per page fetched.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "description": "URL of the page to extract. It must be an absolute http or https URL."
  },
  "mode": {
   "type": "string",
   "description": "extraction mode. It can be set to: scrape (default) - Extract a single page. map - List the website's URLs from the page links and sitemaps. crawl - Follow…"
  },
  "device": {
   "type": "string",
   "description": "device to use to get the results. It can be set to desktop (default) to use a regular browser, tablet to use a tablet browser (currently using iPads), or…"
  },
  "timeout": {
   "type": "string",
   "description": "HTTP request timeout in milliseconds (1,000–120,000). Default: 30,000 (30 seconds)."
  },
  "max_depth": {
   "type": "string",
   "description": "Used with mode=crawl . Parameter defines how many links deep the crawl follows from the starting page. 0 extracts only the starting page. Default: 2 .…"
  },
  "max_pages": {
   "type": "string",
   "description": "Used with mode=crawl . Parameter defines the maximum number of pages to extract, including the starting page. Default: 10 . Maximum: 100 . Each successfully…"
  },
  "exclude_tags": {
   "type": "string",
   "description": "a comma-separated list of CSS selectors to remove before parsing, e.g. nav, footer, .ads, #cookie-banner ."
  },
  "include_tags": {
   "type": "string",
   "description": "a comma-separated list of CSS selectors to keep, e.g. article, main, .post-content . Everything else inside is removed before parsing."
  },
  "prefetch_delay": {
   "type": "string",
   "description": "a delay in milliseconds before the first page is fetched (0–10,000). Default: 0 . The Extract API doesn't run JavaScript, so this is not a rendering delay."
  },
  "include_sitemap": {
   "type": "string",
   "description": "Used with mode=map . Parameter defines whether to also read the website's sitemaps, from /sitemap.xml and /robots.txt . Default: true ."
  },
  "include_markdown": {
   "type": "string",
   "description": "whether to add the page's main content as Markdown in text_content.markdown . Default: false ."
  },
  "include_subdomains": {
   "type": "string",
   "description": "Used with mode=map and mode=crawl . Parameter defines whether to include other subdomains of the same website, e.g. blog.example.com when starting from…"
  },
  "include_inline_assets": {
   "type": "string",
   "description": "whether to include inline and blocks, with their content, in s
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/serp402-web-extract-api-d061e8c8/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from serp402.com](https://www.zero.xyz/host/serp402.com/llms.txt)
