> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenWeb Ninja: Openwebninja Localbusiness Search

> Search Google Maps businesses by keyword. Returns structured rows with phone, address, rating, and website, and can extract emails and contacts from each.

Search Google Maps businesses by keyword. Returns structured rows with phone, address, rating, and website, and can extract emails and contacts from each.

> [!NOTE]
>
> Tool ID: `openwebninja_localbusiness_search`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'openwebninja_localbusiness_search',
  {
    "query": "software companies hiring engineers"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute openwebninja_localbusiness_search --input '{
  "query": "software companies hiring engineers"
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "status": "example",
  "request_id": "request_123",
  "parameters": {}
}
```

Use `deepline describe openwebninja_localbusiness_search --json` for the latest machine-readable contract.

## Input reference

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.query` | `string` | Yes | — | Minimum length: 1. |
| `payload.limit` | `integer` | No | `20` | Minimum: 1. Maximum: 500. |
| `payload.lat` | `string` | No | — | Pattern: `^-?\d+(\.\d+)?$`. |
| `payload.lng` | `string` | No | — | Pattern: `^-?\d+(\.\d+)?$`. |
| `payload.zoom` | `integer` | No | `13` | Minimum: 1. Maximum: 21. |
| `payload.language` | `string` | No | `"en"` | Pattern: `^[A-Za-z]&#123;2,8&#125;(-[A-Za-z0-9]&#123;2,8&#125;)?$`. |
| `payload.region` | `string` | No | `"us"` | Pattern: `^[A-Za-z]&#123;2&#125;$`. |
| `payload.subtypes` | `string` | No | — | Minimum length: 1. |
| `payload.verified` | `boolean` | No | — | — |
| `payload.business_status` | `string` | No | — | Minimum length: 1. |
| `payload.extract_emails_and_contacts` | `boolean` | No | `false` | — |
| `payload.fields` | `string` | No | — | Minimum length: 1. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "minLength": 1
      },
      "limit": {
        "type": "integer",
        "default": 20,
        "minimum": 1,
        "maximum": 500
      },
      "lat": {
        "type": "string",
        "pattern": "^-?\\d+(\\.\\d+)?$"
      },
      "lng": {
        "type": "string",
        "pattern": "^-?\\d+(\\.\\d+)?$"
      },
      "zoom": {
        "type": "integer",
        "default": 13,
        "minimum": 1,
        "maximum": 21
      },
      "language": {
        "type": "string",
        "default": "en",
        "pattern": "^[A-Za-z]{2,8}(-[A-Za-z0-9]{2,8})?$"
      },
      "region": {
        "type": "string",
        "default": "us",
        "pattern": "^[A-Za-z]{2}$"
      },
      "subtypes": {
        "type": "string",
        "minLength": 1
      },
      "verified": {
        "type": "boolean"
      },
      "business_status": {
        "type": "string",
        "minLength": 1
      },
      "extract_emails_and_contacts": {
        "type": "boolean",
        "default": false
      },
      "fields": {
        "type": "string",
        "minLength": 1
      }
    },
    "required": [
      "query"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Normalized OpenWebNinja result envelope.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.status` | `string` | No | — | — |
| `result.request_id` | `string` | No | — | — |
| `result.parameters` | `record` | No | — | — |
| `result.data` | `unknown` | No | — | — |
| `result.cursor` | `string` | No | — | — |
| `result.next_cursor` | `string` | No | — | — |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Normalized OpenWebNinja result envelope.",
    "properties": {
      "status": {
        "type": "string"
      },
      "request_id": {
        "type": "string"
      },
      "parameters": {
        "type": "object",
        "additionalProperties": {}
      },
      "data": {},
      "cursor": {
        "type": "string"
      },
      "next_cursor": {
        "type": "string"
      }
    },
    "additionalProperties": true
  }
  ```
</details>

## Deepline cost

* Pricing model: `per_result` (per result).
* Estimated Deepline credits: `0.06` per pricing unit.

## Related documentation

* [OpenWeb Ninja provider guide](https://deepline.com/docs/providers/openwebninja/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.