Skip to main content
Glama
localseodata

Local SEO Data

Official

maps

Read-only

Retrieves up to 60 local business listings with names, ratings, addresses, phone numbers, websites, hours, and GPS coordinates for a keyword and location, excluding paid map pins.

Instructions

Returns local map results with GPS coordinates — up to 60 listings with name, place_id, rating, reviews_count, address, phone, website, hours, lat/lng, and categories. Paid map pins are excluded from the ranking and listed in sponsored_results. If the first search returns nothing, the API automatically retries once with the city appended to the keyword (geo_fallback_applied: true, keyword_used shows the retried keyword). Unresolvable locations return a validation error instead of silently searching country-wide. local_pack returns just the top 3 with CIDs if that's all you need. Costs 2 credits.

Input Schema

NameRequiredDescriptionDefault
limitNoNumber of results. Default: 20, max: 100
keywordYesSearch keyword (e.g. "dentist")
locationYesCity and state (e.g. "Orchard Park, NY")

Output Schema

NameRequiredDescriptionDefault
keywordYes
resultsYes
locationYes
keyword_usedNo
total_resultsYes
location_resolvedNo
sponsored_resultsNo
geo_fallback_appliedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.1.0
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "geo_fallback_applied": {
      +      "type": "boolean"
      +    },
      +    "keyword": {
      +      "type": "string"
      +    },
      +    "keyword_used": {
      +      "type": "string"
      +    },
      +    "location": {
      +      "type": "string"
      +    },
      +    "location_resolved": {
      +      "type": "string"
      +    },
      +    "results": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "address": {
      +            "type": "string"
      +          },
      +          "categories": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "hours": {},
      +          "latitude": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "longitude": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "phone": {
      +            "type": "string"
      +          },
      +          "place_id": {
      +            "type": "string"
      +          },
      +          "rank": {
      +            "type": "number"
      +          },
      +          "rating": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "reviews_count": {
      +            "type": "number"
      +          },
      +          "website": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "rank",
      +          "name",
      +          "place_id",
      +          "rating",
      +          "reviews_count",
      +          "address",
      +          "phone",
      +          "website",
      +          "latitude",
      +          "longitude",
      +          "categories"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "sponsored_results": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "rating": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "reviews_count": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "rating",
      +          "reviews_count"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "total_results": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "results",
      +    "total_results",
      +    "keyword",
      +    "location"
      +  ],
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/non-destructive, and the description adds genuinely new behavior: paid pins excluded from ranking and split into sponsored_results, an automatic one-shot retry with city appended (geo_fallback_applied/keyword_used flags), and a validation error for unresolvable locations instead of a silent country-wide search. These are exactly the non-obvious traits an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Roughly five sentences, each carrying distinct information — return shape, sponsored exclusion, fallback behavior, error mode, alternative, cost — with the primary purpose front-loaded and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be over-explained, yet the field list is a useful preview; combined with the fallback/error semantics and credit cost, an agent has everything needed to decide and call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description goes beyond it by explaining what happens with the location value (unresolvable locations raise a validation error rather than broadening the search) and with the keyword (retried once with the city appended). Minor tension: the text says "up to 60 listings" while the schema allows limit up to 100, which slightly muddies the limit parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — returns local map results with GPS coordinates — and immediately enumerates the fields returned, so an agent knows exactly what it gets. It explicitly distinguishes itself from the sibling local_pack ("returns just the top 3 with CIDs if that's all you need").

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names a concrete alternative (local_pack) and the condition that selects it, and explains the cost (2 credits), which helps an agent budget calls. It does not cover when-not-to-use cases such as preferring business_profile or google_reviews for details on a known place.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.