๐Ÿš—

LocalWashAdvisor

Public API ยท v2.0 ยท Car Wash + Mobile Wash

No auth requiredOpenAPI YAML โ†—

Result Ranking

All search results โ€” from every AI agent including ours โ€” are ranked by this fixed 3-tier trust hierarchy. Verified and claimed are the same state (one or the other is always used). Within each band: distance โ†’ Bayesian rating โ†’ active coupons โ†’ review count.

#1
โญ Verified ยท Premium
Owner confirmed + paid plan โ€” top of every list
#2
โœ… Verified ยท Free
Owner confirmed, free plan
#3
๐Ÿ”“ Unverified
Seed / unclaimed listing โ€” no owner account
๐Ÿ“ฑ

Mobile Wash โ€” AI Agent Booking Flow

4 public endpoints

Mobile washers come to the customer's location. Three read-only public endpoints let AI agents discover washers, show profiles and prices, and check availability. The final booking step requires the user to be logged in on the website (payment is collected via Stripe Connect).

1
Find washers

Pass customer lat/lng โ†’ get list of washers whose service area covers that point, with distance, services, and starting price.

2
AI-structured profile

Machine-readable summary with trust signals, performance stats, services, schedule, and a direct booking_url. Designed for AI agents.

3
Full public profile

Bio, photo, portfolio, full working hours, ratings, and background check/insurance status. Use for rich display.

4
Check availability

Returns taken time slots for a date. Show the user which hours are free before they pick a time.

5
Direct to bookingbooking_url from step 2 summary

Send the user to booking_url (e.g. /en-US/mobile-wash/:slug). They log in, pick the time, pay the deposit via Stripe โ€” done. POST /api/mobile/bookings requires an authenticated session.

๐Ÿค– GPT/Claude tool tip: Register search_mobile_washers, get_mobile_washer_detail, get_washer_availability, and get_washer_summary from the MCP manifest or point your agent at openapi.yaml. All three endpoints are unauthenticated and CORS-open.
GET/api/public/search

Search car wash businesses by location

Geo-search with optional text, open-now, rating, coupon, features and services filters. Results are ranked by trust tier: 1st verified+premium, 2nd verified+free, 3rd unverified โ€” within each band sorted by distance โ†’ Bayesian rating โ†’ coupon count โ†’ review count.

Parameters

lat
numberLatitude of search centre.
lng
numberLongitude of search centre.
radius
numberdefault: 10Radius in miles (max 50).
query
stringText match on name, city, and "Our Story" description. Use as a flexible fallback for anything not in the structured features/services lists (e.g. "eco", "brushless", "steam cleaning").
openNow
booleanOnly currently-open businesses.
minRating
numberMin Bayesian rating (0โ€“5).
hasCoupons
booleanOnly businesses with active coupons.
features
stringComma-separated exact feature values. Valid: "Eco Friendly", "Water Reclamation", "Touchless", "Self Service", "Full Service", "Free Vacuums", "Credit Cards", "24/7 Access", "Express Service", "Free Parking", "Lounge & WiFi".
services
stringComma-separated exact service values. Valid: "Automatic Wash", "Hand Wash", "Interior Cleaning", "Waxing", "Detailing", "Exterior Only", "Undercarriage Wash", "Window Cleaning", "Upholstery Cleaning", "Paint Correction", "Ceramic Coating", "RV/Truck Wash", "Motorcycle Wash", "Mobile Service", "Headlight Restoration", "Tire Shine".
locale
stringen-US | en-GB | de-DE | es-ES | fr-FR | ja-JP
limit
integerdefault: 20Max results (max 50).
offset
integerdefault: 0Pagination offset.

Response (200 OK)

{
  "results": [
    {
      "id": "uuid",
      "name": "Sunshine Car Wash Tokyo",
      "slug": "sunshine-car-wash-tokyo",
      "address": "1-2-3 Shibuya",
      "city": "Tokyo",
      "distance_miles": 1.4,
      "rating": 4.7,
      "bayesian_rating": 4.65,
      "coupon_count": 2,
      "tier": "premium_monthly",
      "verified": true,
      "is_open_now": true,
      "services": [
        "Hand Wash",
        "Detailing",
        "Ceramic Coating"
      ],
      "features": [
        "Eco Friendly",
        "Water Reclamation",
        "Touchless"
      ],
      "page_url": "https://sensha-navi.jp/ja-JP/business/sunshine-car-wash-tokyo"
    }
  ],
  "total": 1,
  "limit": 5,
  "offset": 0
}

Structured Filter Values

The features and services params require exact values as stored in the database. For anything not in these lists, use query=<term> โ€” it searches name, city, and the business "Our Story" description.

features= values

Eco Friendly
Water Reclamation
Touchless
Self Service
Full Service
Free Vacuums
Credit Cards
24/7 Access
Express Service
Free Parking
Lounge & WiFi

services= values

Automatic Wash
Hand Wash
Interior Cleaning
Waxing
Detailing
Exterior Only
Undercarriage Wash
Window Cleaning
Upholstery Cleaning
Paint Correction
Ceramic Coating
RV/Truck Wash
Motorcycle Wash
Mobile Service
Headlight Restoration
Tire Shine
๐Ÿ’ก Eco-friendly tip: Use features=Eco Friendly and/or query=eco โ€” the first catches businesses that ticked the checkbox, the second catches those that wrote about it in their description.

Tier Values

free
Free
premium_monthly
Premium Monthly
premium_quarterly
Premium Quarterly
premium_annual
Premium Annual

Quick Start

JavaScript / fetch

const res = await fetch(
  'https://localwashadvisor.com/api/public/search' +
  '?lat=35.6762&lng=139.6503&radius=10&openNow=true'
);
const { results } = await res.json();
results.forEach(b => console.log(b.name, b.distance_miles, 'mi'));

Python / httpx

import httpx
r = httpx.get('https://localwashadvisor.com/api/public/search',
              params={'lat': 35.6762, 'lng': 139.6503, 'radius': 10, 'openNow': 'true'})
for b in r.json()['results']:
    print(b['name'], b['distance_miles'], 'mi')

OpenAI / GPT tools_url

# Point your GPT's API schema to:
https://localwashadvisor.com/openapi.yaml

# Or point tools_url to:
https://localwashadvisor.com/api/public/mcp

# Available tools:
# search_car_washes, get_car_wash_detail, get_car_wash_coupons
# search_mobile_washers, get_mobile_washer_detail, get_washer_availability

Mobile wash โ€” find a washer near me (JavaScript)

// 1. Find washers near the customer
const { results } = await fetch(
  'https://localwashadvisor.com/api/public/mobile/search' +
  '?lat=30.2672&lng=-97.7431&radius=20'
).then(r => r.json());

// 2. Check availability for the top result
const { taken } = await fetch(
  `https://localwashadvisor.com/api/public/mobile/washers/${results[0].id}/availability?date=2026-03-20`
).then(r => r.json());

// 3. Send user to the booking page
window.open(results[0].profile_url, '_blank');