Zernio
APIFor you
Zernio
APIFor you
Platforms

Google Business Profile

Overview

Publish

Posts & content typesMedia requirementsEvent & offer postsMulti-location posting

Engage

AnalyticsInbox

Manage

Business Profile managementServices & food menus

Reference

Fields, media & limits
Dashboard
OverviewPlatformsAPI ReferenceResources
All platforms

Google Business Profile

Social Posting

Publish updates, events and offers to a Google Business Profile location with the Zernio API, then manage its reviews, listing details and performance metrics.

Authentication details

Connecting accounts guide
OAuth 2.0

Connect endpoints

  • GET /v1/connect/googlebusiness/locationsList Google Business Profile locations
  • POST /v1/connect/googlebusiness/select-locationSelect Google Business Profile location
Read the full connect steps in the guide

Permissions3 scopes

Always requested

Pass scopes=posting,analytics to the connect endpoint to ask only for those areas. The first row comes with every connection.

Publish updates, events and offers to Google Business Profile (googlebusiness) with POST /v1/posts and platform: "googlebusiness".

The same account also serves reviews, listing management (hours, photos, services, menus, verification) and location-level performance metrics.

Quick reference

PropertyValue
Character limit1,500
Images per post1
Videos per postNot supported
Image formatsJPEG, PNG only (WebP auto-converted)
Image max size5 MB
Image min dimensions400 x 300 px
Post typesText, Text+Image, Text+CTA, Event, Offer
SchedulingYes
Inbox (Reviews)Yes
Inbox (DMs/Comments)No
AnalyticsLocation-level only (per-post deprecated by Google)

Before you start

Google Business Profile requires a verified location.

Posts appear in Google Search, Google Maps and the Knowledge Panel rather than in a social feed. They contribute to local search ranking.

A post stays visible for about 7 days before Google archives it, so post at least weekly.

Videos are not supported. A text-only post works but gets less visibility than one with an image or a call-to-action button.

Connect

Call GET /v1/connect/googlebusiness with profileId (Get OAuth connect URL). Send the user's browser to the returned authUrl.

After Google's consent screen the user picks which location to connect. Zernio hosts that screen by default.

To build it yourself, pass headless=true and use List locations and Select location.

The connecting accounts guide covers both modes and scopes. Account health reports what a connected account can do.

TypeScript
import Zernio from '@zernio/node';

const zernio = new Zernio();

const { data: connect } = await zernio.connect.getConnectUrl({
  path: { platform: 'googlebusiness' },
  query: { profileId: '66a1f0c2a4b9d3e8f1a2b3c4', redirect_url: 'https://myapp.com/callback' }
});
// Send the user's browser to connect.authUrl

Response (200):

JSON
{
  "authUrl": "https://accounts.google.com/o/oauth2/v2/auth?client_id=...",
  "state": "..."
}

After the location is selected, the user lands on redirect_url with these params appended:

Text
connected=googlebusiness&profileId=...&accountId=...

One account is one location. An account that manages several locations posts to the others with locationId; see Multi-Location Posting.

Publish

A plain post becomes a STANDARD update on the connected location. Call POST /v1/posts with:

  • content
  • at most one image in mediaItems
  • a platforms entry with platform: "googlebusiness"
  • publishNow: true
Terminal
curl -X POST https://zernio.com/api/v1/posts \
  -H "Authorization: Bearer $ZERNIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Open all holiday weekend. Stop by for the seasonal menu.",
    "mediaItems": [
      {"type": "image", "url": "https://cdn.example.com/holiday-special.jpg"}
    ],
    "platforms": [
      {"platform": "googlebusiness", "accountId": "66b2e19d8c3f5a7e9d0b1c2d"}
    ],
    "publishNow": true
  }'

Response (201):

JSON
{
  "post": {
    "_id": "65f1c0a9e2b5af0012ab34cd",
    "status": "published",
    "platforms": [
      {
        "platform": "googlebusiness",
        "status": "published",
        "platformPostId": "1234567890123456789",
        "platformPostUrl": "https://business.google.com/..."
      }
    ]
  }
}

Replace publishNow with scheduledFor and timezone to schedule it.

Call-to-action buttons, text-only posts and edits are on Posts & Content Types. topicType: "EVENT" and "OFFER" are on Event & Offer Posts.

Common errors

ErrorCauseFix
402 with code: "PAYMENT_REQUIRED" on GET /v1/connect/googlebusinessA billing gate stopped the connection before OAuth started, usually no payment method on file.Send the user to the dashboard_url in the response, then call connect again.
500 on GET /v1/connect/googlebusiness/locationsGoogle refused the listing: the token is invalid, or the user lacks permission on the Google Business account.Restart the connect flow so the user re-authorizes with business.manage.
404 on POST /v1/connect/googlebusiness/select-locationlocationId is not one of the locations this connection manages.Pass an id from the List locations response of the same flow.

The publish-time errors are in Fields, Media & Limits, and Error handling covers the envelope.

In this section

Posts & content types

Create a Google Business Profile post with an image, add a call-to-action button, publish text only and edit a published post.

Media requirements

Image requirements for Google Business Profile posts, and the rules for media URLs.

Event & offer posts

Publish event and offer posts to Google Business Profile with topicType, event and offer in platformSpecificData.

Multi-location posting

List the locations an account manages, post to several in one request, switch the default location, and give a location its own profile.

Analytics

Read daily performance metrics and the search keywords that triggered impressions for a Google Business Profile location.

Inbox

List Google Business Profile reviews, reply to them and read reviews across several locations in one call.

Business Profile management

Read and update a Google Business Profile listing through the API, with verification, hours, photos, attributes and action links.

Services & food menus

Read and replace the service list of a Google Business Profile location, and the food menus of a restaurant or cafe.

Fields, media & limits

Every platformSpecificData field for a Google Business Profile post, the image requirements, what Google's API does not expose, and common errors with their fixes.

Related

  • Connecting accounts: the OAuth flow and the location selection step.
  • Create post: every field of the request.
  • Media uploads: upload images instead of hosting them.
  • Reviews: the inbox API for reviews.
  • Performance metrics: daily impressions, clicks, calls, directions and bookings.

Google Business Profile

40
  • GET
  • POST
  • GET
  • DELETE
  • GET
  • GET
  • GET
  • GET
  • GET
  • POST
  • GET
  • POST

Publishing

24· Unified API, shared with other platforms
  • POST
  • POST
  • POST
  • POST
  • GET
  • POST
  • GET
  • PUT
  • DELETE
  • POST
  • POST
  • POST

Analytics

8· Unified API, shared with other platforms
  • GET
  • GET
  • GET
  • GET
  • GET
  • GET
  • GET
  • GET

Reviews

3· Unified API, shared with other platforms
  • GET
  • POST
  • DELETE

Google Business Profile

2

Publishing

15· Unified API, shared with other platforms

Analytics

1· Unified API, shared with other platforms
Was this page helpful?

Limits & errors

What Threads' API does not expose and the common errors when publishing.

Posts & content types

Create a Google Business Profile post with an image, add a call-to-action button, publish text only and edit a published post.

On this page

Quick referenceBefore you startConnectPublishCommon errorsIn this sectionRelated