mirrored listing x402 eip155:8453solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpeip155:5042

Paid IP intelligence endpoint returning normalized geolocation and ASN data for a single I

Paid IP intelligence endpoint returning normalized geolocation and ASN data for a single IPv4 or IPv6 address.

Do you run ip402.xyz? This listing was mirrored from Coinbase's public Bazaar. Claim it in 30 seconds — no account required — and it becomes verified, permanently overriding the mirrored copy.

Claim this listing
10000 (raw units)
price
5
calls / 30d
5
unique payers
2026-09-17
updated

Provider

ip402.xyz · discovered, not yet claimed by its owner

Payment (x402 accepts[])

[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "payTo": "0xEd617F79201248Df99909fBde4269b6EEAEE39B6",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "10000",
    "maxTimeoutSeconds": 30
  },
  {
    "scheme": "exact",
    "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
    "payTo": "7Cd8FJ6hCKKTphtj2oDNQrevkMc4CcHCuLNWkw38so6Q",
    "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": "10000",
    "maxTimeoutSeconds": 30
  },
  {
    "scheme": "exact",
    "network": "eip155:5042",
    "payTo": "0xEd617F79201248Df99909fBde4269b6EEAEE39B6",
    "asset": "0x3600000000000000000000000000000000000000",
    "amount": "10000",
    "maxTimeoutSeconds": 604900
  }
]

Output schema

{
  "bazaar": {
    "info": {
      "input": {
        "method": "GET",
        "queryParams": {
          "ip": "8.8.8.8",
          "lang": "en"
        },
        "type": "http"
      },
      "output": {
        "example": {
          "data_source": {
            "build_epoch": 1760000000,
            "edition": "city+asn",
            "provider": "ip402"
          },
          "geo": {
            "continent": {
              "code": "NA",
              "name": "North America"
            },
            "country": {
              "iso_code": "US",
              "name": "United States"
            },
            "location": {
              "accuracy_radius_km": 1000,
              "latitude": 37.751,
              "longitude": -97.822,
              "time_zone": "America/Chicago"
            }
          },
          "ip": "8.8.8.8",
          "ip_version": 4,
          "network": {
            "asn": 15169,
            "organization": "Google LLC"
          },
          "resolution_status": "ok",
          "schema_version": 2,
          "scope": "public"
        },
        "type": "json"
      }
    },
    "schema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "input": {
          "additionalProperties": false,
          "properties": {
            "method": {
              "enum": [
                "GET"
              ],
              "type": "string"
            },
            "queryParams": {
              "additionalProperties": false,
              "properties": {
                "bundle": {
                  "description": "Optional: pay n x $0.01 once (2 <= n <= 100) and receive n lookup credits (1 hour TTL) bound to the paying wallet, spendable via SIWX signatures. Example: bundle=5 costs $0.05.",
                  "examples": [
                    5
                  ],
                  "type": "integer"
                },
                "ip": {
                  "description": "IPv4 or IPv6 address to classify and enrich.",
                  "examples": [
                    "8.8.8.8",
                    "2001:4860:4860::8888"
                  ],
                  "type": "string"
                },
                "lang": {
                  "default": "en",
                  "description": "Optional response language for localized GeoIP names.",
                  "examples": [
                    "en",
                    "zh-CN"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "ip"
              ],
              "type": "object"
            },
            "type": {
              "const": "http",
              "type": "string"
            }
          },
          "required": [
            "type",
            "method"
          ],
          "type": "object"
        },
        "output": {
          "properties": {
            "example": {
              "properties": {
                "data_source": {
                  "type": "object"
                },
                "geo": {
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "ip": {
                  "type": "string"
                },
                "ip_version": {
                  "type": "integer"
                },
                "network": {
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "resolution_status": {
                  "type": "string"
                },
                "schema_version": {
                  "type": "integer"
                },
                "scope": {
                  "type": "string"
                }
              },
              "required": [
                "schema_version",
                "ip",
                "ip_version",
                "scope",
                "resolution_status",
                "data_source",
                "geo",
                "network"
              ],
              "type": "object"
            },
            "type": {
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "type": "object"
        }
      },
      "required": [
        "input"
      ],
      "type": "object"
    }
  }
}

Use it

curl

curl "https://ip402.xyz/v1/geo"
# -> 402 Payment Required, accepts[] lists how to pay
# retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid

JavaScript

const res = await fetch("https://ip402.xyz/v1/geo");
if (res.status === 402) {
  const { accepts } = await res.json();
  // pay one of accepts[] via an x402 client, then retry with the payment header
}

Python

import httpx
res = httpx.get("https://ip402.xyz/v1/geo")
if res.status_code == 402:
    accepts = res.json()["accepts"]
    # pay one of accepts[] via an x402 client, then retry with the payment header

Machine-readable

Everything on this page is also available as clean JSON at /resources/7321.json, and this resource appears in /discovery/resources and /discovery/search.