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

# Google Local Pack schema

> Schema for Google's local pack (the map-backed '3-pack' of local businesses) returned by the Google Search endpoint, including ratings, price, category, address, phone, and hours.

This section documents the **local pack** data returned by the [Google Search endpoint](/api-reference/endpoint/monitor-google). These places are part of the same response, so no separate API call is needed. For use cases, pricing context, and copy-paste examples, see the [Local Pack API](https://cloro.dev/serp-api/local-pack/) page on the product site.

## Overview

Google's local pack (often called the "3-pack") is the map-backed block of local businesses that appears for local-intent queries such as `best pizza in new york city` or `plumbers in houston`. When this module is present, the response includes a `localResults` array where each entry is a single place.

<Frame caption="Local pack (Businesses) on the Google SERP">
  <img src="https://mintcdn.com/cloro/8iPUeeYL2FgHWCQc/images/google/search-local-pack.webp?fit=max&auto=format&n=8iPUeeYL2FgHWCQc&q=85&s=a4cabf5f54e63f90ac741806d908358a" alt="Local pack on the Google SERP" width="2000" height="969" data-path="images/google/search-local-pack.webp" />
</Frame>

The `localResults` field is omitted from `result` when the module is absent — treat it as optional rather than expecting an empty array.

The pack only exposes its visible places (typically 3). When Google renders a "More places" / "More businesses" control, the response also includes `result.localResultsMoreLink` — the absolute URL of Google's expanded [Local Finder](https://support.google.com/business/answer/7025874) for the query. The full expanded list is not embedded in this response; follow that link (or scrape it separately) to retrieve it.

<Note>
  Local pack extraction is **desktop only**. Mobile SERPs render the pack with a different layout, and Google's separate hotels/travel pack is a distinct module — neither is surfaced in `localResults`.
</Note>

## Place structure

`position` and `title` are always present. Every other field is included only when Google renders it for that place, so field availability varies by query (restaurant packs tend to carry `price`; service packs tend to carry `yearsInBusiness`, `phone`, and `hours`).

| Field             | Type   | Description                                                                                        |
| ----------------- | ------ | -------------------------------------------------------------------------------------------------- |
| `position`        | number | Position within the pack (1-indexed)                                                               |
| `title`           | string | Business name as displayed on the SERP                                                             |
| `placeId`         | string | Google entity id for the place (e.g. `"/g/11bw4ws2mt"`)                                            |
| `rating`          | number | Average star rating (0–5)                                                                          |
| `reviews`         | string | Review count as displayed by Google (e.g. `"26K"`). Free-form string — not normalized to a number. |
| `price`           | string | Price band as displayed by Google (e.g. `"$10–20"`). Currency symbol matches the locale.           |
| `type`            | string | Business category (e.g. `"Pizza"`, `"Plumber"`)                                                    |
| `yearsInBusiness` | string | Years-in-business badge, when shown (typical on service-style packs)                               |
| `address`         | string | Street address or locality as displayed on the SERP                                                |
| `phone`           | string | Phone number, when shown (locale-formatted)                                                        |
| `hours`           | string | Opening-hours text as displayed (e.g. `"Open · Closes 11 PM"`, `"Open 24 hours"`)                  |
| `description`     | string | Trailing snippet — a review quote or a service-options line                                        |
| `links`           | object | Action links, when rendered. See [Links](#links) below.                                            |

### Links

Business and service-style packs (plumbers, salons, dentists, …) render each place with action buttons. When present, `links` carries the ones we resolve:

| Field        | Type   | Description                         |
| ------------ | ------ | ----------------------------------- |
| `website`    | string | The business's own website URL      |
| `directions` | string | Absolute Google Maps directions URL |

Each key is included only when Google rendered that button. Restaurant packs render places as plain buttons and carry no `links` object.

## Response examples

Field availability varies by pack flavour. Restaurant and retail packs tend to carry `price` and a review snippet, and render places as plain buttons (no `links`); service packs tend to carry `yearsInBusiness`, `phone`, `hours`, and `links`.

### Restaurant pack

A response to `best pizza in new york city`:

```json theme={null}
{
  "success": true,
  "result": {
    "localResults": [
      {
        "position": 1,
        "title": "Joe's Pizza Broadway",
        "placeId": "/g/11bw4ws2mt",
        "rating": 4.4,
        "reviews": "26K",
        "price": "$10–20",
        "type": "Pizza",
        "address": "1435 Broadway",
        "description": "\"Fast service, great atmosphere, and truly scrumptious pizza.\""
      },
      {
        "position": 2,
        "title": "John's of Bleecker Street",
        "placeId": "/g/11b8zbnw8g",
        "rating": 4.6,
        "reviews": "8.4K",
        "price": "$10–20",
        "type": "Pizza",
        "address": "278 Bleecker St",
        "description": "\"Funky fun vibes, efficient and polite staff, DELICIOUS pizza.\""
      }
    ],
    "localResultsMoreLink": "https://www.google.com/search?q=best+pizza+in+new+york+city&udm=1"
  }
}
```

### Service pack

A response to `plumbers in houston` — note `yearsInBusiness`, `phone`, `hours`, and `links`:

```json theme={null}
{
  "success": true,
  "result": {
    "localResults": [
      {
        "position": 1,
        "title": "Village Plumbing, Air & Electric",
        "placeId": "/g/1td7nq1l",
        "rating": 4.8,
        "reviews": "10K",
        "type": "Plumber",
        "yearsInBusiness": "80+ years in business",
        "address": "Houston, TX",
        "phone": "(281) 344-2270",
        "hours": "Open · Closes 8 PM",
        "description": "Online estimates · Onsite services not available",
        "links": {
          "website": "https://villageplumbing.com/",
          "directions": "https://www.google.com/maps/dir//Village+Plumbing,+Air+%26+Electric"
        }
      },
      {
        "position": 2,
        "title": "Cooper Plumbing | Houston Plumber",
        "placeId": "/g/11h511y417",
        "rating": 4.9,
        "reviews": "550",
        "type": "Plumber",
        "yearsInBusiness": "10+ years in business",
        "address": "Houston, TX",
        "phone": "(832) 441-9683",
        "hours": "Open 24 hours",
        "description": "Onsite services not available",
        "links": {
          "website": "https://www.cooperplumbinghouston.com/",
          "directions": "https://www.google.com/maps/dir//Cooper+Plumbing"
        }
      }
    ],
    "localResultsMoreLink": "https://www.google.com/search?q=plumbers+in+houston&udm=1"
  }
}
```
