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

# Company Search

> Build targeted company lists with POST /company-search and structured filters.

`POST /company-search` finds companies from Huntr's index using structured filters. Combine industry, location, headcount, domain, keywords, and more.

Use this when you need **many accounts** — not a narrative research brief.

## Preview list size (free)

Before spending credits on results, preview the match count:

```bash theme={null}
curl --request POST \
  --url https://api.tryhuntr.com/company-search-count \
  --header 'content-type: application/json' \
  --header "x-api-key: ${HUNTR_API_KEY}" \
  --data '{
    "query": {
      "industry": { "include": ["Software Development"] },
      "location": { "include": ["US"] },
      "headcount": { ">": 50, "<": 500 }
    }
  }'
```

`price` is always `0` on count endpoints.

## Search companies

```bash theme={null}
curl --request POST \
  --url https://api.tryhuntr.com/company-search \
  --header 'content-type: application/json' \
  --header "x-api-key: ${HUNTR_API_KEY}" \
  --data '{
    "query": {
      "industry": { "include": ["Software Development"] },
      "location": { "include": ["US"] },
      "headcount": { ">": 50, "<": 500 }
    },
    "pagination": { "size": 100 }
  }'
```

Response shape:

| Field              | Meaning                         |
| ------------------ | ------------------------------- |
| `total`            | Matches for the full query      |
| `companies`        | Rows in **this page only**      |
| `pagination.token` | Cursor for the next page        |
| `price`            | USD for rows returned this call |

## Pagination

Huntr returns **one page per request** (default 100, max 200). To walk a large list:

1. Call with your `query` and `pagination.size`
2. Read `pagination.token` from the response
3. Call again with the **same** `query` and `pagination: { "size": 100, "token": "..." }`

Do not change the query between pages. Tokens expire.

## Filter rules

* **At least one filter** is required
* Fields are **AND**'d together
* `include` values within a field are **OR**'d
* `industry` and `type` must be **exact** LinkedIn labels — invalid values return `400` with `accepted_values`

### Prefer domain over name

When you know `stripe.com`, use `domain` — not `name` — to avoid fuzzy collisions.

```json theme={null}
{ "domain": { "include": ["stripe.com"] } }
```

### Headcount and revenue

Use comparison operators (`>`, `<`, `>=`, `<=`), not min/max:

```json theme={null}
{ "headcount": { ">": 10, "<": 500 } }
```

## Typical workflow

```mermaid theme={null}
flowchart LR
  A[company-search-count] --> B{Size OK?}
  B -->|Yes| C[company-search page 1]
  C --> D[Paginate with token]
  D --> E[person-search per domain]
  E --> F[person-email]
```

1. Count → search → paginate companies
2. For each target account, [find people](/guides/person-search) with `currentCompanyWebsite`
3. [Enrich contacts](/guides/contact-enrichment) you want to reach

## Pricing

Charged **per company returned** in the response. Empty pages cost `$0`. See `GET /pricing` for the current per-result rate.

## Next step

* [Person search](/guides/person-search)
* [Company enrichment](/guides/company-enrichment)
* [POST /company-search](/api-reference) — full filter reference
