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 (
APIorUI), 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
GET https://mybusinessbusinessinformation.googleapis.com/v1alpha/locations/{locationId}:getExtended
Response
The response contains three top-level fields:
locationProvidedByMerchant: TheLocationdata as managed by the merchant.locationSeenByConsumers: TheLocationdata visible to consumers on Google Search and Maps.extendedFieldData: A map of top-levelLocationfield names insnake_case(such astitle,phone_numbers,website_uri,storefront_address, orregular_hours) toExtendedFieldDataobjects. 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
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.