list_local_places

list_local_places MCP tool: businesses shown in the ChatGPT and Google AI Overview map pack for your prompts, with appearances, average rank, ratings, and a local visibility summary.

Updated 2026-09-29

list_local_places lists the businesses that appear in the map pack attached to a project's answers. When a prompt has local intent ("best bakery in Nice"), ChatGPT and Google AI Overview return a list of businesses alongside the text. Each row aggregates one business across the period: how many maps it appeared in, its average rank, its rating and review count, and its coordinates when the engine returned them.

The summary object carries local visibility as a whole, so a single call answers both "who is on the map" and "how am I doing".

When to use

Use it whenever the question is about a physical location rather than a website: "am I in the map when someone asks ChatGPT for a plumber in Lyon?", "which competitors sit above me in the local pack?", "is my rating below the ones AI recommends?".

Two numbers in the summary point at what to fix. citedNotInMap counts answers where the brand is named in the text but missing from the map: the business listing is at fault (wrong category, unverified profile, missing address). inMapNotCited counts the reverse, where the listing is fine but the content the engine quotes never mentions the brand.

Only ChatGPT and Google AI Overview return a map pack. The other engines are silently dropped from filters.llms, so a query asking for Perplexity returns an empty page rather than an error.

Input

Field Type Default Description
projectId string (CUID) required Project to query.
cursor string - Opaque pagination cursor from a prior pageInfo.nextCursor.
limit integer 20 1 to 100.
filters.dateRange.from date/datetime 30 days ago ISO 8601 date or datetime.
filters.dateRange.to date/datetime now ISO 8601 date or datetime.
filters.llms enum[] map-capable engines Only CHATGPT and GOOGLE_AIO produce a map pack.
filters.promptIds string[] (CUID) - Only count maps produced by these prompts.
filters.brandOnly boolean false Keep only the tracked brand's own listing.
sortBy enum appearances_desc appearances_desc, rank_asc, reviews_desc, name_asc.

Response

data holds one row per business, pageInfo the usual pagination envelope, and summary the period's local visibility. The deltas compare the requested period to the previous window of the same length. lat and lng are null on Google AI Overview, which returns no coordinates.

{
  "data": [
    {
      "id": "chatgpt:boulangerie-durand-nice",
      "name": "Boulangerie Durand",
      "domain": "boulangerie-durand.fr",
      "url": "https://boulangerie-durand.fr",
      "isBrand": true,
      "appearances": 14,
      "avgRank": 2.3,
      "rating": 4.6,
      "reviewCount": 312,
      "lat": 43.7009,
      "lng": 7.2683
    }
  ],
  "pageInfo": { "hasMore": true, "nextCursor": "20", "totalCount": 37 },
  "summary": {
    "periodFrom": "2026-08-23T00:00:00.000Z",
    "periodTo": "2026-09-22T00:00:00.000Z",
    "totalResults": 60,
    "mapCount": 21,
    "presence": 67,
    "presenceDelta": 12,
    "avgRank": 2.3,
    "avgRankDelta": -0.4,
    "anchor": { "city": "Nice", "share": 82 },
    "brandRating": 4.6,
    "brandReviewCount": 312,
    "medianRating": 4.4,
    "medianReviewCount": 180,
    "topCategory": "Bakery",
    "citedNotInMap": 3,
    "inMapNotCited": 5,
    "placesWithoutCoords": 4,
    "promptsWithMaps": 9,
    "ignoredMaps": 2
  }
}

presence is the share of maps the brand appears in, in percent. avgRank is its average position when it does appear, so a negative avgRankDelta is an improvement. anchor is the city the engines actually answer for, with its share of listings: when it is not the city you target, the prompts themselves are pointing somewhere else.

Project without customers on site

When the project's Customers on site setting is off, the tool reads nothing and returns an empty list with the reason:

{
  "data": [],
  "pageInfo": { "hasMore": false, "nextCursor": null, "totalCount": 0 },
  "summary": { "localDisabled": true }
}

Tips and patterns

  • ignoredMaps counts maps left out of every figure: their prompt names no place ("best bakery near me"), so the engine answers for wherever the user is. Add the city to those prompts to measure them.
  • Read summary first. mapCount against totalResults tells you how many answers even carry a map: a low ratio means the prompts have little local intent, not that visibility dropped.
  • Compare brandRating to medianRating before touching content. A business rated below the map median rarely climbs on copywriting alone.
  • Pass filters.promptIds to isolate one question, then call get_prompt_result with include.localPlaces to read the raw map of a single answer.
  • sortBy: "rank_asc" surfaces who is at the top of the pack; appearances_desc surfaces who is there most often. Both matter, and they rarely agree.
  • Row ids are stable across scans, so diffing two calls tells you which businesses entered or left the pack.

Related tools

You can see where you stand today.

Free trial. Start tracking your AI visibility, no credit card.