Zernio
Zernio
PlatformsGoogle Business ProfilePosts & Content TypesEvent & Offer PostsMulti-Location PostingBusiness Profile ManagementServices & Food MenusAnalyticsInboxFields, Media & Limits
Dashboard
llms.txtOpenAPI
OverviewPlatformsAPI ReferenceResources

Google Business Profile

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


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, and 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, and 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) and 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, or pass headless=true and build it yourself with List locations and Select location. The connecting accounts guide covers both modes and scopes; Account health reports what a connected account can do.

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):

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

After the location is selected the user lands on redirect_url with connected=googlebusiness&profileId=...&accountId=... appended. One account is one location; an account that manages several locations posts to the others with locationId, see Multi-Location Posting.

OAuth scopes

ScopeWhat it enables
https://www.googleapis.com/auth/business.manageManage locations: local posts, reviews and performance metrics
https://www.googleapis.com/auth/userinfo.profileAccount identity during connection
https://www.googleapis.com/auth/userinfo.emailAccount email during connection

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" and publishNow: true:

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):

{
  "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.

In this section

Posts & Content Types

Create a post with an image, add a call-to-action button and edit a published post

Event & Offer Posts

Event and offer posts with topicType, event and offer

Multi-Location Posting

List the locations an account manages and post to several at once

Business Profile Management

Verification, hours, photos, attributes and action links

Services & Food Menus

The service list, and the menus of a restaurant or cafe

Analytics

Daily performance metrics and the search keywords that triggered impressions

Inbox

List and reply to reviews

Fields, Media & Limits

Media requirements, every platformSpecificData field and common errors

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.

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.
Was this page helpful?

Threads

Publish text, image, video and carousel posts and thread sequences to Threads with the Zernio API, with topic tags, first comments and reply management.

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 startConnectOAuth scopesPublishIn this sectionCommon errorsRelated