# `POST /data/company/search`

**Purpose:** Find companies by name, symbol or registrant id: companies whose name contains `query`, or whose symbol (any it has traded under) or registrant id starts with it. Up to 8 companies, best match first.

**Request:**

| Field | Type | Required | Notes |
|-------|------|----------|--------|
| `query` | string | Yes | 1–64 characters; English names. |
| `jurisdiction` | string | No | `"US"`, `"KR"`, `"JP"`, `"EU"`, `"CN"`, or `"all"`. When omitted, searches everything your plan includes. |

**Response:**

| Field | Meaning |
|-------|---------|
| `companies` | Up to 8 objects, best match first, each with `ticker`, `legal_name`, `jurisdiction`, and the one identifier that applies — `cik`, `dart_corp_code`, `edinet_code`, `lei`, or `uscc`. |
| `companies[].classification` | Industry classification block — **Pro+ only**. See [Industry classification (Pro+)](/documents/coverage.md#industry-classification-pro). |
| `credits_used` | **10**; **0** when `query` is blank. |
| `_warnings` | Optional; the coverage notice of [Coverage scope notice](/documents/coverage.md#coverage-scope-notice). |

**Errors:**

| HTTP | `error_code` | When |
|------|----------------|------|
| 400 | `JURISDICTION_INVALID` | `jurisdiction` is not one of `US`, `KR`, `JP`, `EU`, `CN`, `all`. Not charged. |
| 403 | `PLAN_TIER_INSUFFICIENT_COVERAGE` | The requested `jurisdiction` is outside your plan's coverage scope. Not charged. |
| 402 | `CREDITS_INSUFFICIENT` | Not enough credits. |
| 422 | — | Validation (`query` missing or longer than 64 characters). |

**Example Request:**

```json
{
  "query": "apple"
}
```

**Example Response:**

```json
{
  "companies": [
    {"ticker": "AAPL", "legal_name": "Apple Inc.", "jurisdiction": "US", "cik": "0000320193"}
  ],
  "credits_used": 10
}
```
