# Prospeo — Orthogonal API

> Pay-per-use API on Orthogonal. Each call is billed to your Orthogonal balance.
> Base API: `https://api.orthogonal.com/v1/run` · [llms.txt](https://orthogonal.com/llms.txt) · [browse all APIs](https://orthogonal.com/discover)

B2B search and enrichment API for people, companies, verified emails, mobile numbers, and bulk workflows. 200M+ contacts, 30M+ companies, 30+ search filters.

**Verified:** no

## Access

**Run API:** `POST https://api.orthogonal.com/v1/run`
**Auth:** `Authorization: Bearer $ORTHOGONAL_API_KEY`
Get an API key at https://orthogonal.com/dashboard/settings/api-keys

Every call goes through the unified Run API: send the API `slug`, the endpoint `path`, and the `query`/`body` parameters. The response is `{ "success": true, "price": "<usd>", "data": { ... } }`.

## Endpoints

### Enrich Company

Enrich a company by website, LinkedIn URL, name, or company_id. Returns firmographics, funding, technologies, and 50+ data points.

`POST /enrich-company`

**Estimated cost:** $0.1

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `data` | object | Yes | Company data for matching. Supports: company_website, company_linkedin_url, company_name, company_id. At least one required. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"prospeo","path":"/enrich-company","body":{"data":"<object>"}}'
```

### Bulk Enrich Company

Enrich up to 50 companies in one request. Returns firmographics, funding, technologies, and 50+ data points for each match.

`POST /bulk-enrich-company`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `data` | array | Yes | Array of up to 50 company objects to enrich. Each must include identifier plus at least one of: company_website, company_linkedin_url, company_name, company_id. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"prospeo","path":"/bulk-enrich-company","body":{"data":"<array>"}}'
```

### Search Person

Search 200M+ contacts with 30+ filters. Returns 25 results per page, up to 25,000 results. No emails or mobiles; pass person_id to Enrich Person for contact data. Some advanced filters return PLAN_REQUIRED.

`POST /search-person`

**Estimated cost:** $0.1

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `filters` | object | Yes | Filter configuration for the search. |
| `page` | number | No | Page number. Defaults to 1. Max 1000. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"prospeo","path":"/search-person","body":{"filters":"<object>","page":"<number>"}}'
```

### Search Company

Search 30M+ companies with 20+ filters. Returns 25 results per page, up to 25,000 results. Some advanced filters return PLAN_REQUIRED.

`POST /search-company`

**Estimated cost:** $0.1

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `filters` | object | Yes | Filter configuration for the search. |
| `page` | number | No | Page number. Defaults to 1. Max 1000. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"prospeo","path":"/search-company","body":{"filters":"<object>","page":"<number>"}}'
```

### Bulk Enrich Person

Enrich up to 50 people in one request. Returns verified work email, B2B profile, and current company for each match. Email only; use Enrich Person for mobile numbers.

`POST /bulk-enrich-person`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `only_verified_email` | boolean | No | Only return records with a verified email. Default false. |
| `data` | array | Yes | Array of up to 50 person objects to enrich. Each must include identifier plus matching data (linkedin_url, email, person_id, or name + company). |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"prospeo","path":"/bulk-enrich-person","body":{"only_verified_email":"<boolean>","data":"<array>"}}'
```

### Search Suggestions

Get valid filter values for Search Person and Search Company: locations, job titles, technologies, industries, and NAICS/SIC codes.

`POST /search-suggestions`

**Cost:** Free

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `location_search` | string | No | Search for location suggestions. Min 2 chars. |
| `job_title_search` | string | No | Search for job title suggestions. Min 2 chars. |
| `technology_search` | string | No | Search for technology suggestions. Min 2 chars. |
| `industry_search` | string | No | Search for industry suggestions. Min 2 chars. |
| `naics_search` | string | No | Search for NAICS code suggestions. |
| `sic_search` | string | No | Search for SIC code suggestions. |
| `company_filter_search` | object | No | Search for company filter field suggestions. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"prospeo","path":"/search-suggestions","body":{"location_search":"<string>","job_title_search":"<string>","technology_search":"<string>","industry_search":"<string>","naics_search":"<string>","sic_search":"<string>","company_filter_search":"<object>"}}'
```

### Enrich Person

Enrich a person by LinkedIn URL, email, person_id, or name + company. Returns verified work email, B2B profile, and current company. Set enrich_mobile: true to also reveal a mobile number.

`POST /enrich-person`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `only_verified_email` | boolean | No | Only return records with a verified email. Default false. |
| `enrich_mobile` | boolean | No | Enrich mobile number if available. |
| `only_verified_mobile` | boolean | No | Only return records with a verified mobile. If true, enrich_mobile is auto-set to true. |
| `data` | object | Yes | Person data for matching. Supports: first_name, last_name, full_name, linkedin_url, email, company_name, company_website, company_linkedin_url, person_id. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"prospeo","path":"/enrich-person","body":{"only_verified_email":"<boolean>","enrich_mobile":"<boolean>","only_verified_mobile":"<boolean>","data":"<object>"}}'
```

---

Full details and an interactive quickstart: https://orthogonal.com/discover/prospeo
