> ## 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.

# Context.dev: Contextdev Get Web Competitors

> Find website competitors. Includes SDK V2 and CLI requests, input constraints, response fields, and Deepline credit cost.

Find website competitors.

<Info>
  Tool ID: `contextdev_get_web_competitors`
</Info>

## Run this action

Use the TypeScript SDK for a single call. Put `ctx.tools.execute(...)` inside a Play when the call should be durable, scheduled, or run across a CSV.

```ts theme={null}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'contextdev_get_web_competitors',
  {
    "domain": "example.com"
  },
);

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

### CLI

```bash theme={null}
deepline tools execute contextdev_get_web_competitors --input '{
  "domain": "example.com"
}' --json
```

## Example response

The SDK exposes this shape at `result.toolResponse.raw`. Values below are representative.

```json theme={null}
{
  "data": {
    "status": "ok",
    "domain": "example.com",
    "target": {
      "companyName": "Example Corp",
      "field": "email",
      "fieldDescription": "example",
      "websiteUrl": "https://example.com"
    },
    "competitors": [
      {
        "name": "Example",
        "domain": "example.com",
        "url": "https://example.com",
        "description": "Example description",
        "confidence": "high",
        "sourceUrls": [
          "https://example.com"
        ]
      }
    ]
  }
}
```

Use `deepline tools get contextdev_get_web_competitors --json` for the latest machine-readable contract.

## Input reference

Analyze a company's landing page and web search evidence to return direct competitors for the same product or market.

| Name                     | Type      | Required | Default | Details                                                                                                                                                                                                                                   |
| ------------------------ | --------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `payload.domain`         | `string`  | Yes      | —       | Company domain to analyze, such as `stripe.com`. Full http(s) URLs are accepted and normalized to their domain. Minimum length: 3.                                                                                                        |
| `payload.numCompetitors` | `integer` | No       | `5`     | Exact number of direct competitors to return. Defaults to 5. Minimum: 1. Maximum: 10.                                                                                                                                                     |
| `payload.timeoutMS`      | `integer` | No       | —       | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). Minimum: 1000. Maximum: 300000.                  |
| `payload.tags`           | `array`   | No       | —       | Optional comma-separated caller-defined tags for tracking this request. Tags are recorded on the request's usage log and can be used to filter usage on the dashboard usage page. Up to 20 tags, each 1-50 characters. Maximum items: 20. |

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

  ### Input JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "Analyze a company's landing page and web search evidence to return direct competitors for the same product or market.",
    "properties": {
      "domain": {
        "type": "string",
        "description": "Company domain to analyze, such as `stripe.com`. Full http(s) URLs are accepted and normalized to their domain.",
        "minLength": 3
      },
      "numCompetitors": {
        "type": "integer",
        "description": "Exact number of direct competitors to return. Defaults to 5.",
        "default": 5,
        "minimum": 1,
        "maximum": 10
      },
      "timeoutMS": {
        "type": "integer",
        "description": "Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes).",
        "minimum": 1000,
        "maximum": 300000
      },
      "tags": {
        "type": "array",
        "description": "Optional comma-separated caller-defined tags for tracking this request. Tags are recorded on the request's usage log and can be used to filter usage on the dashboard usage page. Up to 20 tags, each 1-50 characters.",
        "maxItems": 20,
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        }
      }
    },
    "required": [
      "domain"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

| Name                                    | Type                 | Required | Default | Details                    |
| --------------------------------------- | -------------------- | -------- | ------- | -------------------------- |
| `result.data`                           | `object`             | Yes      | —       | —                          |
| `result.data.status`                    | `"ok"`               | Yes      | —       | Allowed: `ok`.             |
| `result.data.domain`                    | `string`             | Yes      | —       | —                          |
| `result.data.target`                    | `object`             | Yes      | —       | —                          |
| `result.data.target.companyName`        | `string`             | Yes      | —       | —                          |
| `result.data.target.field`              | `string`             | Yes      | —       | —                          |
| `result.data.target.fieldDescription`   | `string`             | Yes      | —       | —                          |
| `result.data.target.websiteUrl`         | `string`             | Yes      | —       | —                          |
| `result.data.competitors`               | `array`              | Yes      | —       | —                          |
| `result.data.competitors[].name`        | `string`             | Yes      | —       | —                          |
| `result.data.competitors[].domain`      | `string`             | Yes      | —       | —                          |
| `result.data.competitors[].url`         | `string`             | Yes      | —       | —                          |
| `result.data.competitors[].description` | `string`             | Yes      | —       | —                          |
| `result.data.competitors[].confidence`  | `"high" \| "medium"` | Yes      | —       | Allowed: `high`, `medium`. |
| `result.data.competitors[].sourceUrls`  | `array`              | Yes      | —       | —                          |
| `result.data.key_metadata`              | `object`             | No       | —       | —                          |
| `result.meta`                           | `object`             | No       | —       | —                          |

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

  ### Output JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "data": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "ok"
            ]
          },
          "domain": {
            "type": "string"
          },
          "target": {
            "type": "object",
            "properties": {
              "companyName": {
                "type": "string"
              },
              "field": {
                "type": "string"
              },
              "fieldDescription": {
                "type": "string"
              },
              "websiteUrl": {
                "type": "string"
              }
            },
            "required": [
              "companyName",
              "field",
              "fieldDescription",
              "websiteUrl"
            ],
            "additionalProperties": false
          },
          "competitors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "domain": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "confidence": {
                  "type": "string",
                  "enum": [
                    "high",
                    "medium"
                  ]
                },
                "sourceUrls": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "name",
                "domain",
                "url",
                "description",
                "confidence",
                "sourceUrls"
              ],
              "additionalProperties": false
            }
          },
          "key_metadata": {
            "type": "object",
            "properties": {},
            "required": [],
            "additionalProperties": false
          }
        },
        "required": [
          "status",
          "domain",
          "target",
          "competitors"
        ],
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.

## Related documentation

* [Context.dev provider guide](/docs/providers/contextdev/guide)
* [SDK V2 quickstart](/docs/sdk-v2/quickstart)
* [SDK reference](/docs/sdk-v2/sdk-reference)
* [Run tools across a CSV](/docs/sdk-v2/batch-csv)
