# People Data Labs — Orthogonal API

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

Access the world's largest people and company dataset. Enrich, search, and clean person, company, school, location, job title, and IP data.

**Verified:** yes

## Access

**Run API:** `POST https://api.orth.sh/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

### Person Identify

Broad person lookup returning up to 20 candidate matches with confidence scores. Useful when you have partial info and want multiple possible matches.

`GET /v5/person/identify`

**Estimated cost:** $0.7

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | No | Full name |
| `first_name` | string | No | First name |
| `last_name` | string | No | Last name |
| `email` | string | No | Email address |
| `phone` | string | No | Phone number |
| `lid` | string | No | LinkedIn ID or URL |
| `profile` | string | No | Social profile URL |
| `company` | string | No | Current company name |
| `location` | string | No | Location string |
| `pretty` | boolean | No | Pretty print JSON response |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"peopledatalabs","path":"/v5/person/identify","method":"GET","query":{"name":"<string>","first_name":"<string>","last_name":"<string>","email":"<string>","phone":"<string>","lid":"<string>","profile":"<string>","company":"<string>","location":"<string>","pretty":"<boolean>"}}'
```

### Company Search

Search and filter companies using Elasticsearch or SQL queries. Find companies by industry, size, location, funding, and more.

`POST /v5/company/search`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | object | No | Elasticsearch DSL query |
| `sql` | string | No | SQL query (alternative to Elasticsearch) |
| `size` | number | Yes | Number of results to return (max 100) |
| `from` | number | No | Offset for pagination |
| `scroll_token` | string | No | Pagination token from previous response |
| `titlecase` | boolean | No | Title case text fields in response |
| `pretty` | boolean | No | Pretty print JSON response |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"peopledatalabs","path":"/v5/company/search","query":{"pretty":"<boolean>"},"body":{"query":"<object>","sql":"<string>","size":"<number>","from":"<number>","scroll_token":"<string>","titlecase":"<boolean>"}}'
```

### IP Enrichment

Enrich an IP address with associated company, location, and metadata.

`GET /v5/ip/enrich`

**Estimated cost:** $0.09

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `ip` | string | Yes | IP address to enrich |
| `return_if_unmatched` | boolean | No | Return location data even if no company match |
| `pretty` | boolean | No | Pretty print JSON response |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"peopledatalabs","path":"/v5/ip/enrich","method":"GET","query":{"ip":"<string>","return_if_unmatched":"<boolean>","pretty":"<boolean>"}}'
```

### Company Enrichment

Enrich a company by name, website, ticker, or LinkedIn URL. Returns full company profile with industry, size, location, funding, and more.

`GET /v5/company/enrich`

**Estimated cost:** $0.11

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | No | Company name |
| `website` | string | No | Company website URL |
| `ticker` | string | No | Stock ticker symbol |
| `profile` | string | No | LinkedIn or other social profile URL |
| `location` | string | No | Company HQ location |
| `pretty` | boolean | No | Pretty print JSON response |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"peopledatalabs","path":"/v5/company/enrich","method":"GET","query":{"name":"<string>","website":"<string>","ticker":"<string>","profile":"<string>","location":"<string>","pretty":"<boolean>"}}'
```

### Person Search

Search and filter people using Elasticsearch or SQL queries. Find people by job title, company, location, skills, education, and more.

`POST /v5/person/search`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | object | No | Elasticsearch DSL query |
| `sql` | string | No | SQL query (alternative to Elasticsearch) |
| `size` | number | Yes | Number of results to return (max 100, cost is ) |
| `from` | number | No | Offset for pagination |
| `scroll_token` | string | No | Pagination token from previous response |
| `dataset` | string | No | Dataset to search (all, resume, email, phone, mobile_phone) |
| `titlecase` | boolean | No | Title case text fields in response |
| `pretty` | boolean | No | Pretty print JSON response |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"peopledatalabs","path":"/v5/person/search","query":{"pretty":"<boolean>"},"body":{"query":"<object>","sql":"<string>","size":"<number>","from":"<number>","scroll_token":"<string>","dataset":"<string>","titlecase":"<boolean>"}}'
```

### Person Enrichment

Enrich a person by name, email, phone, LinkedIn URL, or other identifiers. Returns full profile with work history, education, skills, and social profiles.

`GET /v5/person/enrich`

**Estimated cost:** $0.35

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | No | Full name (e.g. Jennifer C. Jackson) |
| `first_name` | string | No | First name |
| `last_name` | string | No | Last name |
| `email` | string | No | Email address |
| `phone` | string | No | Phone number |
| `lid` | string | No | LinkedIn ID or URL |
| `profile` | string | No | Social profile URL |
| `company` | string | No | Current company name |
| `location` | string | No | Location string |
| `min_likelihood` | number | No | Minimum match confidence (1-10, default 2) |
| `required` | string | No | Required fields in response (e.g. experience AND emails) |
| `pretty` | boolean | No | Pretty print JSON response |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"peopledatalabs","path":"/v5/person/enrich","method":"GET","query":{"name":"<string>","first_name":"<string>","last_name":"<string>","email":"<string>","phone":"<string>","lid":"<string>","profile":"<string>","company":"<string>","location":"<string>","min_likelihood":"<number>","required":"<string>","pretty":"<boolean>"}}'
```

---

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