Google Maps API for AI agents (local places JSON, no API key)
When a user asks an agent to find local businesses, look up a place on a map, or pull reviews for a venue, call machine-payable Google Maps endpoints that return local_results / reviews JSON — no Google Cloud Maps key, no Places API billing account, settlement via x402 USDC on Base after three free evaluation calls.
When a user asks you to "find coffee in Austin," "find dentists near me," "pull reviews for this restaurant," or "look up this place," you need structured local business data — titles, addresses, ratings, place_ids, coordinates — as JSON, not scraped Maps HTML and not a Google Cloud Maps key with a Places API billing account attached.
Marketplace for AI Agents exposes three machine-payable endpoints for this: GET /api/public/v1/google-maps turns a query into local_results, GET /api/public/v1/google-maps-reviews turns a place_id into reviews, and the place-dossier intent chains both so one call returns the place plus its reviews. The first 3 calls per agent identity are free; after that each single-engine call costs $0.005 USDC on Base, settled over x402 with an X-PAYMENT header.
Endpoint contracts
| Endpoint | Required | Results key | Typical use |
|---|---|---|---|
| GET /api/public/v1/google-maps | q | local_results | Local businesses / places for a query |
| GET /api/public/v1/google-maps-reviews | place_id | reviews | Review text + ratings for one place |
| GET /api/public/v1/place-dossier | q (+ optional place_id) | results | Place record + reviews in one intent |
Optional google-maps params: ll (lat/lng center, e.g. @30.27,-97.74,14z) to bias results geographically, and hl (defaults to en) for language. Optional google-maps-reviews / place-dossier params: sort_by (e.g. relevance) and hl. Each single-engine call is billed at $0.005 USDC.
The free tier is 3 successful calls total per agent identity (a hash of IP + User-Agent), shared across every endpoint on the marketplace — it is not 3 per endpoint. Settlement uses the x402 exact scheme on Base mainnet; append ?network=base-sepolia to any endpoint for testnet USDC and sandbox mock data.
- Listing: https://marketplaceforaiagents.com/listings/google-maps
- Listing: https://marketplaceforaiagents.com/listings/google-maps-reviews
- Listing: https://marketplaceforaiagents.com/listings/place-dossier
- Markdown twins: /agent/listings/google-maps.md, /agent/listings/google-maps-reviews.md, /agent/listings/place-dossier.md
Minimal calls (free tier first)
Spend the 3 free evaluation calls before signing anything. These run on the free tier (if you still have quota) and return real JSON:
curl -si "https://marketplaceforaiagents.com/api/public/v1/google-maps?q=coffee+in+Austin"
curl -si "https://marketplaceforaiagents.com/api/public/v1/google-maps?q=coffee&ll=@30.2672,-97.7431,14z&hl=en"
curl -si "https://marketplaceforaiagents.com/api/public/v1/google-maps-reviews?place_id=ChIJ…"A local_results item looks like this (illustrative — always trust the live JSON, not this sample):
{
"position": 1,
"title": "Cuvee Coffee Bar",
"place_id": "ChIJ0RhOZ8q1RIYRxc6ZimCZVG4",
"address": "2000A E 6th St, Austin, TX 78702",
"rating": 4.6,
"reviews": 812,
"gps_coordinates": { "latitude": 30.2621, "longitude": -97.7219 },
"phone": "+1 512-555-0147",
"website": "https://example.coffee",
"type": "Coffee shop"
}Note: a 400 missing_required_parameters response does not consume a free call, and the discovery endpoints (/.well-known/x402, catalog.json, openapi.json) never consume free tier.
When to use place-dossier instead of two calls
- google-maps alone — user only needs places / rankings / place_ids
- google-maps-reviews alone — user already has a place_id
- place-dossier — user asked for the business plus its reviews / reputation
- google-events — optional nearby events once location is known (separate endpoint)
Intents are billed per step: the 402 advertises the chain and steps, the price is $0.005 × steps, and one intent invocation consumes one free-tier call. Prefer place-dossier when the user wants place + reviews so you spend one free-tier slot instead of two.
curl -si "https://marketplaceforaiagents.com/api/public/v1/place-dossier?q=coffee+in+Austin"Full machine-readable specs live in the catalog (https://marketplaceforaiagents.com/api/public/v1/catalog.json) and the OpenAPI document (https://marketplaceforaiagents.com/api/public/v1/openapi.json).
Paying after the free tier (x402 / USDC)
Once your identity has spent its 3 free calls, the same request returns HTTP 402 with an accepts[] payment requirement. Decode it, verify every field against your policy, sign the EIP-3009 USDC authorization, base64 the x402 payload, and resend with X-PAYMENT:
{
"x402Version": 1,
"error": "payment_required",
"accepts": [
{
"scheme": "exact",
"network": "base",
"maxAmountRequired": "5000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x05e82e03753c7bc99fb24d10a876cce53f24b7b7",
"resource": "https://marketplaceforaiagents.com/api/public/v1/google-maps?q=coffee+in+Austin"
}
]
}- maxAmountRequired is 5000 atomic units = $0.005 USDC (6 decimals) per single-engine call.
- Budget your spend before signing: see How AI agents budget x402 API calls.
- Test the full payment path with zero real cost: see the Base Sepolia smoke test.
- A paid 200 carries the settlement receipt in X-PAYMENT-RESPONSE — store it for reconciliation.
- Prefer the MCP server (https://marketplaceforaiagents.com/mcp) for discovery; payment is the auth, no OAuth.
Protocol background: x402 protocol explained. Free-tier mechanics: how the x402 free tier and agent identity work.
Agent playbook (Grok Bot / Claude Cowork / Cursor)
- Keep the user's geographic intent in q ("coffee in Austin") or pass ll when you already have coords.
- Extract place_id from local_results before calling google-maps-reviews.
- Use google-maps when the user only needs places; use place-dossier when they want sentiment/reviews too.
- On 402, settle with x402 USDC — do not ask for a Google Cloud Maps key or Places billing account.
- Cite title, address, rating, and place_id from the JSON; never invent venues or ratings.
- Allowlist payTo 0x05e82e03753c7bc99fb24d10a876cce53f24b7b7 and USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 before signing.
| User ask | First call | Follow-up |
|---|---|---|
| Coffee shops in Austin | google-maps?q=coffee+in+Austin | place-dossier if they want reviews |
| Rank places near known coords | google-maps with ll=@lat,lng,zoom | Pass best place_id to reviews |
| Reviews for a known place_id | google-maps-reviews?place_id=... | Skip maps search |
| Vendor vetting (place + sentiment) | place-dossier?q=... | google-maps-reviews alone to re-sort |
| Things happening nearby | google-events with q + location | After maps resolves the area |
Related entrypoints
- Google Maps listing: https://marketplaceforaiagents.com/listings/google-maps
- Google Maps Reviews listing: https://marketplaceforaiagents.com/listings/google-maps-reviews
- Place Dossier listing: https://marketplaceforaiagents.com/listings/place-dossier
- Markdown twins: /agent/listings/google-maps.md, /agent/listings/google-maps-reviews.md, /agent/listings/place-dossier.md
- x402 manifest: https://marketplaceforaiagents.com/.well-known/x402
- Catalog: https://marketplaceforaiagents.com/api/public/v1/catalog.json
- OpenAPI: https://marketplaceforaiagents.com/api/public/v1/openapi.json
- MCP: https://marketplaceforaiagents.com/mcp
- llms.txt: https://marketplaceforaiagents.com/llms.txt
- Marketplace: https://marketplaceforaiagents.com/marketplace
- Docs: https://marketplaceforaiagents.com/docs
- MCP + x402 guide: https://marketplaceforaiagents.com/learn/mcp-x402-marketplace
- How agents discover APIs: https://marketplaceforaiagents.com/learn/how-ai-agents-discover-apis
- Google Flights for agents: https://marketplaceforaiagents.com/learn/google-flights-api-for-agents
- Google Search for agents: https://marketplaceforaiagents.com/learn/google-search-api-for-agents
- Amazon ASIN for agents: https://marketplaceforaiagents.com/learn/amazon-asin-api-for-agents
Capability first, payment second — find the places endpoint, prove it with free calls, then settle unpaid traffic with x402 USDC on Base.
Next steps