# Google Business Profile connector: reviews, locations, and performance metrics in your data warehouse

> Erathos launches a managed Google Business Profile connector: sync reviews, locations, posts, and metrics to your data warehouse. BigQuery and more.

Source: https://www.erathos.com/en/blog/connector-release-google-my-business
Em português: https://www.erathos.com/blog/connector-release-google-my-business
Published: 2026-10-28
Category: New Connectors

![Google Business Profile](https://cms-media.erathos.com/New Connector - Google My Business.png)

Erathos is launching the managed connector for Google Business Profile, the API behind Google Business Profile. Twenty two endpoints available, ten supported destinations, zero pipeline code to write or maintain.

Google Business Profile exposes its data through the Google My Business API, authenticated with OAuth 2.0, which in theory lets you build your own extraction. In practice, that means writing and maintaining a custom ETL pipeline to handle an OAuth token lifecycle that renews every hour, a quota that starts at zero until Google approves your Cloud project, and resource chains that multiply requests across every location in the account, something most data teams discover too late does not scale. Erathos's connector solves this integration as a managed service, with no code for your team to write or maintain.

Every multi-location business that wants to understand how it performs on Google Search and Maps hits the same wall: reviews, photos, posts, and performance insights live inside the Google Business Profile console with per-location dashboards, the rest of the analytics stack lives in the warehouse, and joining the two turns into an engineering project nobody planned for. What starts as a Python script running the OAuth dance on a VM's cron job turns, three months later, into a pipeline nobody understands, that fails silently, and that no engineer wants to inherit.

## The problem with hand-built Google Business Profile pipelines

The Google My Business API authenticates with OAuth 2.0 instead of a static token, and every piece of data hangs off an account and its locations. The pattern looks simple enough to build in an afternoon with one of Google's client libraries. The real cost shows up later, and it is predictable.

There is no static API key. Access to the Business Profile API requires an OAuth client, an OAuth consent screen configured with the business.manage scope, and a token exchange that produces a refresh token. Access tokens expire after about one hour, so a homegrown pipeline has to renew tokens on its own, persist the refresh token securely, and recover when a password changes or access is revoked. A hand-rolled refresh flow fails with an opaque 401, usually at the worst possible time.

Quota starts at zero. Google's default API quota is 0 until the Cloud project is approved for Basic API Access, and even after approval there is a rate limit of 300 queries per minute per API plus per-endpoint daily caps. A sync that spans dozens or hundreds of locations burns through daily caps mid run, and code that does not detect the cap simply stops fetching partway through and reports success.

Every resource is a chain. Reviews, media, customer media, posts, menus, services, admins, verifications, and metrics are all sub-collections of each location, and locations hang off each account. A brand with 300 locations times a handful of endpoints per location is thousands of paginated requests per run, all inside per-endpoint daily caps. Miss one page or one location and the warehouse keeps a partial snapshot without any error.

Metrics that need special handling. Daily performance metrics arrive as a time series of date and value pairs per location, and search keyword impressions arrive as monthly aggregates per location. The iteration logic, metric by location by window, is where duplicated rows and missing days sneak in silently, because a gap in a time series is valid data, not an error.

Reviews are mutable. Customers edit comments and attach media after posting, and the business's own replies change over time. Google only pushes new review notifications if you set up Pub/Sub yourself; without that, the pipeline has to re-read every location on a schedule, and a one-time extraction snapshots a moving object. Dashboards keep showing stale review states with no error anywhere.

Schema evolution with no warning. A location row carries dozens of nested fields: address, hours, coordinates, open info, metadata. Attributes, services, and menus land as JSON. When Google adds attributes for a category or a new metric appears in the series, the loader that flattened a fixed set of columns either breaks or silently drops the new field. The inconsistency lands on the dashboard before it reaches your monitoring.

Observability that does not exist. A 200 OK on every request does not mean the data arrived complete. Without a record count per endpoint per run, without comparison against the previous window, without a volume drop alert, a sync that silently skipped half the locations after hitting a daily cap looks exactly like a healthy one.

The worst case scenario is not the pipeline that breaks and sends an alert. It is the pipeline that runs successfully and delivers wrong data, and the average rating that lands on the leadership dashboard is already calculated on an incomplete base.

## What you can do once Google My Business data reaches your warehouse

Before getting into the connector itself, it is worth documenting what you actually gain once reviews, locations, and performance metrics leave Google and land modeled alongside the rest of your stack.

### Review operations across every location, not one at a time

With reviews and location admins in the warehouse, you calculate average rating, review volume, response rate, and reply lag per location, per manager, and per week, and you watch the star rating distribution drift over time. Google's interface reports one profile at a time; comparing hundreds of locations against each other and against your own operational dimensions, team, region, franchise, requires the raw rows in the warehouse.

### Reviews crossed with revenue and the CRM

Joining review activity per location with sales per unit answers the question every multi-location business asks: does a rating drop precede a revenue drop, and by how much? Cross referencing reviewer profiles against your CRM's contact base routes dissatisfied customers to the retention team before they churn. This is only possible with Google My Business and the CRM in the same warehouse, joined on a business field.

### What local customers actually search for

searchkeyword\_impressions\_monthly records which search terms produced impressions for each location, and daily\_metrics\_time\_series tracks how impressions, calls, and direction requests move over time. Across the whole network, that becomes a map of local demand by city and by product, which feeds local SEO, ad copy, store inventory, and expansion decisions. The Google console shows a location's own numbers; the cross-location analysis requires the warehouse.

### A data quality audit of the entire network

The locations table, with place action links, service lists, and verifications, lets you audit the network as data: locations missing opening hours or a primary category, dead or duplicated booking and ordering links, phone numbers that no longer match the system of record, profiles stuck in pending verification. A data quality score per location, delivered to franchise and operations teams every morning, is a warehouse query, not a click-through of hundreds of profiles.

### Offerings and menus standardized across units

With food menus, service lists, and lodging details in the warehouse, chains compare menus, prices, and services across units, flag standardization gaps, and reconcile what is offered on Google with what POS and product data say is actually sold. A hotel group audits lodging attributes across properties; a restaurant chain catches units whose Google menu has diverged from the official one.

### Customer photos and followers as engagement signals

customer\_media and followers\_metadata turn user generated content into a metric: which locations get customers uploading photos, how photo volume and follower counts move over time, and how those signals relate to review volume and revenue. User generated content per unit is a leading indicator no native console aggregates across the network.

## What's available in the connector

The Google Business Profile connector delivers twenty two endpoints ready to be materialized in your destination warehouse:

Endpoint

What it contains

account\_admins

Admins of each Business Profile account, with role and pending invitation status

account\_invitations

Pending invitations on each account, with role and the target account or location

accounts

Business Profile accounts the authorized user manages, with name, type, role, verification state, account number, and organization info

attributes

Attribute definitions available to a location given its primary category and country, with value type, group, and display names

categories

Business categories supported by Google, with display names, service types, and more hours types

customer\_media

Media items customers contributed to each location, with format, URLs, dimensions, and attribution

daily\_metrics\_time\_series

Daily performance metrics per location as a time series of date and value pairs, such as impressions, calls, and direction requests

followers\_metadata

Follower metadata for each location, with the follower count

food\_menus

Food menus of each location, with sections, labels, cuisines, and source URL

local\_posts

Local posts published on each location: summary, topic type, call to action, media, offer and event details, and scheduled times

location\_admins

Admins and managers of each location, with role and pending invitation status

locations

Every location in each account: store code, address, phones, primary and additional categories, website, regular and special hours, service area, coordinates, labels, and open state

lodging

Lodging details for hotel-type locations: property and services, policies, food and drink, wellness, accessibility, sustainability, and guest units

media

Media items the business uploaded to each location, with format, dimensions, URLs, and location association

place\_action\_links

Action links configured on each location, such as booking, ordering, or reservation URLs, with action type, provider, and URI

place\_action\_type\_metadata

Metadata for the supported place action types, with display names

recommended\_google\_locations

Google locations recommended for each account, potential matches not yet claimed, with the URL to request admin rights

reviews

Customer reviews for each location: reviewer, star rating, comment, media attached to the review, create and update times, and the business's reply

searchkeyword\_impressions\_monthly

Monthly search keyword impressions for each location: which search terms produced impressions and their aggregated values

service\_list

Services offered by each location, with price and structured or free-form descriptions

verifications

Verification attempts for each location, with method, state, create time, and announcement

voice\_of\_merchant\_state

Whether each location holds voice of merchant control, with pending conditions such as verification, ownership conflicts, or guideline compliance

All twenty two endpoints sync as a full refresh, which matches how the Business Profile API exposes this data: per-location resources and time series with no stable incremental cursor to key on. Entity relationships are preserved at the destination: accounts are the parent of account admins, account invitations, locations, and recommended Google locations, and locations are the parent of reviews, media, customer media, posts, menus, services, admins, metrics, verifications, and merchant state.

## How to authenticate

- Client ID: the OAuth 2.0 client ID from your Google Cloud project, used to identify the connection.
- Client Secret: the secret that pairs with the Client ID for the OAuth 2.0 token exchange.
- Sign in with Google: a one-time authorization of the Google account that manages your Business Profiles, granted with the scope [https://www.googleapis.com/auth/business.manage](https://www.googleapis.com/auth/business.manage).

Where to find them: open the Google Cloud Console at console.cloud.google.com, create or select a project, enable the Google Business Profile API family under APIs & Services, Library, configure the OAuth consent screen adding the business.manage scope, and create an OAuth client ID of type Web application under APIs & Services, Credentials. Copy the generated Client ID and Client Secret, paste them into the Erathos connector form, complete the Sign in with Google step with the account that manages your profiles, and click Save and close after Google redirects you back. Erathos stores the refresh token and renews the access token, valid for about one hour, automatically.

One quota detail worth planning for: Google's default API quota is 0 until the Cloud project is approved for Basic API Access, which carries a rate limit of 300 queries per minute per API plus per-endpoint daily caps, so request the approval before scheduling your first sync.

The full process is documented in the connector guide at docs.erathos.com/connectors/apis/google-my-business.

## Why outsource ingestion to Erathos

The premise behind the connector is straightforward: the engineering work of maintaining ingestion should not be your data team's responsibility. The OAuth token lifecycle, quota and daily caps, request chains across every location, review mutations, schema evolution, failure alerts, volume drop alerts, backfills. All of that is the responsibility of whoever operates the ingestion platform. Once the connector is set up, the platform delivers:

### End-to-end visibility into every run

Extraction time per endpoint, record counts per run, which accounts and locations were processed, where retries happened. When a metric shifts on the dashboard and some team opens a ticket with the data team, you have the full trail to find the root cause.

### Alerts configured out of the box

Execution failures, volume drops per endpoint, and window delays are detected and routed through the alerting integrations your team already uses, such as Slack and email. You do not write that code.

### Reprocessing as a supported operation

Because the connector runs a full refresh, capturing a review reply posted yesterday or an updated menu is a matter of running the sync again, not reconstructing state with improvised DELETE plus INSERT sequences. When you need to reprocess a period, for example after changing the review model's logic or fixing a period affected by a quota issue, that is a platform operation.

Correct token renewal, quota management, pagination across hundreds of locations, and reprocessing are the platform's responsibility. The data team focuses on the model, not the plumbing.

## Available pipelines

The Google Business Profile connector is available with the following destinations:

- Google Business Profile → Azure SQL Server: [https://www.erathos.com/pipelines/google-my-business-azure-sql-server](https://www.erathos.com/pipelines/google-my-business-azure-sql-server)
- Google Business Profile → Azure Synapse: [https://www.erathos.com/pipelines/google-my-business-azure-synapse](https://www.erathos.com/pipelines/google-my-business-azure-synapse)
- Google Business Profile → BigQuery: [https://www.erathos.com/pipelines/google-my-business-bigquery](https://www.erathos.com/pipelines/google-my-business-bigquery)
- Google Business Profile → ClickHouse: [https://www.erathos.com/pipelines/google-my-business-clickhouse](https://www.erathos.com/pipelines/google-my-business-clickhouse)
- Google Business Profile → Databricks: [https://www.erathos.com/pipelines/google-my-business-databricks](https://www.erathos.com/pipelines/google-my-business-databricks)
- Google Business Profile → PostgreSQL: [https://www.erathos.com/pipelines/google-my-business-postgresql](https://www.erathos.com/pipelines/google-my-business-postgresql)
- Google Business Profile → Redshift: [https://www.erathos.com/pipelines/google-my-business-redshift](https://www.erathos.com/pipelines/google-my-business-redshift)
- Google Business Profile → S3 Iceberg: [https://www.erathos.com/pipelines/google-my-business-amazon-s3](https://www.erathos.com/pipelines/google-my-business-amazon-s3)
- Google Business Profile → Snowflake: [https://www.erathos.com/pipelines/google-my-business-snowflake](https://www.erathos.com/pipelines/google-my-business-snowflake)
- Google Business Profile → Supabase: [https://www.erathos.com/pipelines/google-my-business-supabase](https://www.erathos.com/pipelines/google-my-business-supabase)

## Get started

Create your Erathos account at [https://app.erathos.com/signup?slug=blog&button=cta&utm\_campaign=google-my-business\_release](https://app.erathos.com/signup?slug=blog&button=cta&utm_campaign=google-my-business_release) and connect Google Business Profile to your warehouse in minutes. With your Google Cloud Client ID and Client Secret plus a one-time Sign in with Google authorization, your first data lands at the destination with zero pipeline code to write, maintain, or monitor.

Customer reviews and local search data generated every day should not stay locked inside a SaaS, disconnected from the rest of your analytics model. Or worse: stuck in a homegrown pipeline that will keep costing your team's attention every month, forever.

See the connector's full documentation at [https://docs.erathos.com/connectors/apis/google-my-business](https://docs.erathos.com/connectors/apis/google-my-business).
