# Area Search By Bounding Box – Local Business Database

> Area Search By Bounding Box – Local Business Database 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).

Search business listings within a rectangular geographic bounding box defined by south-west and north-east corner coordinates.

## Facts

- Endpoint: GET https://agents.openwebninja.com/local-business-database/area-search-by-bounding-box?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-area-search-by-bounding-box-local-business-0daa229e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ON5EBcW1tMVOEq2523HaR

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-area-search-by-bounding-box-local-business-0daa229e
```

Example prompt: Find all restaurants within the area bounded by coordinates 41.8,-87.7 (bottom-left) and 41.9,-87.6 (top-right) in Chicago, and return up to 50 results.

## When to prefer this

Use this endpoint when you need to find businesses within a specific geographic rectangle, such as a map viewport or a neighborhood boundary. It is ideal for map-based UIs, geographic analysis, or any scenario where you have bounding box coordinates rather than a city name or address. Prefer this over a general search endpoint when spatial containment matters and you want to filter by a precise lat/lng rectangle. It supports additional filters like category, city, state, and name alongside the geographic constraint.

## Known failure modes

- Missing top_right or bottom_left parameter — returns 400 Bad Request
- Invalid lat/lng format for bounding box corners — returns 400 with validation error
- Expired or invalid cursor — returns error indicating cursor is no longer valid
- Bounding box with no matching businesses — returns 200 with empty businesses array (not an error)
- Rate limit or quota exceeded — returns 402 or 429 depending on plan
- Limit value out of range (not 1-500) — returns 400 validation error

## How this service works

Search business listings within a rectangular area defined by its bottom-left (south-west) and top-right (north-east) corner coordinates.

Both corners are required, and any field parameter of the Search endpoint can be combined with them.

**Note:** `match_count` is the total number of matching businesses, not the number returned on this page. A `cursor` is returned while further pages are available and omitted on the last page.

**Note:** a query that matches nothing is not an error. The response is a `200` with an empty `businesses` array.

## Output

Returns a JSON object containing an array of business listings within the specified bounding box, each with fields such as business ID, name, address, latitude/longitude, phone, website, rating, review count, categories, operational status, and opening hours. Also includes match_count (total matching businesses, not just this page) and a cursor for pagination when more results are available. An empty businesses array is returned (not an error) when no matches are found.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "top_right",
  "bottom_left"
 ],
 "properties": {
  "city": {
   "oneOf": [
    {
     "type": "string",
     "maxLength": 256
    },
    {
     "type": "array",
     "items": {
      "type": "string",
      "maxLength": 256
     },
     "maxItems": 32
    }
   ],
   "description": "Find businesses in a specific city.\n\nAccepts up to 32 values by repeating the parameter *(e.g. `city=value1&city=value2`)*.\n\nValues cannot be comma separated here, as a comma can be part of the value. In the POST form, send an array instead.\n\n**Examples:**\n\n`Chicago`"
  },
  "name": {
   "type": "string",
   "maxLength": 256,
   "description": "Find businesses by their display name.\n\n**Examples:**\n\n`Office of City Treasurer`\n\n`Avante Catering`\n\n`Truist`"
  },
  "limit": {
   "type": "integer",
   "description": "Maximum number of businesses to return.\n\n**Allowed values:** `1-500`"
  },
  "state": {
   "oneOf": [
    {
     "type": "string",
     "pattern": "^[^,]{0,256}(,[^,]{0,256}){0,31}$"
    },
    {
     "type": "array",
     "items": {
      "type": "string",
      "maxLength": 256
     },
     "maxItems": 32
    }
   ],
   "description": "Find businesses in a specific state or province. Accepts a comma separated list of up to 32 values, or the parameter repeated up to 32 times (values are OR'ed).\n\nUS states match either way they are sent, by full name or by two-letter code.\n\n**Examples:**\n\n`Illinois`\n\n`Illinois,Florida,Ontario`\n\n`IL,FL`"
  },
  "cursor": {
   "type": "string",
   "maxLength": 1024,
   "description": "Pagination cursor for fetching the next page. Pass the `cursor` value returned in the previous response. Omit it on the first request.\n\n**Note:** a cursor is only valid for the exact query that produced it, and it expires. Do not build or edit one."
  },
  "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_
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "status",
  "request_id",
  "parameters",
  "data"
 ],
 "properties": {
  "data": {
   "type": "object",
   "required": [
    "businesses",
    "match_count",
    "limit"
   ],
   "properties": {
    "limit": {
     "type": "number",
     "description": "Maximum number of results requested for this page (the limit parameter, or its default)."
    },
    "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."
       },
       "name": {
        "type": "string",
        "description": "Display name of the business."
       },
       "about": {
        "type": "object",
        "required": [
         "summary",
         "details"
        ],
        "properties": {
         "details": {
          "type": "object",
          "nullable": true,
          "description": "Structured attribute map, grouped by attribute category (e.g. accessibility, amenities), each mapping an attribute identifier to a boolean.",
          "additionalProperties": {
           "type": "object",
           "additionalProperties": {
            "type": "boolean"
           }
          }
         },
         "summary": {
          "type": "string",
          "nullable": true,
          "description": "Free-text description of the business."
         }
        },
        "description": "Free-form summary and a structured details map of business attributes.",
        "additionalProperties": false
       },
       "phone": {
        "type": "string",
        "description": "Business phone number in E.164 format when available."
       },
       "state": {
        "type": "string",
        "description": "State / region of the business location."
       },
       "rating": {
        "type": "number",
        "description": "Average review rating (1-5) on Google Maps."
       },
       "status": {
        "enum": [
      
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-openwebninja-com-area-search-by-bounding-box-local-business-0daa229e/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)
