---
title: "Update location details"
method: PUT
path: "/v1/accounts/{accountId}/gmb-location-details"
tags: ["GMB Location Details"]
---

# Update location details

`PUT /v1/accounts/{accountId}/gmb-location-details`

Updates Google Business Profile location details. The updateMask field is required and specifies which fields to update.
This endpoint proxies Google's Business Information API locations.patch, so any valid updateMask field is supported.
Common fields: regularHours, specialHours, profile.description, websiteUri, phoneNumbers, categories, serviceItems.

## Path parameters

- `accountId` string, required

## Query parameters

- `locationId` string

## Request body

- object
  - `updateMask` string, required — Required. Comma-separated fields to update (e.g. 'regularHours', 'specialHours', 'profile.description', 'categories', 'serviceItems'). Any valid Google Business Information API updateMask field is supported.
  - `regularHours` object
    - `periods` object[]
      - `openDay` string
      - `openTime` string
      - `closeDay` string
      - `closeTime` string
  - `specialHours` object
    - `specialHourPeriods` object[]
      - `startDate` object
        - `year` integer
        - `month` integer
        - `day` integer
      - `endDate` object
        - `year` integer
        - `month` integer
        - `day` integer
      - `openTime` string
      - `closeTime` string
      - `closed` boolean
  - `profile` object
    - `description` string
  - `websiteUri` string
  - `phoneNumbers` object
    - `primaryPhone` string
    - `additionalPhones` string[]
  - `categories` object — Primary and additional business categories. Use updateMask='categories' to update.
    - `primaryCategory` object
      - `name` string — Category resource name (e.g. 'categories/gcid:laundromat'). Use Google's Categories API to look up valid IDs.
    - `additionalCategories` object[]
      - `name` string — Category resource name (e.g. 'categories/gcid:dry_cleaner')
  - `serviceItems` object[] — Services offered by the business. Use updateMask='serviceItems' to update.
    - `structuredServiceItem` object — A predefined service from Google's service type catalog
      - `serviceTypeId` string — Service type ID from Google's catalog (e.g. 'job_type_id:plumbing_drain_repair')
      - `description` string — Optional description of the service
    - `freeFormServiceItem` object — A custom service not in Google's catalog
      - `category` string — Category resource name this service belongs to (e.g. 'categories/gcid:laundromat')
      - `label` object
        - `displayName` string — Service name as displayed to users
        - `languageCode` string — Language code (e.g. 'en')
    - `price` object — Optional price for the service
      - `currencyCode` string — ISO 4217 currency code (e.g. 'USD')
      - `units` string — Whole units of the amount
      - `nanos` integer — Nano units (10^-9) of the amount
  - `title` string — Business name. Use updateMask='title'.
  - `storeCode` string — External store identifier, unique within the account. Use updateMask='storeCode'.
  - `labels` string[] — Free-form, internal-only labels for grouping (1-255 characters each). Use updateMask='labels'.
  - `storefrontAddress` object — Postal address of the storefront. Use updateMask='storefrontAddress'. Omit for service-area-only businesses.
    - `regionCode` string — ISO 3166-1 alpha-2 country code (e.g. 'BR')
    - `languageCode` string
    - `postalCode` string
    - `administrativeArea` string — State or province
    - `locality` string — City
    - `addressLines` string[]
  - `serviceArea` object — Areas the business serves. Use updateMask='serviceArea'. Full replacement: send every place you want to keep.
    - `businessType` 'CUSTOMER_LOCATION_ONLY' | 'CUSTOMER_AND_BUSINESS_LOCATION'
    - `places` object
      - `placeInfos` object[]
        - `placeName` string — Localized area name (e.g. 'Sao Paulo, SP, Brasil')
        - `placeId` string — Google Place ID for the area
    - `regionCode` string — Immutable. CLDR region code of the country the business is based in (e.g. 'BR')
  - `openInfo` object — Open/closed status of the location. Use updateMask='openInfo'.
    - `status` 'OPEN' | 'CLOSED_PERMANENTLY' | 'CLOSED_TEMPORARILY'
    - `openingDate` object
      - `year` integer
      - `month` integer
      - `day` integer
  - `moreHours` object[] — Additional hours for specific services (delivery, drive-through, etc.). Use updateMask='moreHours'.
    - `hoursTypeId` string — Hours type from Google's catalog (e.g. 'DELIVERY', 'DRIVE_THROUGH')
    - `periods` object[]
      - `openDay` string
      - `openTime` string
      - `closeDay` string
      - `closeTime` string
  - `latlng` object — Precise coordinates. Use updateMask='latlng'. Google restricts latlng writes to approved clients, so this update may be silently ignored or rejected.
    - `latitude` number
    - `longitude` number
  - `adWordsLocationExtensions` object — Alternate phone shown in Google Ads location extensions. Use updateMask='adWordsLocationExtensions'.
    - `adPhone` string

## Response `200`

Location updated successfully

- object
  - `success` boolean
  - `accountId` string
  - `locationId` string

## Other responses

- `400` — Invalid request or missing updateMask
- `401` — Unauthorized or token expired
- `404` — Resource not found

## Changes

- **2026-09-25** `2c04683ce694` — 8 info
  - added the optional property `details/adAccountId` to the response with the `400` status
  - added the optional property `details/adAccountId` to the response with the `401` status
  - added the optional property `details/createdObjects` to the response with the `400` status
  - added the optional property `details/createdObjects` to the response with the `401` status
  - …4 more
- **2026-09-16** `3e6ddf2a99ea` — 2 info
  - added the optional property `details/budgetScope` to the response with the `400` status
  - added the optional property `details/budgetScope` to the response with the `401` status
- **2026-09-15** `0dba7d004d75` — 4 info
  - added the optional property `details/quotaExhausted` to the response with the `400` status
  - added the optional property `details/quotaExhausted` to the response with the `401` status
  - added the optional property `details/quotaScope` to the response with the `400` status
  - added the optional property `details/quotaScope` to the response with the `401` status
- **2026-09-09** `222e3a38a382` — 9 info
  - added the new optional request property `adWordsLocationExtensions`
  - added the new optional request property `labels`
  - added the new optional request property `latlng`
  - added the new optional request property `moreHours`
  - …5 more

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/accounts/:accountId/gmb-location-details/put.md)

---

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