Catalog
Updated:
The catalog lists everything you can buy: products, countries, periods, unit prices, the current terms and the protocol parameters. No authorization is needed.
Prices in the catalog are for reference. The binding price is only the amount in the 402 response for your exact order.
Query parameters
Name | Type | Description |
|---|---|---|
product | String | Optional. Return only this product, for example |
Caching
The catalog is rebuilt every 5 minutes. The response has Cache-Control: public, max-age=300 and ETag: "<catalog_version>"; send If-None-Match with this value to get 304 Not Modified. With ?product=P the ETag is "<catalog_version>:P".
Response
Name | Type | Description |
|---|---|---|
generated_at | String | When the catalog was built |
catalog_version | String | Changes only when the content changes |
currency | Object |
|
terms | Object |
|
intended_use | Object |
|
products | Array | Product blocks, see below |
product_guide | Object | A short description of every product and |
protocol | Object |
|
Only products that can be bought right now are published. A product that is missing from the catalog cannot be ordered.
Product blocks
Name | Type | Description |
|---|---|---|
product | String |
|
display_name, description | String | Human-readable name and description |
attributes | Object |
|
suitable_for | Array | Recommended purposes |
countries | Array |
|
options | Array | Always empty |
The same block for IPv4_UPTIME and ISP_UPTIME, with display_name ending in 100% uptime and attributes.uptime: true, attributes.gateways: true, auth_methods: ["userpass"]. Only countries and periods where 100% Uptime is available are listed.
Name | Type | Description |
|---|---|---|
product | String |
|
attributes | Object |
|
traffic_tiers | Array |
|
connection | Object | Hosts, ports, protocols and the login suffix syntax for geo targeting and sessions (without credentials) |
locations_url | String | Where to look up regions, cities and ISPs, when available |
Name | Type | Description |
|---|---|---|
product | String |
|
attributes | Object | Also |
options | Array | Descriptions of the line options: |
countries | Array |
|
Name | Type | Description |
|---|---|---|
product | String |
|
distribution | String | How addresses are split between the countries of a package |
packages | Array |
|
Example
https://proxy-seller.com/api/x402/v1/catalog?product=IPv4{
"generated_at": "2026-11-02T10:00:44Z",
"catalog_version": "df92823171697caa9dc15a42",
"currency": {
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"network": "eip155:8453",
"decimals": 6
},
"terms": {
"offer_version": "2026-07-01",
"offer_url": "https://proxy-seller.com/terms-of-service",
"privacy_version": "2026-07-01",
"privacy_url": "https://proxy-seller.com/privacy-policy",
"aup_summary": ["no CSAM", "no DDoS", "no spam", "no credential stuffing"],
"on_expiry": "access is disabled on the expiry date, no grace period",
"refund_policy": "no refund on AUP suspension"
},
"intended_use": {
"required": true,
"allowed": [
{ "value": "web-scraping", "label": "Web scraping / data collection" },
{ "value": "price-monitoring", "label": "Price and marketplace monitoring" },
{ "value": "seo-monitoring", "label": "SERP and SEO monitoring" },
{ "value": "ads-verification", "label": "Ad verification" }
]
},
"products": [
{
"product": "IPv4",
"display_name": "Dedicated IPv4",
"description": "Dedicated datacenter IPv4 address, not shared.",
"attributes": {
"dedicated": true,
"rotating": false,
"ip_version": 4,
"asn_type": "datacenter",
"protocols": ["http", "https", "socks5"],
"auth_methods": ["userpass", "ip"],
"min_quantity": 1
},
"suitable_for": ["web-scraping", "price-monitoring", "seo-monitoring"],
"countries": [
{
"country": "US",
"periods": [
{ "days": 7, "unit_price_usd": "0.90", "unit_price_atomic": "900000" },
{ "days": 30, "unit_price_usd": "1.80", "unit_price_atomic": "1800000" },
{ "days": 60, "unit_price_usd": "3.49", "unit_price_atomic": "3490000" }
]
}
],
"options": []
}
],
"product_guide": {
"IPv4": "Cheapest dedicated option with the highest throughput, easiest to detect. Best for tolerant targets.",
"recommendation_by_use": { "web-scraping": ["ISP", "MIX_ISP", "IPv4", "MIX", "RESIDENT", "MOBILE"] }
},
"protocol": {
"x402_versions": [2],
"schemes": ["exact"],
"networks": [
{
"network": "eip155:8453",
"assets": ["0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"],
"asset_transfer_methods": ["eip3009"],
"payment_flow": "upfront"
}
],
"extensions": ["bazaar"],
"quote_ttl_seconds": 900,
"max_timeout_seconds": 900,
"poll": { "default_interval_seconds": 10, "max_wait_seconds": 1800 },
"rate_limits": { "unpaid_orders_per_min": 30 }
}
}Unknown product
{
"error": "invalid_request",
"message": "Request is invalid",
"retryable": false,
"retry_action": "abandon",
"detail": "/product: unknown product, see /catalog"
}The catalog is being built right after a restart. Retry after Retry-After seconds.
Notes
Unit prices are calculated at the minimum quantity of a product. Volume discounts are not shown in the catalog; they are applied in the
402price.The catalog has no stock information. If addresses run out, it becomes known only after the payment; see Get order.