# Business Details by ID

> Business Details by ID 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 full business details (menu, popular times, services, price tier, hours, photos, and 50+ other fields) for up to 500 Google Maps businesses by their Business ID in a single batched request.

## Facts

- Endpoint: GET https://agents.openwebninja.com/local-business-database/business-details?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-details-by-id-a1acc7aa
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_zx6RXmj_ywJ6MPRfDqAjk

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-details-by-id-a1acc7aa
```

Example prompt: I found a restaurant with business ID '0x102b644d009e013:0xea49e9ee285fa7bf' — can you pull its full details including the menu, popular times, working hours, and price tier?

## When to prefer this

Use this endpoint when you already have one or more Business IDs (from a prior search query) and need the full, enriched record including fields not returned by search endpoints — particularly menu data, popular times, price tier, hotel amenities, and business services. It supports batching up to 500 IDs, making it ideal for bulk enrichment workflows. Prefer this over search endpoints when you need depth rather than discovery.

## Known failure modes

- Business ID not found — the ID is simply absent from the response and match_count is lower than the number sent; no explicit error is thrown
- Invalid business_id format — may return no matches or an API error
- Requesting more than 500 business IDs in one call — likely rejected or truncated
- Fields parameter with invalid field names — may cause a 400 validation error
- Rate limit or payment required — 402 response if quota exceeded
- Menu or popular times fields absent — not all businesses have menus or popular times data populated

## How this service works

Get full business details by Business Id, including the menu, popular times, services and price tier - fields the search endpoints do not return.

Supports batching of up to 500 Business Ids in a single request.

**Note:** a Business Id that matches nothing is simply absent from the response, so `match_count` can be lower than the number of ids sent. There is no `cursor` on this endpoint.

## Output

Returns a JSON object containing an array of business records (one per matched ID), each with up to 60 fields including name, address, coordinates, phone, website, menu (sections and items with prices), popular times by day/hour, working hours, price tier, rating, review count, photos sample, hotel-specific fields (stars, amenities, booking options), booking/order/reservation links, business services, opening date, and metadata timestamps. The match_count field indicates how many IDs were found; unmatched IDs are silently omitted.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "business_ids"
 ],
 "properties": {
  "fields": {
   "type": "string",
   "pattern": "^\\s*$|^\\s*(business_id|name|address|lat|lng|categories|main_category|phone|website|tld|status|rating|review_count|place_id|google_mid|cid|place_link|timezone|owner_id|owner_name|owner_link|address_short|district|street_address|city|zipcode|state|country|photo_count|photos_sample|verified|opening_status|working_hours|opening_date|reviews_per_rating|price_level|reviews_link|booking_link|order_link|reservations_link|category_ids|main_category_id|about|closed_dow|open_24_7|located_in|hotel_stars|hotel_amenities|hotel_location_rating|hotel_review_summary|hotel_booking_options|hotel_results_from_web|first_seen|last_seen|last_changed|business_services|price_tier|menu|photo_tabs|popular_times)(\\s*,\\s*(business_id|name|address|lat|lng|categories|main_category|phone|website|tld|status|rating|review_count|place_id|google_mid|cid|place_link|timezone|owner_id|owner_name|owner_link|address_short|district|street_address|city|zipcode|state|country|photo_count|photos_sample|verified|opening_status|working_hours|opening_date|reviews_per_rating|price_level|reviews_link|booking_link|order_link|reservations_link|category_ids|main_category_id|about|closed_dow|open_24_7|located_in|hotel_stars|hotel_amenities|hotel_location_rating|hotel_review_summary|hotel_booking_options|hotel_results_from_web|first_seen|last_seen|last_changed|business_services|price_tier|menu|photo_tabs|popular_times)){0,59}\\s*$",
   "description": "A comma separated list of business fields to include in the response (field projection).\n\nBy default all fields are returned. `business_id` is always included.\n\n**Allowed values:** `business_id`, `name`, `address`, `lat`, `lng`, `categories`, `main_category`, `phone`, `website`, `tld`, `status`, `rating`, `review_count`, `place_id`, `google_mid`, `cid`, `place_link`, `timezone`, `owner_id`, `owner_name`, `owner_link`, `address_short`, `district`, `street_address`, `city`, `zipcode`, `state`, `country`, `photo_count`, `photos_sample`, `verified`, `opening_status`, `working_hours`, `opening_date`, `reviews_per_rating`, `price_level`, `reviews_link`, `booking_link`, `order_link`, `reservations_link`, `category_ids`, `main_category_id`, `about`, `closed_dow`, `open_24_7`, `located_in`, `hotel_stars`, `hotel_amenities`, `hotel_location_rating`, `hotel_review_summary`, `hotel_booking_options`, `hotel_results_from_web`, `first_seen`, `last_s
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "status",
  "request_id",
  "parameters",
  "data"
 ],
 "properties": {
  "data": {
   "type": "object",
   "required": [
    "businesses",
    "match_count"
   ],
   "properties": {
    "businesses": {
     "type": "array",
     "items": {
      "type": "object",
      "required": [
       "business_id"
      ],
      "properties": {
       "cid": {
        "type": "string",
        "description": "Google CID (Customer ID) of the business."
       },
       "lat": {
        "type": "number",
        "description": "Latitude of the business location."
       },
       "lng": {
        "type": "number",
        "description": "Longitude of the business location."
       },
       "tld": {
        "type": "string",
        "description": "Domain of the business website."
       },
       "city": {
        "type": "string",
        "description": "City of the business location."
       },
       "menu": {
        "type": "array",
        "items": {
         "type": "object",
         "required": [
          "title",
          "description",
          "sections"
         ],
         "properties": {
          "title": {
           "type": "string",
           "nullable": true,
           "description": "Title of the menu."
          },
          "sections": {
           "type": "array",
           "items": {
            "type": "object",
            "required": [
             "title",
             "description",
             "menu_items"
            ],
            "properties": {
             "title": {
              "type": "string",
              "nullable": true,
              "description": "Title of the menu section."
             },
             "menu_items": {
              "type": "array",
              "items": {
               "type": "object",
               "required": [
                "title",
                "description",
                "price",
                "options"
               ],
               "properties": {
                "price": {
                 "type": "string",
                 "nullable": true,
                 "description": "Price of the menu item as shown on Google Maps."
                },
                "title": {
                 "type": "string",
                 "description": "Name of the menu item."
                },
                "options": {
                 "type": "array",
                 "items": {
                  "type": "object",
                  "required": [
  
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-openwebninja-com-business-details-by-id-a1acc7aa/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)
