> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Maps Platform Integration for AI Agents & Workflows

> Search for places and retrieve place details using the Google Places API (New)

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/google-maps-platform.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=38e6e2de4845d2b188061a303e406950" alt="Google Maps Platform logo" width="72" height="72" data-path="logos/google-maps-platform.svg" />

## Overview

Add **Google Maps Platform** to any ModuleX agent or workflow. Search for places and retrieve place details using the Google Places API (New) (`places.googleapis.com`).

<Info>
  **Categories**: Developer Tools & Infrastructure · Geolocation · Maps & Places · **Auth**: Google Maps API Key · **Actions**: 2
</Info>

## Authentication

### Google Maps API Key

Authenticate using your Google Cloud API key with Places API enabled

<Steps>
  <Step title="Step 1">
    Go to [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
  </Step>

  <Step title="Step 2">
    Create or select a project
  </Step>

  <Step title="Step 3">
    Enable the Places API (New) for your project
  </Step>

  <Step title="Step 4">
    Create an API key or use an existing one
  </Step>

  <Step title="Step 5">
    Paste the API key below
  </Step>
</Steps>

#### Required Credentials

| Field               | Description                                             | Required | Format                                    |
| ------------------- | ------------------------------------------------------- | -------- | ----------------------------------------- |
| Google Maps API Key | Your Google Cloud API key with Places API (New) enabled | Yes      | `AIzaSyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX` |

## Available Actions

<AccordionGroup>
  <Accordion title="search_places — Search for places based on a text query with optional filters like type, rating, price level, and location bias or restriction">
    ### Parameters

    <ResponseField name="text_query" type="string" required>
      The text string on which to search, for example: 'restaurant', '123 Main Street', or 'best place to visit in San Francisco'
    </ResponseField>

    <ResponseField name="included_type" type="string">
      Restricts results to places matching the specified type from Table A (e.g. 'restaurant', 'cafe', 'hotel')
    </ResponseField>

    <ResponseField name="include_pure_service_area_businesses" type="boolean">
      If true, include businesses that visit or deliver to customers directly but don't have a physical location
    </ResponseField>

    <ResponseField name="language_code" type="string">
      BCP-47 language code for results (e.g. 'en', 'fr', 'zh-CN')
    </ResponseField>

    <ResponseField name="location_bias" type="object">
      Area to bias search results toward. JSON object with circle or rectangle specification
    </ResponseField>

    <ResponseField name="location_restriction" type="string">
      Area to restrict search results to. Results outside this area are not returned
    </ResponseField>

    <ResponseField name="ev_options" type="object">
      Parameters for identifying available EV charging connectors and charging rates
    </ResponseField>

    <ResponseField name="min_rating" type="number">
      Minimum average user rating (0.0 to 5.0 inclusive, in increments of 0.5)
    </ResponseField>

    <ResponseField name="open_now" type="boolean">
      If true, return only places that are currently open for business
    </ResponseField>

    <ResponseField name="price_levels" type="array">
      Restrict to places at certain price levels. Valid values: PRICE\_LEVEL\_FREE, PRICE\_LEVEL\_INEXPENSIVE, PRICE\_LEVEL\_MODERATE, PRICE\_LEVEL\_EXPENSIVE, PRICE\_LEVEL\_VERY\_EXPENSIVE
    </ResponseField>

    <ResponseField name="rank_preference" type="string">
      How results are ranked: RELEVANCE (by search relevance) or DISTANCE (by distance)
    </ResponseField>

    <ResponseField name="region_code" type="string">
      Two-character CLDR region code to format and bias results
    </ResponseField>

    <ResponseField name="strict_type_filtering" type="boolean">
      When true and included\_type is set, only return places matching the specified type
    </ResponseField>

    <ResponseField name="simplified" type="boolean">
      If true, return a reduced set of fields per place (id, name, type, status, rating, address, phone, website, hours, location)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "places": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Places",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchPlacesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_place_details — Retrieve detailed information for a specific place using its Place ID">
    ### Parameters

    <ResponseField name="place_id" type="string" required>
      A textual identifier that uniquely identifies a place, returned from the search\_places action
    </ResponseField>

    <ResponseField name="simplified" type="boolean">
      If true, return a reduced set of fields (id, name, type, status, rating, address, phone, website, hours, location)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetPlaceDetailsOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* **Text Search**: \$32.00 per 1,000 requests (standard SKU pricing).
* **Place Details**: \$17.00 per 1,000 requests (standard SKU pricing).
* **Default quota**: 6,000 QPM (queries per minute) per project; can be
  increased via Google Cloud Console.
* **Error model**: non-2xx responses and timeouts are caught and returned as
  `success=False` + `error` rather than raising.

## Related integrations

<CardGroup cols={3}>
  <Card title="Algolia" href="/integrations/tools/algolia" />

  <Card title="Amazon Web Services" href="/integrations/tools/aws" />

  <Card title="Apify" href="/integrations/tools/apify" />
</CardGroup>

## Links

* [Google Maps Platform](https://developers.google.com/maps)
