v1Resources/Locations/patchUpdate a location

Update a location

Edits an existing location's business details — address, categories, Google Business Profile attributes, services, and hours. Pass only the fields you want to change; a field you do pass replaces its current value entirely (an empty string clears a text field, a full new list replaces an existing one). The country can't be changed after creation. Saved changes are automatically queued to sync out to the connected directories and listings. The sync starts about 15 minutes after the location's last edit, so several quick edits go out together as one update.

patch/api/v1/locations/{id}
locations:write
Query parameters
idstringrequired
The location to update.
Request body
namestringoptional
The location's business name.
descriptionstringoptional
A short description of the business.
taglinestringoptional
A short tagline/slogan for the business.
storeCodestringoptional
Your internal store code / reference for this location. An empty string clears it, on Google too.
logoUrlstringoptional
URL of the location's logo image.
languageCodestringoptional
The primary language of the listing, as a code (e.g. "en").
streetstringoptional
Street address.
street1stringoptional
Street address, line 2.
citystringoptional
City.
stateIsostringoptional
State or region, as an ISO code (e.g. "CA").
postalCodestringoptional
Postal or ZIP code.
latitudenumberoptional
Latitude. If you change the address without also setting this, it's re-derived automatically.
longitudenumberoptional
Longitude. If you change the address without also setting this, it's re-derived automatically.
phonestringoptional
Phone number.
additionalPhonesarray of stringoptional
Any additional phone numbers beyond the primary one.
websitestringoptional
Website URL.
openStatusstring (OPEN | CLOSED_TEMPORARILY | CLOSED_PERMANENTLY)optional
Whether the business is open: OPEN, CLOSED_TEMPORARILY or CLOSED_PERMANENTLY. Send null to clear it.
openingDatestringoptional
When the business opened or will open, as YYYY-MM-DD. Send null to clear it.
googleAdsPhonestringoptional
The phone number Google Ads call extensions use for this location. Send null to clear it.
relationshipDataobjectoptional
Chain membership and parent or child links as Google models them: parentChain (chains/{id} or null), parentLocation (a placeId and relationType) and childrenLocations (a list of the same). It replaces the stored value; send null to clear it.
businessEmailstringoptional
A public contact email for the business.
categoryIdstringoptional
General category id, from GET /api/v1/locations/categories. A location needs a category: send this, categoryName, or publisherCategories.google.
categoryNamestringoptional
General category display name. A location needs a category: send this, categoryId, or publisherCategories.google. A name that doesn't match the catalog is kept as the display category.
publisherCategoriesobjectoptional
Per-publisher PRIMARY category — currently only google is supported here (an id and a name are both required; passing one alone would clear the category). Facebook/Apple/Bing can only be changed in the location editor. Look up google's id/name pair with GET /api/v1/locations/publisher-categories.
googleobjectoptional
idstringoptional
namestringoptional
additionalCategoriesarray of objectoptional
Up to 9 extra categories, each an { id?, name }. A bare name is accepted and its id is resolved from the category catalog where one matches. Look up ids yourself with GET /api/v1/locations/categories.
idstringoptional
namestringoptional
serviceAreaobjectoptional
Service-area settings on Master, for a business that serves customers at their location. Set businessType to CUSTOMER_LOCATION_ONLY to hide the street address: no publisher is sent a street it would show, even if one is stored. Send null to clear it. To set it for some publishers only, use publisherServiceAreas or applyToPublishers.
businessTypestring (CUSTOMER_LOCATION_ONLY | CUSTOMER_AND_BUSINESS_LOCATION)required
CUSTOMER_LOCATION_ONLY hides the address (service area only). CUSTOMER_AND_BUSINESS_LOCATION shows the address and the areas served.
placesarray of objectoptional
Areas served, up to 20. Each is { name, placeId?, placeType? }. Google and Bing publish them. Facebook and Apple have no list of service areas, so for them only the hidden street applies.
namestringrequired
placeIdstringoptional
Google Place ID of the area. Google only accepts places that have one, so a place without it is saved but not sent to Google.
placeTypestring (country | administrativeArea | locality | postalCode)optional
publisherServiceAreasobjectoptional
A different service area for Google, Facebook, Apple or Bing, each in the same shape as serviceArea, stored as that publisher's own value. Send null for a publisher to remove its own value so it uses serviceArea again. Send it alongside serviceArea to set Master and publishers in one call. Can't be combined with applyToPublishers.
googleobjectoptional
Service-area settings on Master, for a business that serves customers at their location. Set businessType to CUSTOMER_LOCATION_ONLY to hide the street address: no publisher is sent a street it would show, even if one is stored. Send null to clear it. To set it for some publishers only, use publisherServiceAreas or applyToPublishers.
businessTypestring (CUSTOMER_LOCATION_ONLY | CUSTOMER_AND_BUSINESS_LOCATION)required
CUSTOMER_LOCATION_ONLY hides the address (service area only). CUSTOMER_AND_BUSINESS_LOCATION shows the address and the areas served.
placesarray of objectoptional
Areas served, up to 20. Each is { name, placeId?, placeType? }. Google and Bing publish them. Facebook and Apple have no list of service areas, so for them only the hidden street applies.
namestringrequired
placeIdstringoptional
Google Place ID of the area. Google only accepts places that have one, so a place without it is saved but not sent to Google.
placeTypestring (country | administrativeArea | locality | postalCode)optional
facebookobjectoptional
Service-area settings on Master, for a business that serves customers at their location. Set businessType to CUSTOMER_LOCATION_ONLY to hide the street address: no publisher is sent a street it would show, even if one is stored. Send null to clear it. To set it for some publishers only, use publisherServiceAreas or applyToPublishers.
businessTypestring (CUSTOMER_LOCATION_ONLY | CUSTOMER_AND_BUSINESS_LOCATION)required
CUSTOMER_LOCATION_ONLY hides the address (service area only). CUSTOMER_AND_BUSINESS_LOCATION shows the address and the areas served.
placesarray of objectoptional
Areas served, up to 20. Each is { name, placeId?, placeType? }. Google and Bing publish them. Facebook and Apple have no list of service areas, so for them only the hidden street applies.
namestringrequired
placeIdstringoptional
Google Place ID of the area. Google only accepts places that have one, so a place without it is saved but not sent to Google.
placeTypestring (country | administrativeArea | locality | postalCode)optional
appleobjectoptional
Service-area settings on Master, for a business that serves customers at their location. Set businessType to CUSTOMER_LOCATION_ONLY to hide the street address: no publisher is sent a street it would show, even if one is stored. Send null to clear it. To set it for some publishers only, use publisherServiceAreas or applyToPublishers.
businessTypestring (CUSTOMER_LOCATION_ONLY | CUSTOMER_AND_BUSINESS_LOCATION)required
CUSTOMER_LOCATION_ONLY hides the address (service area only). CUSTOMER_AND_BUSINESS_LOCATION shows the address and the areas served.
placesarray of objectoptional
Areas served, up to 20. Each is { name, placeId?, placeType? }. Google and Bing publish them. Facebook and Apple have no list of service areas, so for them only the hidden street applies.
namestringrequired
placeIdstringoptional
Google Place ID of the area. Google only accepts places that have one, so a place without it is saved but not sent to Google.
placeTypestring (country | administrativeArea | locality | postalCode)optional
bingobjectoptional
Service-area settings on Master, for a business that serves customers at their location. Set businessType to CUSTOMER_LOCATION_ONLY to hide the street address: no publisher is sent a street it would show, even if one is stored. Send null to clear it. To set it for some publishers only, use publisherServiceAreas or applyToPublishers.
businessTypestring (CUSTOMER_LOCATION_ONLY | CUSTOMER_AND_BUSINESS_LOCATION)required
CUSTOMER_LOCATION_ONLY hides the address (service area only). CUSTOMER_AND_BUSINESS_LOCATION shows the address and the areas served.
placesarray of objectoptional
Areas served, up to 20. Each is { name, placeId?, placeType? }. Google and Bing publish them. Facebook and Apple have no list of service areas, so for them only the hidden street applies.
namestringrequired
placeIdstringoptional
Google Place ID of the area. Google only accepts places that have one, so a place without it is saved but not sent to Google.
placeTypestring (country | administrativeArea | locality | postalCode)optional
socialLinksobjectoptional
Social profile URLs: facebook, instagram, twitter, linkedin, youtube, tiktok, pinterest. On update only the keys you send change; null clears one. Published to Google as its url_* attributes and to Bing and Apple.
facebookstringoptional
instagramstringoptional
twitterstringoptional
linkedinstringoptional
youtubestringoptional
tiktokstringoptional
pintereststringoptional
paymentMethodsarray of stringoptional
Payment methods accepted, e.g. "Visa", "American Express", "Cash only". Replaces the whole list; an empty list or null clears it. Published to Google as its pay_* attributes and to Apple and Bing.
attributesobjectoptional
Google Business Profile attributes, as a map of attribute id to value (e.g. { "attributes/wi_fi": "free" }). REPLACES the whole set, including url_* links such as appointment or dealer links, so read the current ones from GET /api/v1/locations/{id} and pass back everything you want kept. Ids Google doesn't offer for the location's category are not saved and come back in rejectedAttributes; the rest of the update still applies. Social, menu and payment ids (url_facebook, url_menu, pay_*, …) are also returned there: set those with socialLinks, menuUrl and paymentMethods.
servicesarray of objectoptional
The services or products this location offers — replaces the existing list.
namestringoptional
descriptionstringoptional
pricenumberoptional
currencystringoptional
googleServiceTypeIdstringoptional
ownerNamestringoptional
The owner's name.
menuUrlstringoptional
URL of the business's menu.
yearEstablishednumberoptional
The year the business was established (e.g. 2012).
tagsarray of stringoptional
Internal tags for your own organization — not shown publicly. Replaces the existing list.
labelsarray of stringoptional
Internal labels for this location. Replaces the existing list.
regularHoursarray of objectoptional
The weekly regular-hours schedule — replaces the existing schedule entirely. One entry per day of the week.
daystring (MONDAY | TUESDAY | WEDNESDAY | THURSDAY | FRIDAY | SATURDAY | SUNDAY)optional
closedbooleanoptional
periodsarray of objectoptional
openstringoptional
closestringoptional
moreHoursarray of objectoptional
Extra hour types beyond regular hours (delivery, takeout, happy hour, etc.), replaces the existing list.
specialHoursarray of objectoptional
One-off date overrides — holiday closures or a single day's special hours — replaces the existing list. Any calendar date works, not just named holidays.
applyToPublishersarray of string (google | facebook | apple | bing)optional
Change these values for specific publishers only instead of the shared default every publisher inherits. Each listed publisher publishes its own value; the others keep using the main value. Saved even while a publisher isn't connected, and published as soon as it is. Remove one with clearPublisherOverrides.
Response
dataobjectoptional
locationobjectoptional
The full business profile for one location: address, hours, categories, attributes, services, media, and status — everything update_location can change, plus what create returned.
idstringoptional
Unique identifier for the location.
namestringoptional
The location's business name.
descriptionstringoptional
A description of the business, or null.
taglinestringoptional
A short tagline/slogan for the business, or null.
storeCodestringoptional
Your internal store code / reference for this location, or null.
logoUrlstringoptional
URL of the location's logo image, or null.
streetstringoptional
Street address, line 1, or null.
street1stringoptional
Street address, line 2, or null.
citystringoptional
City.
statestringoptional
State or region.
postalCodestringoptional
Postal or ZIP code, or null.
countrystringoptional
Country, as an ISO-3166-1 alpha-2 code, or null.
latitudenumberoptional
Latitude, or null.
longitudenumberoptional
Longitude, or null.
phonestringoptional
Primary phone number, or null.
additionalPhonesarray of stringoptional
Any additional phone numbers beyond the primary one.
websitestringoptional
The location's website URL, or null.
businessEmailstringoptional
A public contact email for the business, or null.
categoryNamestringoptional
The general category's display name, or null.
primaryCategoryDisplaystringoptional
The effective primary category's display name — per-publisher (Google) if set, else general — or null.
primaryCategoryGooglestringoptional
The location's primary Google category id (gcid), or null.
additionalCategoriesarray of objectoptional
Up to 9 extra categories, each with an id (when resolved) and a display name.
idstringoptional
namestringoptional
attributesarray of objectoptional
Google Business Profile attributes, as the stored { id, value } list.
idstringoptional
valueobjectoptional
The attribute's value — a boolean for yes/no attributes, a string for single-choice ones, or an object with setValues/unsetValues for multi-select.
servicesarray of objectoptional
The services or products this location offers.
namestringoptional
descriptionstringoptional
pricenumberoptional
currencystringoptional
googleServiceTypeIdstringoptional
ownerNamestringoptional
The owner's name, or null.
menuUrlstringoptional
URL of the business's menu, or null.
socialLinksobjectoptional
Social profile URLs by network, or null.
paymentMethodsarray of stringoptional
Payment methods accepted, as display names.
yearEstablishednumberoptional
The year the business was established, or null.
tagsarray of stringoptional
Internal tags for your own organization — not shown publicly.
labelsarray of stringoptional
Internal labels for this location.
regularHoursarray of objectoptional
The weekly regular-hours schedule, or null.
daystring (MONDAY | TUESDAY | WEDNESDAY | THURSDAY | FRIDAY | SATURDAY | SUNDAY)optional
closedbooleanoptional
periodsarray of objectoptional
moreHoursarray of objectoptional
Extra hour types beyond regular hours (delivery, takeout, etc.), or null.
specialHoursarray of objectoptional
One-off date overrides — holiday closures or a single day's special hours — or null.
serviceAreaobjectoptional
Service-area settings on Master, or null for a plain storefront.
businessTypestring (CUSTOMER_LOCATION_ONLY | CUSTOMER_AND_BUSINESS_LOCATION)required
CUSTOMER_LOCATION_ONLY hides the address (service area only). CUSTOMER_AND_BUSINESS_LOCATION shows the address and the areas served.
placesarray of objectoptional
Areas served, up to 20. Each is { name, placeId?, placeType? }. Google and Bing publish them. Facebook and Apple have no list of service areas, so for them only the hidden street applies.
publisherOverridesobjectoptional
Per-publisher values that differ from Master, keyed by google, facebook, apple or bing. Each publisher publishes these values; a publisher without an entry for a field uses the Master value. Kept whether or not the publisher is connected.
mediaByCategoryobjectoptional
Media items grouped by category (e.g. EXTERIOR, INTERIOR, FOOD_AND_DRINK, LOGO, TEAMS). Each item has a url, and optionally a label, kind (PHOTO or VIDEO), source, starred flag, and asset key.
clientIdstringoptional
ID of the client this location belongs to, or null.
archivedbooleanoptional
Whether the location is archived.
scheduledArchiveAtstringoptional
When archival was requested (also the token cancel-archive matches on), as an ISO 8601 timestamp, or null if none is pending.
verificationStatusstring (verified | pending | unverified | unknown)optional
Google verification state: verified, pending, unverified, or unknown, or null.
rejectedAttributesarray of stringoptional
Attribute ids from the request that were NOT written — either they have a dedicated field of their own, or their value had no valid Google representation. Present only when at least one was rejected.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
404The resource wasn't found, or doesn't belong to your agency.
422The request is missing a required parameter or is otherwise malformed.
429Too many requests. Retry after the number of seconds in the Retry-After header.
patch/api/v1/locations/{id}
Your API key
id *
Request body
{
  "data": {
    "location": {
      "id": "loc_456",
      "name": "Acme Dental — Downtown",
      "tagline": "Gentle care, on time",
      "city": "Austin",
      "state": "TX",
      "clientId": "cli_123"
    },
    "rejectedAttributes": []
  }
}

Guides that use this endpoint