Google Maps

Use Google Maps with Agno agents.

Enable Agno agents with location intelligence with various Google Maps API functionalities including business search, directions, geocoding, address validation, and more. Specify include_tools and exclude_tools parameters for selective function access.

Prerequisites

  • Install the dependencies: uv pip install -U agno googlemaps google-maps-places openai.
  • Set OPENAI_API_KEY for the agent's default model.
  • Set the environment variable GOOGLE_MAPS_API_KEY with your Google Maps API key. You can obtain the API key from the Google Cloud Console: https://console.cloud.google.com/projectselector2/google/maps-apis/credentials
  • Authenticate Application Default Credentials for the Places client with gcloud auth application-default login.
  • Enable Places API (New) for the ADC project and the APIs needed by the key-backed methods: Address Validation, Geocoding, Elevation, and Time Zone. Directions and Distance Matrix are legacy services restricted to eligible existing projects.
gcloud auth application-default login
export OPENAI_API_KEY="your_openai_api_key_here"
export GOOGLE_MAPS_API_KEY="your_google_maps_api_key_here"

from agno.agent import Agent
from agno.tools.google.maps import GoogleMapTools

# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------

# Example 1: All functions available (default behavior)
agent_full = Agent(
    name="Full Maps API Agent",
    tools=[
        GoogleMapTools(),  # All functions enabled by default
    ],
    description="You are a location and business information specialist with full Google Maps access.",
    instructions=[
        "Use any Google Maps function as needed for location-based queries",
        "Combine Maps results when a request needs multiple lookups",
        "Format responses clearly and provide relevant details",
        "Handle errors gracefully and provide meaningful feedback",
    ],
    markdown=True,
)

# Example 2: Include only specific functions
agent_search = Agent(
    name="Search-focused Maps Agent",
    tools=[
        GoogleMapTools(
            include_tools=[
                "search_places",
            ]
        ),
    ],
    description="You are a location search specialist focused only on finding places.",
    instructions=[
        "Focus on place searches and getting place details",
        "Use search_places for general queries",
    ],
    markdown=True,
)

# Example 3: Exclude potentially expensive operations
agent_safe = Agent(
    name="Safe Maps API Agent",
    tools=[
        GoogleMapTools(
            exclude_tools=[
                "get_distance_matrix",  # Can be expensive with many origins/destinations
                "get_directions",  # Excludes detailed route calculations
            ]
        ),
    ],
    description="You are a location specialist with restricted access to expensive operations.",
    instructions=[
        "Provide location information without detailed routing",
        "Use geocoding and place searches freely",
        "For directions, provide general guidance only",
    ],
    markdown=True,
)

# Using the full-featured agent for examples
agent = agent_full

# Example 1: Business Search

# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
    print("\n=== Business Search Example ===")
    agent.print_response(
        "Find me highly rated Chinese restaurants in Phoenix, AZ with their contact details",
        stream=True,
    )

    # Example 2: Directions
    print("\n=== Directions Example ===")
    agent.print_response(
        """Get driving directions from 'Phoenix Sky Harbor Airport' to 'Desert Botanical Garden',
        avoiding highways if possible""",
        stream=True,
    )

    # Example 3: Address Validation and Geocoding
    print("\n=== Address Validation and Geocoding Example ===")
    agent.print_response(
        """Please validate and geocode this address:
        '1600 Amphitheatre Parkway, Mountain View, CA'""",
        stream=True,
    )

    # Example 4: Distance Matrix
    print("\n=== Distance Matrix Example ===")
    agent.print_response(
        """Calculate the travel time and distance between these locations in Phoenix:
        Origins: ['Phoenix Sky Harbor Airport', 'Downtown Phoenix']
        Destinations: ['Desert Botanical Garden', 'Phoenix Zoo']""",
        stream=True,
    )

    # Example 5: Nearby Places and Details
    print("\n=== Nearby Places Example ===")
    agent.print_response(
        """Find coffee shops near Arizona State University Tempe campus.
        Include ratings and opening hours if available.""",
        stream=True,
    )

    # Example 6: Reverse Geocoding and Timezone
    print("\n=== Reverse Geocoding and Timezone Example ===")
    agent.print_response(
        """Get the address and timezone information for these coordinates:
        Latitude: 33.4484, Longitude: -112.0740 (Phoenix)""",
        stream=True,
    )

    # Example 7: Multi-step Route Planning
    print("\n=== Multi-step Route Planning Example ===")
    agent.print_response(
        """Plan a route with multiple stops in Phoenix:
        Start: Phoenix Sky Harbor Airport
        Stops:
        1. Arizona Science Center
        2. Heard Museum
        3. Desert Botanical Garden
        End: Return to Airport
        Please include estimated travel times between each stop.""",
        stream=True,
    )

    # Example 8: Location Analysis
    print("\n=== Location Analysis Example ===")
    agent.print_response(
        """Analyze this location in Phoenix:
        Address: '2301 N Central Ave, Phoenix, AZ 85004'
        Please provide:
        1. Exact coordinates
        2. Nearby landmarks
        3. Elevation data
        4. Local timezone""",
        stream=True,
    )

    # Example 9: Business Hours
    print("\n=== Business Hours Example ===")
    agent.print_response(
        """Find museums in Phoenix that are:
        1. Open on Mondays
        2. Within 5 miles of downtown
        Include their opening hours and contact information.""",
        stream=True,
    )

    # Example 10: Transit Options
    print("\n=== Transit Options Example ===")
    agent.print_response(
        """Compare different travel modes from 'Phoenix Convention Center' to 'Phoenix Art Museum':
        1. Driving
        2. Walking
        3. Transit (if available)
        Include estimated time and distance for each option.""",
        stream=True,
    )

Use the example with your project's enabled APIs

For a new project, set agent = agent_search and keep only the place-search prompts. Directions, route planning, travel-mode comparison and distance-matrix prompts require the legacy APIs; this toolkit does not switch them to Routes API automatically. The search-only agent cannot geocode or validate addresses.

Both client objects are constructed regardless of the selected tools: GOOGLE_MAPS_API_KEY configures the googlemaps client, while Places uses Application Default Credentials. Excluding two methods limits the callable set, not overall request cost; a model run can still make repeated calls.

Run the Example

Save the code above as google_maps_tools.py, then run:

python -m venv .venv
source .venv/bin/activate

uv pip install -U agno googlemaps google-maps-places openai

python google_maps_tools.py

For details, see Google Maps cookbook.