AI Mode answers local prompts with place cards and an embedded map. cloro returns both as structured JSON: place cards with Google Place ID, rating, review count, price level, and address, and map entries with GPS coordinates. Local rank tracking for the surface replacing the local pack.
4.8 · 33 reviewsPlaces and map entries are included in the base 4-credit request; use location or uule for city-level sampling — local results are meaningless without it.
import requests
response = requests.post(
"https://api.cloro.dev/v1/monitor/aimode",
headers={
"Authorization": "Bearer sk_live_your_api_key_here",
"Content-Type": "application/json"
},
json={
"prompt": "best coffee shops near union square",
"country": "US",
"location": "San Francisco,California,United States"
}
)
print(response.json()) {
"success": true,
"result": {
"text": "Around Union Square, the coffee shops that come up most often are...",
"places": [
{
"title": "Example Coffee Roasters",
"link": "https://www.google.com/search?q=...",
"placeId": "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
"index": 1,
"thumbnail": "https://lh5.googleusercontent.com/...",
"rating": 4.6,
"reviews": 1284,
"type": "Coffee shop",
"priceLevel": "$$",
"address": "170 Example St, San Francisco, CA",
"status": "Open now"
}
],
"map": [
{
"title": "Example Coffee Roasters",
"placeId": "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
"index": 1,
"gps_coordinates": {
"latitude": 37.7879,
"longitude": -122.4074
},
"rating": 4.6,
"reviews": 1284,
"type": "Coffee shop",
"address": "170 Example St, San Francisco, CA",
"status": "Open now"
}
]
}
} places carries the rendered cards; map carries the map-pin entries and adds GPS coordinates.
| Field | Type | Description |
|---|---|---|
| places[].title / link | string | Place name and Google viewer URL for the place. |
| places[].placeId | string | Google Places ID — the stable join key against the Places API and your own location data. |
| places[].index | integer | Position index of the place in the results. |
| places[].rating / reviews | number / integer | Star rating (0–5) and review count. |
| places[].type / priceLevel | string | Place category and price level indicator (e.g. "$", "$$"). |
| places[].address / status / thumbnail | string | Full address, operating status (e.g. "Open now"), and thumbnail image URL. |
| map[].gps_coordinates | object | Latitude and longitude for each map entry — plot pins without a geocoding step. |
Pick a plan that fits your volume. Price per credit drops as you scale.
Increased concurrency, overages on credits and credit discounts for annual contracts.
Know moreCredit cost per request varies by provider. The rates below apply to async/batch requests; sync requests add a +2 credit surcharge.
ChatGPT full response includes query fan-out, ads, and shopping data. Google News uses the same pricing as Google Search.
Both, ideally — but AI Mode is where Google is steering local discovery, and its place selection doesn't mirror the classic 3-pack. A business ranking #1 in the local pack can be absent from the AI Mode answer for the same query. See local rank tracking for the methodology.
places is the card list rendered in the answer (with priceLevel and richer card fields); map is the pin list behind the embedded map, which adds gps_coordinates. The same business usually appears in both, joined by placeId.
It's Google's stable identifier for a location — the join key to the official Places API, your store database, and review platforms. Tracking presence by placeId instead of name string survives renames and formatting drift.
City-level at minimum — pass `location` (canonical Google location name) or a pre-encoded `uule`. Local results re-rank block by block, so serious local tracking samples multiple locations per market.
The full AI Mode surface: the answer text, citations, shopping cards and sponsored ads, plus videos when Google renders them — all in the base 4-credit call.