Global business directory for agents (any city in the world; unknown cities are seeded on
Global business directory for agents (any city in the world; unknown cities are seeded on demand). Search by city, country, category, text or proximity; every result carries a dated verification score (0-100), level (unverified/listed/corroborated/verified/owner_verified) and, on request, the evidence behind it. Open data + live checks + owner claims, never scraped review sites.
5000 (raw units)
price
4
calls / 30d
1
unique payers
2026-09-09
updated
Provider
toll402.dev · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x318d34fa0bd69eff17fac648d2df8cf7a88b3dbe",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "5000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"body": {
"category": "dentist",
"cityKey": "cdmx",
"limit": 5,
"minLevel": "corroborated"
},
"bodyType": "json",
"method": "POST",
"type": "http"
},
"output": {
"example": {
"items": [
{
"category": "dentist",
"contact": {
"phone": "+5255...",
"website": "https://..."
},
"id": "osm:node/123",
"location": {
"city": "Ciudad de México"
},
"name": "Clínica Dental Roma",
"verification": {
"lastVerifiedAt": "2026-09-07T00:00:00Z",
"level": "corroborated",
"score": 68
}
}
],
"total": 120
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"category": {
"description": "One of: restaurant, cafe, bar, bakery, hotel, travel, car_rental, pharmacy, clinic, dentist, veterinary, optician, lawyer, notary, accountant, insurance, real_estate, architect, it_services, company, marketing, consulting, finance, coworking, recruiting, logistics, engineering, bank, atm, school, museum, entertainment, gym, salon, supermarket, hardware, electronics, clothing, jewelry, furniture, bookstore, florist, pet, sports, gifts, department_store, auto, laundry, printing, trades, post, government, religion, childcare, other",
"enum": [
"restaurant",
"cafe",
"bar",
"bakery",
"hotel",
"travel",
"car_rental",
"pharmacy",
"clinic",
"dentist",
"veterinary",
"optician",
"lawyer",
"notary",
"accountant",
"insurance",
"real_estate",
"architect",
"it_services",
"company",
"marketing",
"consulting",
"finance",
"coworking",
"recruiting",
"logistics",
"engineering",
"bank",
"atm",
"school",
"museum",
"entertainment",
"gym",
"salon",
"supermarket",
"hardware",
"electronics",
"clothing",
"jewelry",
"furniture",
"bookstore",
"florist",
"pet",
"sports",
"gifts",
"department_store",
"auto",
"laundry",
"printing",
"trades",
"post",
"government",
"religion",
"childcare",
"other"
],
"type": "string"
},
"city": {
"description": "City label, e.g. 'Ciudad de México'",
"maxLength": 80,
"type": "string"
},
"cityKey": {
"description": "Coverage key, e.g. 'cdmx' or one returned in `coverage` (see GET /v1/biz/coverage)",
"maxLength": 60,
"type": "string"
},
"claimedOnly": {
"default": false,
"type": "boolean"
},
"country": {
"description": "ISO 3166-1 alpha-2",
"maxLength": 2,
"minLength": 2,
"type": "string"
},
"includeEvidence": {
"default": false,
"type": "boolean"
},
"limit": {
"default": 10,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"minLevel": {
"enum": [
"unverified",
"listed",
"corroborated",
"verified",
"owner_verified"
],
"type": "string"
},
"minScore": {
"default": 0,
"description": "Only businesses with verification score ≥ this",
"maximum": 100,
"minimum": 0,
"type": "integer"
},
"near": {
"additionalProperties": false,
"properties": {
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"radiusKm": {
"default": 3,
"maximum": 50,
"minimum": 0.1,
"type": "number"
}
},
"required": [
"lat",
"lon"
],
"type": "object"
},
"offset": {
"default": 0,
"minimum": 0,
"type": "integer"
},
"query": {
"description": "Free text: name, cuisine, service…",
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"ms": {
"type": "integer"
},
"ok": {
"type": "boolean"
},
"result": {
"properties": {
"items": {
"items": {
"properties": {
"category": {
"type": "string"
},
"contact": {
"properties": {
"phone": {
"type": "string"
},
"website": {
"type": "string"
}
},
"type": "object"
},
"id": {
"type": "string"
},
"location": {
"properties": {
"city": {
"type": "string"
}
},
"type": "object"
},
"name": {
"type": "string"
},
"verification": {
"properties": {
"lastVerifiedAt": {
"type": "string"
},
"level": {
"type": "string"
},
"score": {
"type": "integer"
}
},
"type": "object"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "integer"
}
},
"type": "object"
},
"tool": {
"type": "string"
}
},
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
}
}Use it
curl
curl "https://toll402.dev/v1/biz/search" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://toll402.dev/v1/biz/search");
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://toll402.dev/v1/biz/search")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/7047.json, and this resource appears in /discovery/resources and /discovery/search.