# Geo402 Web Fetch

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

Fetch any public web page from a residential IP in a chosen country and return the content as markdown, text, or HTML, with automatic product price/currency/availability extraction.

## Facts

- Endpoint: GET https://geo402.com/api/fetch?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-31
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/geo402-web-fetch-62f0fe74
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_IeBlg7ZvYIsa6K4HGtCft

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 geo402-web-fetch-62f0fe74
```

Example prompt: Can you fetch the product page at https://www.zalando.de/adidas-sneaker-12345.html using a residential IP in Germany and give me the price, currency, and availability as markdown?

## When to prefer this

Choose this endpoint when you need to fetch a public web page as seen from a specific country using a residential IP — especially when geo-localized pricing, availability, or content differences matter. Ideal for e-commerce price monitoring across regions, verifying geo-restricted content, or retrieving clean LLM-ready markdown from any public URL. Prefer it over generic HTTP fetch tools when residential IP authenticity and geographic targeting are required. Use the free /api/fetch/check endpoint first to validate a URL before spending credits.

## Known failure modes

- Page behind login or paywall returns blocked/redirect content
- CAPTCHA-protected pages are not solved and may return incomplete content
- Pages exceeding 2 MB are truncated
- robots.txt disallowed pages return an error or empty response
- Invalid country code returns an error
- Payment or email service URLs are blocked and return an error
- Non-200 HTTP status codes (404, 500, etc.) are returned as-is in the status field

## How this service works

Geo web fetch for AI agents. Fetch any public web page from a residential IP in a chosen country (190+ countries, optional city or US state) as clean markdown, text or HTML, with the product price/currency/availability extracted automatically when the page has product data. $0.005 per page, only charged when the page loads. Respects robots.txt; no CAPTCHA solving; sign-in, payment and email services are blocked. Up to 2 MB per page. Check a URL free first: /api/fetch/check

## Output

A JSON object containing the fetched page content (as markdown, text, or HTML), page title, HTTP status code, final URL after redirects, byte count, content type, fetch timestamp, country used, truncation flag, and — when the page contains product data — extracted price, currency, and availability fields.

## 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"
     ],
     "properties": {
      "url": {
       "type": "string",
       "description": "Public http(s) page to fetch."
      },
      "city": {
       "type": "string",
       "description": "Optional city for the exit IP (needs country), e.g. berlin. +$0.005 per page."
      },
      "state": {
       "type": "string",
       "description": "Optional US state for the exit IP (country=us), e.g. texas. +$0.005 per page."
      },
      "format": {
       "enum": [
        "markdown",
        "text",
        "html"
       ],
       "type": "string",
       "description": "markdown (default, clean for LLMs), text, or raw html."
      },
      "country": {
       "type": "string",
       "description": "2-letter country code for the residential exit IP (us, de, jp, ...). Default: any."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://example.com/",
  "bytes": 1256,
  "title": "Example Domain",
  "format": "markdown",
  "status": 200,
  "content": "Example Domain\n==============\n\nThis domain is for use in illustrative examples in documents...",
  "country": "de",
  "final_url": "https://example.com/",
  "truncated": false,
  "fetched_at": "2026-10-27T02:00:00.000Z",
  "content_type": "text/html"
 }
}
```

## More

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