# Business Owner Posts (Google Maps)

> Business Owner Posts (Google Maps) is a paid API for AI agents from agents.openwebninja.com, paid per call via MPP, price unknown, status unknown (last checked 2026-10-14).

Retrieves paginated 'From the owner' posts for a specific Google Maps business, sorted chronologically.

## Facts

- Endpoint: GET https://agents.openwebninja.com/local-business-data/business-posts?utm_source=zero.xyz
- Price: price unknown
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-14
- Activations on Zero: 0
- Provider: agents.openwebninja.com
- Website: https://agents.openwebninja.com
- Canonical page: https://www.zero.xyz/c/agents-openwebninja-com-business-owner-posts-google-maps-4a745f34
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_I4qN-jyGGrQwV3Ti6qZgq

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability agents-openwebninja-com-business-owner-posts-google-maps-4a745f34
```

Example prompt: Can you pull all the 'From the owner' posts for the Google Maps business with ID ChIJkaUn1JPTD4gR7ZWpE9cCuow? I want to see what updates they've been posting.

## When to prefer this

Use this endpoint when you need to programmatically access the 'From the owner' section of a Google Maps listing — business announcements, promotions, events, or updates posted directly by the owner. Prefer this over review or photo endpoints when the goal is to track official business communications. It is the only endpoint in this suite specifically targeting owner-authored posts with chronological ordering and pagination support.

## Known failure modes

- Invalid or non-existent business_id returns empty posts array or error status
- Business has no owner posts — returns empty posts array with null cursor
- Invalid cursor value causes pagination failure or repeated first page
- Unsupported region or language code may fall back to defaults silently
- Rate limiting or quota exhaustion returns 402 or error status
- Google Maps listing may not expose owner posts for all business types

## How this service works

Get all / paginate Business Owner Posts ("From the owner" section on Google Maps) by Business Id, sorted chronologically.

## Output

Returns a paginated array of owner posts, each containing a unique post_id, post text, direct Google URL, outbound links, attached photo URLs, and UTC publish timestamp. Also includes a cursor for fetching the next page (null when exhausted), plus echoed request parameters and a request_id for tracing.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "business_id"
 ],
 "properties": {
  "cursor": {
   "type": "string",
   "description": "Specify the cursor obtained from the previous request to get the next of result page (use for pagination)."
  },
  "region": {
   "type": "string",
   "default": "us",
   "description": "Query Google Maps from a particular region or country.  \n  For a list of supported region/country codes see *https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes (Alpha-2 code)*."
  },
  "language": {
   "type": "string",
   "default": "en",
   "description": "Set the language of the results. For a list of supported language codes see *https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes*."
  },
  "business_id": {
   "type": "string",
   "example": "0x880fd393d427a591:0x8cba02d713a995ed",
   "description": "Unique Business Id. Accepts `google_id` / `business_id` or `place_id`.  \n\n  **Examples:**  \n  `0x880fd393d427a591:0x8cba02d713a995ed`  \n  `ChIJkaUn1JPTD4gR7ZWpE9cCuow`  "
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "status",
  "request_id",
  "parameters",
  "data"
 ],
 "properties": {
  "data": {
   "type": "object",
   "required": [
    "posts"
   ],
   "properties": {
    "posts": {
     "type": "array",
     "items": {
      "type": "object",
      "required": [
       "post_id"
      ],
      "properties": {
       "post_id": {
        "type": "string",
        "description": "Unique Google identifier of the owner post."
       },
       "post_link": {
        "type": "string",
        "nullable": true,
        "description": "Direct URL to the post on Google."
       },
       "post_text": {
        "type": "string",
        "nullable": true,
        "description": "Text content of the post."
       },
       "post_links": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "url": {
           "type": "string",
           "description": "Target URL of the link."
          },
          "caption": {
           "type": "string",
           "nullable": true,
           "description": "Caption of the link as shown on the post."
          }
         }
        },
        "nullable": true,
        "description": "Outbound links attached to the post."
       },
       "post_photos": {
        "type": "array",
        "items": {
         "type": "string"
        },
        "nullable": true,
        "description": "URLs of photos attached to the post."
       },
       "post_timestamp": {
        "type": "integer",
        "nullable": true,
        "description": "Unix epoch seconds matching post_datetime_utc."
       },
       "post_datetime_utc": {
        "type": "string",
        "nullable": true,
        "description": "ISO 8601 UTC datetime when the post was published."
       }
      }
     },
     "description": "Owner posts in chronological order."
    },
    "cursor": {
     "type": "string",
     "nullable": true,
     "description": "Cursor to fetch the next page. Null when no more pages."
    }
   },
   "description": "Business posts page."
  },
  "status": {
   "type": "string",
   "description": "The status of the API response."
  },
  "parameters": {
   "type": "object",
   "properties": {
    "cursor": {
     "type": "string",
     "nullable": true,
     "description": "Pagination cursor passed in (when continuing a previous request)."
    },
    "region": {
     "type": "string",
     "description": "Region code used for the request."
    },
    "language": {
  
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-openwebninja-com-business-owner-posts-google-maps-4a745f34/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agents.openwebninja.com](https://www.zero.xyz/host/agents.openwebninja.com/llms.txt)
