{"openapi":"3.1.0","info":{"title":"Geo402","version":"3.0.0","description":"Geo web fetch for AI agents: public pages from residential IPs in 190+ countries, paid per page via x402 v2 (USDC on Base).","x-guidance":"Call /api/fetch with url (+ optional country, format) without payment to get the price (402 + PAYMENT-REQUIRED header), then retry with a signed payment. $0.005 per page, charged only if the page loads. Use /api/fetch/check (free) first for unfamiliar sites. Public pages only; robots.txt respected; no CAPTCHA solving.","contact":{"name":"Geo402","url":"https://geo402.com","email":"abuse@geo402.com"}},"servers":[{"url":"https://geo402.com"}],"x-agentcash-guidance":{"llmsTxtUrl":"https://geo402.com/llms.txt"},"paths":{"/api/fetch":{"get":{"operationId":"getFetch","summary":"Fetch a public page from a residential IP in a country","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"example":"https://example.com","description":"Public http(s) page to fetch."},{"name":"country","in":"query","required":false,"schema":{"type":"string"},"example":"de","description":"2-letter country code for the residential exit IP (us, de, jp, ...). Default: any."},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["markdown","text","html"]},"example":"markdown","description":"markdown (default, clean for LLMs), text, or raw html."}],"responses":{"200":{"description":"Page content","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"final_url":{"type":"string"},"country":{"type":"string"},"status":{"type":"integer"},"content_type":{"type":"string"},"bytes":{"type":"integer"},"truncated":{"type":"boolean"},"title":{"type":"string"},"format":{"type":"string"},"content":{"type":"string"},"fetched_at":{"type":"string"}}},"example":{"url":"https://example.com/","final_url":"https://example.com/","country":"de","status":200,"content_type":"text/html","bytes":1256,"truncated":false,"title":"Example Domain","format":"markdown","content":"Example Domain\n==============\n\nThis domain is for use in illustrative examples in documents...","fetched_at":"2026-10-27T02:00:00.000Z"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"403":{"description":"Not allowed: blocked service, sign-in page, robots.txt or blocked wallet (not charged)"},"415":{"description":"Not a web page (not charged)"},"424":{"description":"The site blocked, challenged or errored (not charged)"},"429":{"description":"Rate limit (not charged); see Retry-After"},"502":{"description":"Site unreachable (not charged)"}}},"post":{"operationId":"postFetch","summary":"Fetch a public page from a residential IP in a country","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public http(s) page to fetch."},"country":{"type":"string","description":"2-letter country code for the residential exit IP (us, de, jp, ...). Default: any."},"format":{"type":"string","enum":["markdown","text","html"],"description":"markdown (default, clean for LLMs), text, or raw html."}}},"example":{"url":"https://example.com","country":"de","format":"markdown"}}}},"responses":{"200":{"description":"Page content","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"final_url":{"type":"string"},"country":{"type":"string"},"status":{"type":"integer"},"content_type":{"type":"string"},"bytes":{"type":"integer"},"truncated":{"type":"boolean"},"title":{"type":"string"},"format":{"type":"string"},"content":{"type":"string"},"fetched_at":{"type":"string"}}},"example":{"url":"https://example.com/","final_url":"https://example.com/","country":"de","status":200,"content_type":"text/html","bytes":1256,"truncated":false,"title":"Example Domain","format":"markdown","content":"Example Domain\n==============\n\nThis domain is for use in illustrative examples in documents...","fetched_at":"2026-10-27T02:00:00.000Z"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"403":{"description":"Not allowed: blocked service, sign-in page, robots.txt or blocked wallet (not charged)"},"415":{"description":"Not a web page (not charged)"},"424":{"description":"The site blocked, challenged or errored (not charged)"},"429":{"description":"Rate limit (not charged); see Retry-After"},"502":{"description":"Site unreachable (not charged)"}}}},"/api/fetch/check":{"get":{"summary":"Check whether a URL is allowed (free)","security":[],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"}},{"name":"country","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Check whether a URL is allowed","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/sample/fetch":{"get":{"summary":"Sample fetch result (free)","security":[],"parameters":[],"responses":{"200":{"description":"Sample fetch result","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/countries":{"get":{"summary":"Country codes (free)","security":[],"parameters":[],"responses":{"200":{"description":"Country codes","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/health":{"get":{"summary":"Service health (free)","security":[],"parameters":[],"responses":{"200":{"description":"Service health","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/llms.txt":{"get":{"summary":"Guide for agents (free)","security":[],"parameters":[],"responses":{"200":{"description":"Guide for agents","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/.well-known/x402":{"get":{"summary":"x402 discovery document (free)","security":[],"parameters":[],"responses":{"200":{"description":"x402 discovery document","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}