---
title: "Google Maps Business Search API"
method: GET
path: "/v1/google/business-search"
tags: ["Google Maps"]
---

# Google Maps Business Search API

`GET /v1/google/business-search`

## Request

- Base URL: `https://api.captapi.com`
- URL: `https://api.captapi.com/v1/google/business-search`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Local businesses from a Maps search — name, address, phone, website, rating, hours, place id.

Search Google Maps for a keyword and get up to 100 businesses. q is required (min 2 characters). Pass location as a place name — Austin, TX, Istanbul, Turkey, Paris, France, Brooklyn, NY, or a country such as Germany — or omit it and use locationCode (default 2840, the United States). The response echoes the matched place name and its locationCode. A city name shared by several places (Paris, London) returns 400 with suggestions and costs nothing; add the region or country. language defaults to en. limit is 1–100 and is not a page you can walk: there is no nextCursor. A successful call costs 2 credits even when businesses is empty, because the lookup still ran. Failures cost 0. phone, website, rating, and reviewCount are null when Maps does not publish them — null is not zero. hoursStatus is Maps' own open/closed label (for example open or close), not a boolean we invented. image URLs are hosted by Google and can expire; there is no expiresAt. Ads and other non-business rows are left out and counted in omittedCount. This endpoint does not return owner emails. cache defaults to false. cache=true reuses a 24 hour response, and cache hits are free. The sample is one live listing captured on 10 October 2026, with every field Maps published on that row filled in. Other listings still leave unpublished fields null.

Docs: https://captapi.com/apis/google-maps-business-search

## Query parameters

- `q` string, required
- `location` string
- `locationCode` integer
- `language` string
- `limit` integer
- `cache` boolean

## Response `200`

Success. The data object for this endpoint.

- object
  - `success` unknown, required
  - `data` object, required
    - `query` string: The keyword you sent.
    - `location` string: Place the search ran in, as Maps names it (Austin,Texas,United States). Null when you used locationCode instead.
    - `locationCode` integer: Numeric place code that was used. 2840 is the United States.
    - `language` string: Language code that was used. Default en.
    - `limit` integer: Max businesses requested (1–100). Not a page cursor.
    - `totalReturned` integer: How many businesses are in businesses[].
    - `omittedCount` integer: Rows that were not businesses (ads and other listing types) and were left out of businesses[].
    - `businesses` object[]
      - `rank` integer: Position in the Maps results (1-based).
      - `title` string: Business name.
      - `category` string: Primary Maps category. Null when omitted.
      - `additionalCategories` string[]: Extra Maps categories. Null when the listing has none.
      - `snippet` string: Short Maps blurb. Null when omitted.
      - `address` string: Single-line address. Null when omitted.
      - `city` string: City from the address. Null when omitted.
      - `region` string: Region or state from the address. Null when omitted.
      - `zip` string: Postal code. Null when omitted.
      - `countryCode` string: Country code from the address. Null when omitted.
      - `phone` string: Phone number as published. Null when Maps does not show one — not an empty string.
      - `website` string: Business website. Null when Maps does not show one.
      - `contactUrl` string: Maps contact link when published. Null otherwise.
      - `bookOnlineUrl` string: Maps booking link when published. Null otherwise.
      - `rating` number: Star rating when published. Null when omitted — not zero.
      - `reviewCount` integer: Number of ratings when published. Null when omitted — not zero.
      - `ratingDistribution` object: Count of 1–5 star ratings when published. Null when omitted.
        - `1` integer
        - `2` integer
        - `3` integer
        - `4` integer
        - `5` integer
      - `priceLevel` string: Maps price label when published, such as inexpensive or moderate. Null when omitted.
      - `latitude` number: Latitude. Null when omitted.
      - `longitude` number: Longitude. Null when omitted.
      - `placeId` string: Maps place id.
      - `cid` string: Maps customer id, when published.
      - `mapsUrl` string: Maps URL for this place, built from placeId (or cid when placeId is missing).
      - `image` string: Photo URL hosted by Google. It can expire. There is no expiresAt.
      - `photoCount` integer: Photo count when published. Null when omitted.
      - `isClaimed` boolean: Whether the listing is claimed. Null when omitted.
      - `hoursStatus` string: Maps' current open/closed label when published (for example open or close). Null when omitted. Not a boolean.
      - `hours` object: Weekly timetable when published. Null when omitted.
        - `sunday` object[]
          - `open` object
            - `hour` integer
            - `minute` integer
          - `close` object
            - `hour` integer
            - `minute` integer
        - `monday` object[]
          - `open` object
            - `hour` integer
            - `minute` integer
          - `close` object
            - `hour` integer
            - `minute` integer
        - `tuesday` object[]
          - `open` object
            - `hour` integer
            - `minute` integer
          - `close` object
            - `hour` integer
            - `minute` integer
        - `wednesday` object[]
          - `open` object
            - `hour` integer
            - `minute` integer
          - `close` object
            - `hour` integer
            - `minute` integer
        - `thursday` object[]
          - `open` object
            - `hour` integer
            - `minute` integer
          - `close` object
            - `hour` integer
            - `minute` integer
        - `friday` object[]
          - `open` object
            - `hour` integer
            - `minute` integer
          - `close` object
            - `hour` integer
            - `minute` integer
        - `saturday` object[]
          - `open` object
            - `hour` integer
            - `minute` integer
          - `close` object
            - `hour` integer
            - `minute` integer
      - `isDirectoryItem` boolean: True when the row is a directory listing. Null when omitted.

## Other responses

- `400`: Bad request: wrong platform URL, unknown endpoint, or an invalid parameter value. Not billed.
- `401`: Missing, invalid or revoked API key. Not billed.
- `402`: Not enough credits for this request. Not billed.
- `404`: The resource does not exist or is not public. Not billed.
- `422`: A required parameter is missing or has the wrong type. Not billed.
- `429`: Rate limit reached. Wait for Retry-After seconds. Not billed.
- `502`: The platform could not be reached or returned nothing usable. Retryable, not billed. 503 and 504 use the same envelope.

---

[API](https://skmtc.dev/captapi/apis/captapi-api.md) · [All operations](https://skmtc.dev/captapi/apis/captapi-api/llms.txt) · [OpenAPI document](https://skmtc.dev/captapi/apis/captapi-api/revisions/c9b9ac5ff1bd?raw)
