Skip to main content

Google Business Location Info

Read and edit the business information of a connected Google Business Profile location: description, regular and special opening hours, phone numbers, website and categories. Both endpoints call Google's Business Information API in real time and refresh the stored access token automatically. The Google Business connection already includes the required permission (business.manage), so no reconnection is needed.

  • Authentication: API Key — Authorization: Apikey <YOUR_API_KEY>
Which location?

The location is resolved in this order: location_id in the request → the location pinned to the profile → the account's only location. If the account has several locations and none of those applies, the API answers 400 location_required with the list of available_locations. List them with Get Google Business Locations.

Read location info​

  • Method: GET
  • Endpoint: /api/uploadposts/google-business/location-info

Query Parameters​

ParameterTypeRequiredDescription
userstringYesThe profile username that owns the connected Google Business account.
location_idstringNolocations/123, a bare 123, or accounts/456/locations/123. See "Which location?" above.

Example Request​

curl 'https://api.upload-post.com/api/uploadposts/google-business/location-info?user=agent-paris' \
-H 'Authorization: Apikey YOUR_API_KEY'

Successful Response (200 OK)​

{
"success": true,
"location_id": "locations/111",
"info": {
"location_id": "locations/111",
"title": "Agence Dupont",
"description": "Agence immobilière à Paris 11e.",
"phone": "+33 1 23 45 67 89",
"additional_phones": [],
"website": "https://dupont.example",
"primary_category": "categories/gcid:real_estate_agency",
"primary_category_name": "Real estate agency",
"additional_categories": ["categories/gcid:property_management_company"],
"regular_hours": [
{ "day": "MONDAY", "open": "09:00", "close": "18:30" }
],
"special_hours": [
{ "date": "2026-12-25", "closed": true },
{ "date": "2026-12-31", "open": "10:00", "close": "14:00", "end_date": "2026-12-31" }
],
"address": { "locality": "Paris", "postalCode": "75011", "regionCode": "FR", "addressLines": ["1 rue Exemple"] },
"open_status": "OPEN",
"maps_uri": "https://maps.google.com/?cid=1"
},
"location": { "name": "locations/111", "title": "Agence Dupont", "...": "raw Google Location resource" }
}

info is a flat, readable view; location is Google's raw Location resource.

Update location info​

Only the fields you send are changed: the API builds Google's updateMask from them. A field sent empty ("" or []) is cleared.

  • Method: PATCH (also accepts POST)
  • Endpoint: /api/uploadposts/google-business/location-info

Body Parameters (JSON)​

NameTypeRequiredDescription
userstringYesProfile username.
location_idstringNoLocation to edit (see "Which location?").
validate_onlybooleanNotrue asks Google to validate the change without applying it.
descriptionstringNoBusiness description, max 750 characters.
websitestringNoAbsolute http(s) URL. "" removes it.
phonestringNoPrimary phone, e.g. +33 1 23 45 67 89.
additional_phonesarray of stringNoUp to 2 extra phone numbers.
regular_hoursarrayNoWeekly hours: [{"day": "MONDAY", "open": "09:00", "close": "18:00"}]. day may also be a list (["MONDAY", "TUESDAY"]). Several entries for the same day = split hours (e.g. lunch break). A close earlier than open closes the next day; "close": "24:00" = until midnight. [] clears the hours.
special_hoursarrayNoExceptions: [{"date": "2026-12-25", "closed": true}] or [{"date": "2026-12-31", "open": "10:00", "close": "14:00"}]. Optional end_date. [] clears them.
primary_categorystringNoGoogle category id, e.g. gcid:real_estate_agency (or categories/gcid:...).
additional_categoriesarray of stringNoUp to 9 extra category ids.

regular_hours and special_hours also accept Google's native objects ({"periods": [...]} and {"specialHourPeriods": [...]}). When you send only phone or only additional_phones (same for the two category fields), the other half keeps its current value.

Example Request​

curl -X PATCH https://api.upload-post.com/api/uploadposts/google-business/location-info \
-H 'Authorization: Apikey YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"user": "agent-paris",
"description": "Agence immobilière à Paris 11e : vente, location et gestion.",
"website": "https://dupont.example",
"regular_hours": [
{ "day": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"], "open": "09:00", "close": "12:30" },
{ "day": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"], "open": "14:00", "close": "19:00" },
{ "day": "SATURDAY", "open": "10:00", "close": "13:00" }
],
"special_hours": [{ "date": "2026-12-25", "closed": true }]
}'

Successful Response (200 OK)​

{
"success": true,
"location_id": "locations/111",
"validate_only": false,
"update_mask": ["profile", "websiteUri", "regularHours", "specialHours"],
"ignored_fields": [],
"info": { "...": "same shape as the GET response" },
"location": { "...": "raw Google Location after the update" }
}

ignored_fields lists keys of your body that are not supported (they are not sent to Google).

Errors​

StatuscodeMeaning
400user_requiredMissing or invalid user.
404profile_not_foundThe profile does not exist.
400google_business_not_connectedThe profile has no Google Business account connected.
401google_business_reconnect_requiredThe Google connection expired; reconnect Google Business.
400location_requiredSeveral locations and none selected; see available_locations.
404no_locations / location_not_foundNo location for the account / Google does not know the location.
400invalid_fieldA field failed validation; see errors.
400no_fieldsNothing to update was sent.
400google_validation_errorGoogle rejected the change; see google_error (with fieldViolations).
403google_business_permission_deniedThe connected Google user cannot edit this location.
429google_rate_limitedGoogle rate limit; retry later.
502google_api_errorGoogle error on their side.

Notes:

  • Google may review some edits before they appear publicly on Search and Maps.
  • Category ids are Google's gcid: values; changing the primary category may trigger re-verification of the business.