Check edit status for locations and attributes

When you update business information through the My Business Business Information API or the Business Profile UI, edits pass through a moderation and verification pipeline before appearing live on Google Search and Maps. Additionally, Google may update business details based on user reports or licensed data sources.

The v1alpha Edit Status endpoints let you retrieve a unified view of a location or its attributes in a single request:

  • Merchant-provided data: The values last submitted by the merchant.
  • Consumer-facing data: The values live on Google Search and Maps.
  • Extended field metadata: Per-field or per-attribute edit status, including the lifecycle stage of the latest edit, the origin source (API or UI), the timestamp of the last edit, and any policy violation reason if an edit was rejected.

Before you begin

Before you use the My Business Business Information API, register your application and obtain OAuth 2.0 credentials. For details on how to get started, see Basic setup.

Retrieve extended location data

To inspect the merchant-provided location data, consumer-facing location data, and per-field edit status for a location, call locations.getExtended.

Unlike locations.get, locations.getExtended does not require a readMask parameter and returns the full ExtendedLocation resource.

Request

HTTP
GET https://mybusinessbusinessinformation.googleapis.com/v1alpha/locations/{locationId}:getExtended

Response

The response contains three top-level fields:

  • locationProvidedByMerchant: The Location data as managed by the merchant.
  • locationSeenByConsumers: The Location data visible to consumers on Google Search and Maps.
  • extendedFieldData: A map of top-level Location field names in snake_case (such as title, phone_numbers, website_uri, storefront_address, or regular_hours) to ExtendedFieldData objects. Keys are always plain top-level field names, never nested subfields.
{
  "locationProvidedByMerchant": {
    "name": "locations/{locationId}",
    "title": "Example Coffee Roasters - Best Coffee in Sydney",
    "phoneNumbers": {
      "primaryPhone": "02 5550 1234"
    },
    "websiteUri": "https://www.example.com/"
  },
  "locationSeenByConsumers": {
    "name": "locations/{locationId}",
    "title": "Example Coffee Roasters",
    "phoneNumbers": {
      "primaryPhone": "+61 2 5550 1234"
    },
    "websiteUri": "https://www.example.com/"
  },
  "extendedFieldData": {
    "title": {
      "lastEditLifecycleStage": "EDIT_LIFECYCLE_STAGE_REJECTED",
      "rejectionReason": "MISREPRESENTATION",
      "updateTime": "2026-09-25T08:00:00Z",
      "source": "SOURCE_API"
    },
    "phone_numbers": {
      "lastEditLifecycleStage": "EDIT_LIFECYCLE_STAGE_UPDATED_BY_GOOGLE",
      "updateTime": "2026-09-20T14:15:00Z",
      "source": "SOURCE_UI"
    },
    "website_uri": {
      "lastEditLifecycleStage": "EDIT_LIFECYCLE_STAGE_ACCEPTED",
      "updateTime": "2026-09-15T10:30:00Z",
      "source": "SOURCE_API"
    }
  }
}

Retrieve extended attributes data

To inspect the merchant-provided values, consumer-facing values, and edit status for a location's attributes, call locations.attributes.getExtended.

Request

HTTP
GET https://mybusinessbusinessinformation.googleapis.com/v1alpha/locations/{locationId}/attributes:getExtended

Response

The response returns an ExtendedAttributes resource containing a list of ExtendedAttribute entries. Each entry pairs attributeProvidedByMerchant and attributeSeenByConsumers with an extendedFieldData object for that attribute:

