Skip to main content
These endpoints read or update the Google Business Profile location resource for the team’s selected location. They map to Google’s Business Information API. You need a connected Google Business account with a location already selected (same rule as posts). Base path: /api/v1/misc/google-business All requests use your usual API key authentication.

Get location

Endpoint: GET /api/v1/misc/google-business/location

Query

ParameterRequiredDescription
teamIdYesTeam that owns the connected Google Business social account.
fieldsNoSubset of location fields to return. If omitted, a default profile-oriented field list is used (name, title, profile, website, phones, categories, hours fields, address, service area, coordinates, open info, metadata).
fields accepts comma-separated values or repeated query params, for example fields=name,title or fields=name&fields=title. Allowed fields values (Google read field paths): name, languageCode, storeCode, title, phoneNumbers, categories, storefrontAddress, websiteUri, regularHours, specialHours, serviceArea, labels, adWordsLocationExtensions, latlng, openInfo, metadata, profile, relationshipData, moreHours, serviceItems The response shape follows Google’s API (we pass through the payload). Use it to drive your own UI or to read state before a patch.

Update location

Endpoint: PATCH /api/v1/misc/google-business/location Only the top-level keys you include in the update payload are sent to Google. Only the fields listed below participate. Send at least one patchable field. The API automatically determines which provided fields should be updated.

Patchable fields

FieldPurpose
titleDisplay name (max 255 characters). Use null to clear where Google allows.
profileObject with description (max 1500 characters) and other Google-supported keys.
websiteUriPublic website URL.
phoneNumbersprimaryPhone, additionalPhones[].
categoriesprimaryCategory.name, additionalCategories[].name (Google category resource names).
storefrontAddressStructured address (regionCode, postalCode, locality, addressLines, etc.).
regularHoursStandard weekly hours (periods with open/close days and times).
specialHoursExceptions (specialHourPeriods with dates and closed flag).
moreHoursNamed hour sets (for example department-specific hours); each item can include hoursTypeId and periods.
openInfoOpening status metadata (Google’s schema).
serviceAreaService-area business definition (Google’s schema).
latlnglatitude and longitude.

Other body keys

FieldDescription
validateOnlyIf true, Google validates the request without applying the change.

Useful metadata for feature eligibility

Google location metadata can indicate whether certain feature families are available for this location. In particular:
  • metadata.canModifyServiceList controls service-list edit eligibility.
  • metadata.canHaveFoodMenus controls food-menu eligibility.
Read metadata through GET /location before enabling related editing UI.

Example: title, description, and hours (anonymized)

Single update payload with profile copy plus weekly hours, holiday exceptions, and an extra hour type (moreHours). teamId and business copy below are placeholders.
{
  "teamId": "00000000-0000-4000-8000-000000000001",
  "title": "Example Shop - Used CDs",
  "profile": {
    "description": "Second-hand CD store for collectors. Rock, pop, jazz, and soundtracks. Each disc is checked for condition before sale."
  },
  "regularHours": {
    "periods": [
      {
        "openDay": "MONDAY",
        "openTime": "10:00",
        "closeDay": "MONDAY",
        "closeTime": "18:00"
      },
      {
        "openDay": "TUESDAY",
        "openTime": "10:00",
        "closeDay": "TUESDAY",
        "closeTime": "18:00"
      },
      {
        "openDay": "WEDNESDAY",
        "openTime": "10:00",
        "closeDay": "WEDNESDAY",
        "closeTime": "18:00"
      },
      {
        "openDay": "THURSDAY",
        "openTime": "10:00",
        "closeDay": "THURSDAY",
        "closeTime": "18:00"
      },
      {
        "openDay": "FRIDAY",
        "openTime": "10:00",
        "closeDay": "FRIDAY",
        "closeTime": "18:00"
      },
      {
        "openDay": "SATURDAY",
        "openTime": "10:00",
        "closeDay": "SATURDAY",
        "closeTime": "15:00"
      }
    ]
  },
  "specialHours": {
    "specialHourPeriods": [
      {
        "startDate": { "year": 2026, "month": 12, "day": 24 },
        "endDate": { "year": 2026, "month": 12, "day": 24 },
        "openTime": "10:00",
        "closeTime": "14:00",
        "closed": false
      },
      {
        "startDate": { "year": 2026, "month": 12, "day": 25 },
        "endDate": { "year": 2026, "month": 12, "day": 25 },
        "closed": true
      }
    ]
  },
  "moreHours": [
    {
      "hoursTypeId": "PICKUP",
      "periods": [
        {
          "openDay": "MONDAY",
          "openTime": "10:00",
          "closeDay": "MONDAY",
          "closeTime": "18:00"
        },
        {
          "openDay": "TUESDAY",
          "openTime": "10:00",
          "closeDay": "TUESDAY",
          "closeTime": "18:00"
        },
        {
          "openDay": "WEDNESDAY",
          "openTime": "10:00",
          "closeDay": "WEDNESDAY",
          "closeTime": "18:00"
        },
        {
          "openDay": "THURSDAY",
          "openTime": "10:00",
          "closeDay": "THURSDAY",
          "closeTime": "18:00"
        },
        {
          "openDay": "FRIDAY",
          "openTime": "10:00",
          "closeDay": "FRIDAY",
          "closeTime": "18:00"
        },
        {
          "openDay": "SATURDAY",
          "openTime": "10:00",
          "closeDay": "SATURDAY",
          "closeTime": "15:00"
        }
      ]
    }
  ]
}

Smaller payloads

You can send partial update payloads, for example only title and websiteUri, or only profile.

Hours only

You may include regularHours, specialHours, or moreHours in this endpoint, or use the dedicated Hours endpoint when you only change hours and want an explicit fields list for hour sections.