LateLate API
Platforms

Google Business API

Post to Google Business Profile with Late API - Updates, CTAs, and location posts


Quick Start

Create a Google Business Profile post:

curl -X POST https://getlate.dev/api/v1/posts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "🎉 We are open this holiday weekend! Stop by for our special seasonal menu.",
    "mediaItems": [
      {"url": "https://example.com/holiday-special.jpg"}
    ],
    "platforms": [
      {"platform": "googlebusiness", "accountId": "YOUR_ACCOUNT_ID"}
    ],
    "publishNow": true
  }'
const response = await fetch('https://getlate.dev/api/v1/posts', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    content: '🎉 We are open this holiday weekend! Stop by for our special seasonal menu.',
    mediaItems: [
      { url: 'https://example.com/holiday-special.jpg' }
    ],
    platforms: [
      { platform: 'googlebusiness', accountId: 'YOUR_ACCOUNT_ID' }
    ],
    publishNow: true
  })
});

const { post } = await response.json();
console.log('Posted to Google Business!', post._id);
import requests

response = requests.post(
    'https://getlate.dev/api/v1/posts',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json={
        'content': '🎉 We are open this holiday weekend! Stop by for our special seasonal menu.',
        'mediaItems': [
            {'url': 'https://example.com/holiday-special.jpg'}
        ],
        'platforms': [
            {'platform': 'googlebusiness', 'accountId': 'YOUR_ACCOUNT_ID'}
        ],
        'publishNow': True
    }
)

post = response.json()
print(f"Posted to Google Business! {post['_id']}")

Overview

Google Business Profile posts support text and a single image. Videos are not supported.

Image Requirements

PropertyRequirement
Max Images1 per post
FormatsJPEG, PNG
Max File Size5 MB
Min Dimensions250 × 250 px
Recommended1200 × 900 px (4:3)

Aspect Ratios

RatioDimensionsNotes
4:31200 × 900 pxRecommended
1:11080 × 1080 pxSquare, good for profile
16:91200 × 675 pxLandscape

Note: Google may crop images. Use 4:3 for best results.

Call-to-Action Buttons

Google Business posts can include CTA buttons:

curl -X POST https://getlate.dev/api/v1/posts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Book your appointment today! Limited spots available this week.",
    "mediaItems": [
      {"url": "https://example.com/booking.jpg"}
    ],
    "platforms": [{
      "platform": "googlebusiness",
      "accountId": "YOUR_ACCOUNT_ID",
      "platformSpecificData": {
        "callToAction": {
          "type": "BOOK",
          "url": "https://mybusiness.com/book"
        }
      }
    }],
    "publishNow": true
  }'
const response = await fetch('https://getlate.dev/api/v1/posts', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    content: 'Book your appointment today! Limited spots available this week.',
    mediaItems: [
      { url: 'https://example.com/booking.jpg' }
    ],
    platforms: [{
      platform: 'googlebusiness',
      accountId: 'YOUR_ACCOUNT_ID',
      platformSpecificData: {
        callToAction: {
          type: 'BOOK',
          url: 'https://mybusiness.com/book'
        }
      }
    }],
    publishNow: true
  })
});
response = requests.post(
    'https://getlate.dev/api/v1/posts',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json={
        'content': 'Book your appointment today! Limited spots available this week.',
        'mediaItems': [
            {'url': 'https://example.com/booking.jpg'}
        ],
        'platforms': [{
            'platform': 'googlebusiness',
            'accountId': 'YOUR_ACCOUNT_ID',
            'platformSpecificData': {
                'callToAction': {
                    'type': 'BOOK',
                    'url': 'https://mybusiness.com/book'
                }
            }
        }],
        'publishNow': True
    }
)

Available CTA Types

TypeDescriptionBest For
LEARN_MORELink to more informationArticles, about pages
BOOKBooking/reservation linkServices, appointments
ORDEROnline ordering linkRestaurants, food
SHOPE-commerce linkRetail, products
SIGN_UPRegistration linkEvents, newsletters
CALLPhone call actionContact, inquiries

Post Without Image

Text-only posts are supported:

{
  "content": "Happy Friday! 🎉 We're offering 20% off all services this weekend. Mention this post when you visit!",
  "platforms": [
    { "platform": "googlebusiness", "accountId": "acc_123" }
  ]
}

Image URL Requirements

Google Business has strict image requirements:

RequirementDetails
Public URLMust be publicly accessible
HTTPSSecure URLs only
No redirectsDirect link to image
No auth requiredCan't require login
✅ https://mybucket.s3.amazonaws.com/image.jpg
✅ https://example.com/images/post.png
❌ https://example.com/image?token=abc (auth required)
❌ http://example.com/image.jpg (not HTTPS)

Video Limitations

Google Business Profile does not support video posts. This is a platform limitation.

For video content:

  • Post to other platforms (YouTube, Instagram)
  • Include a link to the video in your text
  • Use a video thumbnail as your image with a "Watch" CTA

Location Selection

If you have multiple locations, you must have a connected account for each location. The account ID determines which location receives the post.

Post Visibility

Posts appear on:

  • Your Google Business Profile
  • Google Search (when searching your business)
  • Google Maps
  • Google Knowledge Panel

Character Limits

PropertyLimit
Post text1500 characters
CTA URLStandard URL length

Best Practices

Image Tips

  • Use high-quality, relevant images
  • Show your products/services
  • Include your branding subtly
  • Avoid excessive text overlay
  • Keep important content in center (cropping)

Content Tips

  • Include a clear call-to-action
  • Mention offers or specials
  • Keep it relevant and timely
  • Update regularly (weekly posts)

Common Issues

"Image not found"

  • Verify URL is publicly accessible
  • Check for authentication requirements
  • Ensure HTTPS
  • Test URL in incognito browser

"Invalid image format"

  • Use JPEG or PNG only
  • WebP and GIF not supported
  • Check file isn't corrupted

"Image too small"

Minimum 250 × 250 px. Recommended: 1200 × 900 px.

Post not appearing

  • Posts may take 24-48 hours to appear
  • Check Google Business Console for approval status
  • Ensure account is verified

CTA not working

  • Verify URL is valid and accessible
  • Use HTTPS
  • Avoid shortened URLs