{"openapi":"3.1.0","info":{"title":"Local Business Leads API","description":"Local business contact records (name, phone, address, verified website status) for US cities by trade category. $0.05 USDC per query via x402 on Base.","version":"1.0.0","x-guidance":"GET /api/v1/leads?city=<city>&category=<category>[&state=<US state>][&limit=1-50][&require_phone=true]\nGET /api/v1/coverage (free): states covered and data release. Check it before paying for a new market.\nMCP (Streamable HTTP): https://local-leads-api.vercel.app/mcp with tools get_coverage (free), count_local_leads (free preview)\n  and search_local_leads ($0.05 USDC on Base, paid via x402-over-MCP; not charged when nothing is found).\n\nReturns up to `limit` (default 25) businesses in that city with name, phone, address, website and verified website information.\nSupported categories: plumber, roofer, electrician, hvac, dentist, doctor, chiropractor, veterinarian, lawyer, accountant,\ninsurance_agent, real_estate_agent, auto_repair, hair_salon, beauty_salon, locksmith, landscaper, carpenter, painter,\nrestaurant, cafe, pharmacy, gym. Pass `state` (e.g. \"GA\") to disambiguate city names that exist in several states.\n\nWebsite verification (checked in the background, never while you wait; re-checked every 30 days):\n- website_status: \"live\" (site responded), \"unreachable\" (clearly broken: domain gone, connection refused, invalid certificate, or page and home page both erroring),\n  \"none\" (no website listed), \"unchecked\" (not verified yet: queued, or a check was inconclusive and is retried within days; ask again later).\n- website_https: true if the site works on a secure https:// address, false if it only works on insecure http://, null otherwise.\n- website_checked_at: when it was last verified (ISO 8601 UTC), or null.\nProspecting tip: businesses with website_status \"none\" or \"unreachable\", or website_https false, are strong leads for web design,\nhosting and marketing services.\n\nEach result has a 0-1 `confidence` (how many independent sources agree the business exists); results are sorted phone-first, then by confidence.\n\nPayment: $0.05 USDC per request via x402 on Base mainnet. Not charged: zero results, unknown city/state, invalid input, or server errors.\nData source: Overture Maps Places (CDLA-Permissive-2.0; merged from Meta, Microsoft, Foursquare, BrightQuery and others), refreshed periodically.\nPhone numbers come from these sources and are not individually call-verified."},"servers":[{"url":"https://local-leads-api.vercel.app"}],"tags":[{"name":"Health"},{"name":"V1"}],"paths":{"/api/v1/leads":{"get":{"operationId":"v1_leads","summary":"Find local businesses by city and category. Returns name, phone, address and verified website status (live/broken/none, https, last-checked date). 0.05 USDC per query.","tags":["V1"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]},"parameters":[{"in":"query","name":"city","schema":{"type":"string","minLength":2,"maxLength":80,"description":"US city name, e.g. \"Atlanta\" or \"Jonesboro\"."},"required":true,"description":"US city name, e.g. \"Atlanta\" or \"Jonesboro\"."},{"in":"query","name":"category","schema":{"type":"string","minLength":2,"maxLength":40,"description":"Business category. One of: plumber, roofer, electrician, hvac, dentist, doctor, chiropractor, veterinarian, lawyer, accountant, insurance_agent, real_estate_agent, auto_repair, hair_salon, beauty_salon, locksmith, landscaper, carpenter, painter, restaurant, cafe, pharmacy, gym. Common plurals/synonyms are accepted."},"required":true,"description":"Business category. One of: plumber, roofer, electrician, hvac, dentist, doctor, chiropractor, veterinarian, lawyer, accountant, insurance_agent, real_estate_agent, auto_repair, hair_salon, beauty_salon, locksmith, landscaper, carpenter, painter, restaurant, cafe, pharmacy, gym. Common plurals/synonyms are accepted."},{"in":"query","name":"state","schema":{"description":"US state code or name (e.g. \"GA\"). Recommended: without it, the state where the city has the most listings is used.","type":"string","minLength":2,"maxLength":40},"description":"US state code or name (e.g. \"GA\"). Recommended: without it, the state where the city has the most listings is used."},{"in":"query","name":"limit","schema":{"description":"Max results to return (1-50, default 25).","type":"integer","minimum":1,"maximum":50},"description":"Max results to return (1-50, default 25)."},{"in":"query","name":"require_phone","schema":{"description":"If \"true\", only return businesses that have a phone number.","type":"string","enum":["true","false"]},"description":"If \"true\", only return businesses that have a phone number."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"object","properties":{"city":{"type":"string"},"state":{"type":"string"},"category":{"type":"string"},"resolved_location":{"type":"string"}},"required":["city","state","category","resolved_location"],"additionalProperties":false},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total_available":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"results":{"type":"array","items":{"type":"object","properties":{"business_name":{"type":"string"},"phone":{"type":["string","null"]},"address":{"type":"object","properties":{"formatted":{"type":["string","null"]},"street":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postcode":{"type":["string","null"]}},"required":["formatted","street","city","state","postcode"],"additionalProperties":false},"website":{"type":["string","null"]},"website_status":{"type":"string","enum":["live","unreachable","none","unchecked"],"description":"From our background checks: \"live\" = site responded; \"unreachable\" = clearly broken (domain no longer exists, connection refused, invalid security certificate, or page and home page both missing/erroring); \"none\" = no website listed; \"unchecked\" = not verified yet (queued, or an earlier check was inconclusive and will be retried within days)."},"website_https":{"description":"true = site works on a secure https:// address; false = it only works on insecure http://; null = no website, not working, or not checked yet.","type":["boolean","null"]},"website_checked_at":{"description":"When the website was last verified (ISO 8601 UTC). Sites are re-verified every 30 days. null = not checked yet.","type":["string","null"]},"email":{"type":["string","null"]},"latitude":{"type":"number"},"longitude":{"type":"number"},"confidence":{"type":"number","description":"0-1 existence confidence from the number of sources that agree on this business."},"source_id":{"type":"string"}},"required":["business_name","phone","address","website","website_status","website_https","website_checked_at","email","latitude","longitude","confidence","source_id"],"additionalProperties":false}},"generated_at":{"type":"string"},"data_release":{"type":["string","null"]},"attribution":{"type":"string"}},"required":["query","count","total_available","results","generated_at","data_release","attribution"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/v1/coverage":{"get":{"operationId":"v1_coverage","summary":"Free: which US states are covered, with business counts and the data release date.","tags":["V1"],"security":[],"responses":{"200":{"description":"Successful response"}}}},"/api/health":{"get":{"operationId":"health","summary":"health","tags":["Health"],"security":[],"responses":{"200":{"description":"Successful response"}}}}}}