{
  "name": "locations/{locationId}/attributes",
  "extendedAttributes": [
    {
      "attributeProvidedByMerchant": {
        "name": "attributes/has_wheelchair_accessible_entrance",
        "valueType": "BOOL",
        "values": [
          true
        ]
      },
      "attributeSeenByConsumers": {
        "name": "attributes/has_wheelchair_accessible_entrance",
        "valueType": "BOOL",
        "values": [
          true
        ]
      },
      "extendedFieldData": {
        "lastEditLifecycleStage": "EDIT_LIFECYCLE_STAGE_ACCEPTED",
        "updateTime": "2026-09-10T12:00:00Z",
        "source": "SOURCE_API"
      }
    },
    {
      "attributeProvidedByMerchant": {
        "name": "attributes/wi_fi",
        "valueType": "ENUM",
        "values": [
          "free_wi_fi"
        ]
      },
      "attributeSeenByConsumers": {
        "name": "attributes/wi_fi",
        "valueType": "ENUM",
        "values": [
          "paid_wi_fi"
        ]
      },
      "extendedFieldData": {
        "lastEditLifecycleStage": "EDIT_LIFECYCLE_STAGE_PENDING",
        "updateTime": "2026-09-28T16:45:00Z",
        "source": "SOURCE_API"
      }
    }
  ]
}

Understand extended field metadata

Each ExtendedFieldData object contains the following fields:

Field Type Description
lastEditLifecycleStage EditLifecycleStage The moderation or serving state of the most recent edit to this field or attribute.
rejectionReason PolicyViolation The policy violation that caused the edit to be rejected. Populated when lastEditLifecycleStage is EDIT_LIFECYCLE_STAGE_REJECTED.
updateTime string (Timestamp) The timestamp when the last edit to this field or attribute was submitted (RFC 3339 format).
source Source The origin surface where the merchant submitted the edit (SOURCE_API or SOURCE_UI).

Edit lifecycle stages

The EditLifecycleStage enum indicates where an edit is in its lifecycle:

Value Description Recommended action
EDIT_LIFECYCLE_STAGE_ACCEPTED The merchant's edit has been approved and is eligible for serving. None required.
EDIT_LIFECYCLE_STAGE_PENDING The merchant's edit is under review and hasn't been applied to the consumer-facing listing. Wait for moderation to complete. Don't repeatedly resubmit identical edits while an edit is pending.
EDIT_LIFECYCLE_STAGE_REJECTED The merchant's edit wasn't accepted. Check rejectionReason for the specific PolicyViolation value. Correct the underlying policy violation and submit a new update using locations.patch or locations.updateAttributes.
EDIT_LIFECYCLE_STAGE_UPDATED_BY_GOOGLE The consumer-facing value was updated by Google (for example, from user reports or external sources) and differs from the merchant-provided value. Review the locationSeenByConsumers or attributeSeenByConsumers value and either accept or override it. See Manage Google Updates.
EDIT_LIFECYCLE_STAGE_DRAFT The edit has been saved as a draft (for example, on an unverified location) and isn't live on Google Search and Maps. Complete location verification so the listing can go live.
EDIT_LIFECYCLE_STAGE_UNSPECIFIED The edit lifecycle stage is unknown or unspecified. None.

Edit sources

The Source enum identifies the channel through which the merchant submitted the edit:

  • SOURCE_API: The edit was submitted through the My Business Business Information API.
  • SOURCE_UI: The edit was submitted through the Business Profile web UI or mobile app.
  • SOURCE_UNSPECIFIED: The source of the edit isn't specified.

Policy violations

When lastEditLifecycleStage is EDIT_LIFECYCLE_STAGE_REJECTED, the rejectionReason field provides a PolicyViolation enum value explaining why the edit was rejected. Rejection reasons cover the following areas (examples):

  • Profile and account status: ACCOUNT_RESTRICTED_AND_SUSPENDED, ACCOUNT_RESTRICTED_AND_EDIT_REJECTED, ASSOCIATED_ACCOUNT_SUSPENDED, BUSINESS_INELIGIBLE, LOCATION_SUSPENDED, LOCATION_VERIFICATION_REQUIRED, OWNERSHIP_REVOKED, PO_BOX.
  • Editing restrictions: EDITING_RESTRICTION, ILLEGAL_BUSINESS_HOURS_EDIT, IDENTITY_CHANGE, GEOGRAPHIC_LOCATION_CHANGE.
  • Content policies: MISREPRESENTATION, OFF_TOPIC, PERSONAL_INFO, GIBBERISH_AND_REPETITIVE, OBSCENITY_AND_PROFANITY, GENERIC_QUALITY.

For the complete list of enum values and descriptions, see the PolicyViolation reference documentation.