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

# Serper: Maps

> Google Maps / local business search with addresses, phone numbers, ratings, websites, and CIDs. Includes inputs, outputs, SDK V2 examples, and Deepline cost.

Google Maps / local business search with addresses, phone numbers, ratings, websites, and CIDs.

> [!NOTE]
>
> Tool ID: `serper_google_maps_search`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'serper_google_maps_search',
  {
    "query": "software companies hiring engineers"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute serper_google_maps_search --input '{
  "query": "software companies hiring engineers"
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": {
    "searchParameters": {},
    "places": [
      {
        "position": 123,
        "title": "VP of Engineering",
        "address": "example"
      }
    ]
  }
}
```

Use `deepline describe serper_google_maps_search --json` for the latest machine-readable contract.

## Input reference

Run a Serper Google Maps search. Returns a fixed \~20 places per call and is billed per call, not per place, so narrow the result set with a more specific `query` or an `ll` location bias rather than by paging. Unlike serper\_google\_search, this endpoint does not support a `num` result cap.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.query` | `string` | Yes | — | Maps search query string. |
| `payload.ll` | `string` | No | — | GPS position and zoom in `@latitude,longitude,zoom` format. Minimum length: 1. |
| `payload.placeId` | `string` | No | — | Optional Google place ID filter/anchor. Minimum length: 1. |
| `payload.cid` | `string \| integer` | No | — | Optional Google CID filter/anchor. |
| `payload.hl` | `string` | No | `"en"` | Language code. Defaults to `en`. Minimum length: 2. Maximum length: 8. |
| `payload.gl` | `string` | No | `"us"` | Country code. Defaults to `us`. Minimum length: 2. Maximum length: 2. |
| `payload.page` | `integer` | No | — | 1-indexed results page. One call returns a fixed \~20 places and each page is billed separately, so only request page 2+ when page 1 came back full and you genuinely need more. A query with fewer than \~20 total matches returns an EMPTY page 2 and still costs a full credit. There is no per-call result limit: /maps ignores `num`. Minimum: 1. |
| `payload.autocorrect` | `boolean` | No | — | Enable query autocorrection. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Run a Serper Google Maps search. Returns a fixed ~20 places per call and is billed per call, not per place, so narrow the result set with a more specific `query` or an `ll` location bias rather than by paging. Unlike serper_google_search, this endpoint does not support a `num` result cap.",
    "properties": {
      "query": {
        "type": "string",
        "description": "Maps search query string.",
        "aliases": [
          "q"
        ]
      },
      "ll": {
        "type": "string",
        "description": "GPS position and zoom in `@latitude,longitude,zoom` format.",
        "minLength": 1
      },
      "placeId": {
        "type": "string",
        "description": "Optional Google place ID filter/anchor.",
        "minLength": 1
      },
      "cid": {
        "description": "Optional Google CID filter/anchor.",
        "anyOf": [
          {
            "type": "string",
            "minLength": 1
          },
          {
            "type": "integer",
            "minimum": 0
          }
        ]
      },
      "hl": {
        "type": "string",
        "description": "Language code. Defaults to `en`.",
        "default": "en",
        "minLength": 2,
        "maxLength": 8
      },
      "gl": {
        "type": "string",
        "description": "Country code. Defaults to `us`.",
        "default": "us",
        "minLength": 2,
        "maxLength": 2
      },
      "page": {
        "type": "integer",
        "description": "1-indexed results page. One call returns a fixed ~20 places and each page is billed separately, so only request page 2+ when page 1 came back full and you genuinely need more; a query with fewer than ~20 total matches returns an EMPTY page 2 and still costs a full credit. There is no per-call result limit: /maps ignores `num`.",
        "minimum": 1
      },
      "autocorrect": {
        "type": "boolean",
        "description": "Enable query autocorrection."
      }
    },
    "required": [
      "query"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.searchParameters` | `record` | No | — | — |
| `result.data.places` | `array` | No | — | — |
| `result.data.places[].position` | `number` | No | — | — |
| `result.data.places[].title` | `string` | No | — | — |
| `result.data.places[].address` | `string` | No | — | — |
| `result.data.places[].latitude` | `number` | No | — | — |
| `result.data.places[].longitude` | `number` | No | — | — |
| `result.data.places[].rating` | `number` | No | — | — |
| `result.data.places[].ratingCount` | `number` | No | — | — |
| `result.data.places[].category` | `string` | No | — | — |
| `result.data.places[].phoneNumber` | `string` | No | — | — |
| `result.data.places[].website` | `string` | No | — | — |
| `result.data.places[].cid` | `string \| number` | No | — | — |
| `result.meta` | `record` | No | — | Additional response metadata (status, paging). |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Provider response payload.",
        "properties": {
          "searchParameters": {
            "type": "object",
            "additionalProperties": {}
          },
          "places": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "position": {
                  "type": "number"
                },
                "title": {
                  "type": "string"
                },
                "address": {
                  "type": "string"
                },
                "latitude": {
                  "type": "number"
                },
                "longitude": {
                  "type": "number"
                },
                "rating": {
                  "type": "number"
                },
                "ratingCount": {
                  "type": "number"
                },
                "category": {
                  "type": "string"
                },
                "phoneNumber": {
                  "type": "string"
                },
                "website": {
                  "type": "string"
                },
                "cid": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": {}
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `per_result` (per result).
* Estimated Deepline credits: `0.04` per pricing unit.

## Related documentation

* [Serper provider guide](https://deepline.com/docs/providers/serper/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.