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

# Company Search

> Learn how to search for companies using structured filters, from simple domain lookups to multi-filter queries.

**Use this when** you want to explore a market, build a target account list, or segment companies by criteria like geography, industry, revenue, funding, or headcount.

The Company Search API lets you find companies by domain, country, industry, revenue, funding, headcount, and more. This page walks you through the basics: your first search, the response shape, and combining filters, then folds in worked example recipes you can copy, paste, and adapt. For the operator list, field catalog, and validation rules, see [Search reference](/company-docs/search/reference).

Every request goes to the same endpoint:

```
POST https://api.crustdata.com/company/search
```

<Note>
  Replace `YOUR_API_KEY` in each example with your actual API key. All
  requests require the `x-api-version: 2025-11-01` header.
</Note>

### Request body

| Parameter | Type      | Required | Default    | Description                                                                          |
| --------- | --------- | -------- | ---------- | ------------------------------------------------------------------------------------ |
| `filters` | object    | No       | —          | A single filter condition or a nested `and`/`or` group. Omit to match all companies. |
| `fields`  | string\[] | No       | all fields | Dot-path fields to include in each company object. Always specify in production.     |
| `sorts`   | object\[] | No       | —          | Sort rules. Each has `field` (dot-path) and `order` (`asc` or `desc`).               |
| `limit`   | integer   | No       | `20`       | Companies per page. Max: `1000`.                                                     |
| `cursor`  | string    | No       | —          | Pagination cursor from a previous response.                                          |

<Tip>
  **Looking for the list of fields you can filter on?** See [Searchable
  fields](/company-docs/search/reference#searchable-fields) in the search
  reference for the full table of `filters.field` values (with sortable
  flags). Use [Autocomplete](/company-docs/autocomplete/introduction) to
  discover valid *values* for fields like `basic_info.industries`,
  `taxonomy.professional_network_industry`, or `locations.country`.
</Tip>

### Response body

| Field         | Type            | Description                                                 |
| ------------- | --------------- | ----------------------------------------------------------- |
| `companies`   | array           | Matching company records with requested `fields`.           |
| `next_cursor` | string or null  | Cursor for the next page. `null` when no more pages.        |
| `total_count` | integer or null | Total matching companies (may be `null` for broad queries). |

### Rate limits and credits

<Callout icon="coins" color="#5345e4">
  <strong>Pricing:</strong> <code>0.03 credits per result returned</code>. A
  request with no results does not consume credits.
</Callout>

* **Rate limit:** 30 requests per minute.

<Info>
  Search results are intentionally lightweight so you can explore and segment
  companies at a low credit cost. When you need the full company profile, use
  [Company Enrich](/company-docs/enrichment/introduction).
</Info>

<CardGroup cols={3}>
  <Card title="Examples" icon="list-filter" href="#examples">
    `or`/nested logic, well-funded-by-country, recently founded.
  </Card>

  <Card title="Pagination & sorting" icon="list-ordered" href="/company-docs/search/reference#paginate-through-results">
    Cursor-based pagination and sort rules for stable ordering.
  </Card>

  <Card title="Reference" icon="book" href="/company-docs/search/reference">
    Operators, searchable fields, response fields, validation, errors.
  </Card>
</CardGroup>

***

## Your first search: find a company by domain

The simplest search finds a company by its exact primary domain. You pass a single filter with the `=` operator.

<CodeGroup>
  ```bash Request theme={"theme":"vitesse-black"}
  curl --request POST \
    --url https://api.crustdata.com/company/search \
    --header 'authorization: Bearer YOUR_API_KEY' \
    --header 'content-type: application/json' \
    --header 'x-api-version: 2025-11-01' \
    --data '{
      "filters": {
        "field": "basic_info.primary_domain",
        "type": "=",
        "value": "retool.com"
      },
      "limit": 1,
      "fields": [
        "crustdata_company_id",
        "basic_info.name",
        "basic_info.primary_domain",
        "basic_info.year_founded",
        "headcount.total",
        "locations.country",
        "funding.total_investment_usd"
      ]
    }'
  ```

  ```json Response theme={"theme":"vitesse-black"}
  {
      "companies": [
          {
              "crustdata_company_id": 633593,
              "basic_info": {
                  "name": "Retool",
                  "primary_domain": "retool.com",
                  "year_founded": 2017
              },
              "headcount": {
                  "total": 443
              },
              "locations": {
                  "country": "USA"
              },
              "funding": {
                  "total_investment_usd": 141000000.0
              }
          }
      ],
      "next_cursor": "H4sIAMWlBWoC_xXMMQ7DIAxA0atEzB2MDYb0KlUVgTHKUBU1IUMV5e6l6_vSP83n0O27rGlfzX0yORcIzqGr3iolmIWkAGCiEH0pGB2j44pBVLmCEFPNA0AtxiRgbpPZ29bH68FEfqbnkN56ei3Sjvc_2OsHdWUiVXYAAAA=",
      "total_count": 1
  }
  ```
</CodeGroup>

### Understanding the response

Every search response has three fields:

* **`companies`** — an array of matching company records. Each record contains the fields you requested in `fields`.
* **`next_cursor`** — a pagination token. Pass it in the next request to get the next page. `null` means there are no more pages.
* **`total_count`** — how many companies match your filters across the full database (may be `null` for very broad queries).

### How to interpret results

* **`next_cursor` is `null`:** You have reached the last page. No more results.
* **`total_count` is `null`:** The exact count is too expensive to compute for this query. Use `next_cursor` to determine if more pages exist.
* **Empty `companies` array:** No companies matched your filters. Broaden your filters or check values with [Autocomplete](/company-docs/autocomplete/introduction).

### Controlling which fields come back

The `fields` parameter lets you pick exactly which fields to include. This keeps your responses small and focused. If you omit `fields`, the API returns all available fields for each company.

***

## Combine filters with `and`

Real searches need more than one criterion. Wrap multiple conditions inside an `op: "and"` group to require all of them.

This search finds software development companies headquartered in the USA, sorted by headcount (largest first).

<CodeGroup>
  ```bash Request theme={"theme":"vitesse-black"}
  curl --request POST \
    --url https://api.crustdata.com/company/search \
    --header 'authorization: Bearer YOUR_API_KEY' \
    --header 'content-type: application/json' \
    --header 'x-api-version: 2025-11-01' \
    --data '{
      "filters": {
        "op": "and",
        "conditions": [
          {
            "field": "taxonomy.professional_network_industry",
            "type": "=",
            "value": "Software Development"
          },
          {
            "field": "locations.country",
            "type": "in",
            "value": ["USA"]
          }
        ]
      },
      "sorts": [{"field": "headcount.total", "order": "desc"}],
      "limit": 2,
      "fields": [
        "crustdata_company_id",
        "basic_info.name",
        "basic_info.primary_domain",
        "headcount.total",
        "locations.country"
      ]
    }'
  ```

  ```json Response theme={"theme":"vitesse-black"}
  {
      "companies": [
          {
              "crustdata_company_id": 6034577,
              "basic_info": {
                  "name": "Amazon",
                  "primary_domain": "aboutamazon.com"
              },
              "headcount": {
                  "total": 763362
              },
              "locations": {
                  "country": "USA"
              }
          },
          {
              "crustdata_company_id": 4926893,
              "basic_info": {
                  "name": "Google",
                  "primary_domain": "goo.gle"
              },
              "headcount": {
                  "total": 335569
              },
              "locations": {
                  "country": "USA"
              }
          }
      ],
      "next_cursor": "H4sIADxxqGkC_w3MMQ7CMAwF0KtEnjsksZ...",
      "total_count": null
  }
  ```
</CodeGroup>

<Note>Response trimmed for clarity.</Note>

The key difference from the first example: instead of a single `filters` object, you now have a group with `op: "and"` and a `conditions` array. Every condition must match for a company to be included.

For `or` and nested logic, or for finding well-funded or recently founded
companies, see the [Examples](#examples) below. To walk through
large result sets, see
[Pagination and sorting](/company-docs/search/reference#paginate-through-results).

***

## Examples

Worked recipes you can copy, paste, and adapt. Each example is a full working
request. For the core walkthrough (first search, combining filters with `and`),
see the sections above. For the operator list, field catalog, and validation
rules, see [Search reference](/company-docs/search/reference).

<AccordionGroup>
  <Accordion title="Use or and nested logic">
    Use `op: "or"` when a company should match **any** condition. You can also nest `and`/`or` groups for complex queries.

    This search finds companies that are either in the software development
    industry or have over \$5M in total investment, AND are headquartered in the
    USA.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {
                "op": "or",
                "conditions": [
                  {
                    "field": "taxonomy.professional_network_industry",
                    "type": "=",
                    "value": "Software Development"
                  },
                  {
                    "field": "funding.total_investment_usd",
                    "type": ">",
                    "value": 5000000
                  }
                ]
              },
              {
                "field": "locations.country",
                "type": "=",
                "value": "USA"
              }
            ]
          },
          "sorts": [{"field": "headcount.total", "order": "desc"}],
          "limit": 2,
          "fields": [
            "crustdata_company_id",
            "basic_info.name",
            "headcount.total",
            "taxonomy.professional_network_industry",
            "funding.total_investment_usd"
          ]
        }'
      ```
    </CodeGroup>

    The outer `and` requires both conditions: the inner `or` matches either
    software development companies or well-funded companies, and the outer
    condition restricts to US-headquartered companies.
  </Accordion>

  <Accordion title="Find well-funded companies in a country">
    This is a common pattern for sales and investor research: find companies in a specific market with significant funding. This search finds US-based companies with over \$10M in total investment, sorted by funding (highest first).

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {
                "field": "locations.country",
                "type": "in",
                "value": ["USA"]
              },
              {
                "field": "funding.total_investment_usd",
                "type": ">",
                "value": 10000000
              }
            ]
          },
          "sorts": [{"field": "funding.total_investment_usd", "order": "desc"}],
          "limit": 2,
          "fields": [
            "crustdata_company_id",
            "basic_info.name",
            "basic_info.primary_domain",
            "locations.country",
            "funding.total_investment_usd",
            "headcount.total"
          ]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "crustdata_company_id": 6035590,
                  "basic_info": {
                      "name": "VMware",
                      "primary_domain": "broadcom.com"
                  },
                  "locations": {
                      "country": "USA"
                  },
                  "funding": {
                      "total_investment_usd": 100000000000.0
                  },
                  "headcount": {
                      "total": 11925
                  }
              },
              {
                  "crustdata_company_id": 631466,
                  "basic_info": {
                      "name": "OpenAI",
                      "primary_domain": "openai.com"
                  },
                  "locations": {
                      "country": "USA"
                  },
                  "funding": {
                      "total_investment_usd": 79000120000.0
                  },
                  "headcount": {
                      "total": 7397
                  }
              }
          ],
          "next_cursor": "H4sIAC1xqGkC_w3MOw7CMAwA0KtEmTv4E...",
          "total_count": null
      }
      ```
    </CodeGroup>

    <Note>Response trimmed for clarity.</Note>
  </Accordion>

  <Accordion title="Filter by revenue and latest funding details">
    Combine estimated revenue bounds with the latest funding round type, date, and
    amount. You can also require an investor to appear in the company's funding
    history.

    This search finds companies whose estimated revenue range is entirely between
    $1M and $50M, whose latest round was Series A or Series B on or after
    2025-01-01, whose latest round raised at least \$5M, and that list Sequoia
    Capital as an investor.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {"field": "revenue.estimated.lower_bound_usd", "type": "=>", "value": 1000000},
              {"field": "revenue.estimated.upper_bound_usd", "type": "=<", "value": 50000000},
              {"field": "funding.last_round_type", "type": "in", "value": ["series_a", "series_b"]},
              {"field": "funding.last_fundraise_date", "type": "=>", "value": "2025-01-01"},
              {"field": "funding.last_round_amount_usd", "type": "=>", "value": 5000000},
              {"field": "funding.investors", "type": "in", "value": ["Sequoia Capital"]}
            ]
          },
          "sorts": [{"field": "funding.last_fundraise_date", "order": "desc"}],
          "limit": 1,
          "fields": [
            "crustdata_company_id",
            "basic_info.name",
            "basic_info.primary_domain",
            "revenue.estimated.lower_bound_usd",
            "revenue.estimated.upper_bound_usd",
            "funding.last_round_type",
            "funding.last_fundraise_date",
            "funding.last_round_amount_usd",
            "funding.investors"
          ]
        }'
      ```
    </CodeGroup>

    <Note>
      `funding.investors` contains known investors across the company's funding
      history. Combining it with `funding.last_*` filters means the company has
      that investor and its latest round matches the other conditions. It does
      not mean that investor participated in the latest round.
    </Note>
  </Accordion>

  <Accordion title="Find recently founded companies">
    Use comparison operators like `>` and `<` on numeric or date fields. This search finds companies founded after 2020, sorted by headcount.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "field": "basic_info.year_founded",
            "type": ">",
            "value": 2020
          },
          "sorts": [{"field": "headcount.total", "order": "desc"}],
          "limit": 2,
          "fields": [
            "crustdata_company_id",
            "basic_info.name",
            "basic_info.year_founded",
            "headcount.total",
            "locations.country"
          ]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "crustdata_company_id": 4069929,
                  "basic_info": {
                      "name": "Kendi İşim",
                      "year_founded": 2023
                  },
                  "headcount": {
                      "total": 181137
                  },
                  "locations": {
                      "country": "TUR"
                  }
              },
              {
                  "crustdata_company_id": 1038926,
                  "basic_info": {
                      "name": "Stellantis",
                      "year_founded": 2021
                  },
                  "headcount": {
                      "total": 114361
                  },
                  "locations": {
                      "country": "NLD"
                  }
              }
          ],
          "next_cursor": "H4sIAC9xqGkC_w3MMQ7CMAwF0KtEmTvEdkh...",
          "total_count": null
      }
      ```
    </CodeGroup>

    <Note>Response trimmed for clarity.</Note>
  </Accordion>

  <Accordion title="Find companies by team size in a function">
    Filter on `roles.distribution.<function>` to find companies by the number of employees in a specific function — for example, companies with a large engineering team. Combine it with an industry or location filter to narrow the result.

    <CodeGroup>
      ```bash Request — software companies with 1,000+ engineers theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              { "field": "taxonomy.professional_network_industry", "type": "=", "value": "Software Development" },
              { "field": "roles.distribution.engineering", "type": ">", "value": 1000 }
            ]
          },
          "fields": ["basic_info.name", "basic_info.primary_domain", "headcount.total"],
          "sorts": [{ "field": "headcount.total", "order": "desc" }],
          "limit": 3
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              { "basic_info": { "name": "Amazon", "primary_domain": "aboutamazon.com" }, "headcount": { "total": 771499 } },
              { "basic_info": { "name": "Google", "primary_domain": "goo.gle" }, "headcount": { "total": 342901 } },
              { "basic_info": { "name": "Microsoft", "primary_domain": "microsoft.com" }, "headcount": { "total": 231238 } }
          ],
          "next_cursor": "H4sIA...",
          "total_count": 276
      }
      ```
    </CodeGroup>

    <Note>Response trimmed for clarity.</Note>

    <Warning>
      `roles.distribution.<function>` is **filter-only** — you can filter on it, but it is not returned in the search response (requesting it in `fields` returns `400`). Select `headcount.total` or other returnable fields instead. The valid function names are listed in the [searchable fields reference](/company-docs/search/reference#searchable-fields).
    </Warning>
  </Accordion>

  <Accordion title="Find high-growth mid-size companies">
    Filter on the dotted period path `headcount.growth_percent.6m` to find companies whose 6-month headcount growth exceeds a threshold. The same shape applies to `.1m`, `.3m`, `.12m` and to `headcount.growth_absolute.*` for absolute employee deltas.

    <CodeGroup>
      ```bash Request — mid-size companies with >15% 6-month growth theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              { "field": "headcount.growth_percent.6m", "type": ">", "value": 15 },
              { "field": "headcount.total", "type": ">", "value": 200 },
              { "field": "headcount.total", "type": "<", "value": 2000 }
            ]
          },
          "fields": ["basic_info.name", "basic_info.primary_domain", "headcount.total", "headcount.growth_percent"],
          "sorts": [{ "field": "headcount.total", "order": "desc" }],
          "limit": 2
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "basic_info": { "name": "IRT", "primary_domain": "irt.uy" },
                  "headcount": {
                      "total": 1991,
                      "growth_percent": { "1m": 3.0, "3m": 3.0, "6m": 17.26, "12m": 32.73 }
                  }
              },
              {
                  "basic_info": { "name": "MS Office", "primary_domain": "msofice.org" },
                  "headcount": {
                      "total": 1990,
                      "growth_percent": { "1m": 29.22, "3m": 29.22, "6m": 32.76, "12m": 47.3 }
                  }
              }
          ],
          "next_cursor": "H4sIAE5P...",
          "total_count": 4685
      }
      ```
    </CodeGroup>

    <Warning>
      The dotted period paths (`headcount.growth_percent.6m`, etc.) are
      **filterable but not sortable** — passing one as a `sorts.field` returns
      `400 "Unsupported columns"`. Sort on `headcount.total` (or another
      sortable field) and use the growth filter to narrow the population.
    </Warning>

    <Note>
      `/company/search` returns the growth map under period keys `1m`, `3m`,
      `6m`, `12m`. The same underlying data is also returned by
      [`/company/enrich`](/company-docs/enrichment/introduction), but with
      different keys (`mom`, `qoq`, `six_months`, `yoy`, `two_years`).
    </Note>
  </Accordion>

  <Accordion title="Find a company's competitors">
    Pass a known company's `crustdata_company_id` to `competitors.company_ids` (or
    its domains to `competitors.websites`) to pull the companies Crustdata tracks
    as its competitors. Here, competitors of OpenAI (`631466`).

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "field": "competitors.company_ids",
            "type": "in",
            "value": [631466]
          },
          "sorts": [{"field": "headcount.total", "order": "desc"}],
          "limit": 3,
          "fields": ["crustdata_company_id", "basic_info.name", "basic_info.primary_domain", "headcount.total"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "crustdata_company_id": 15358,
                  "basic_info": { "name": "Aprecomm", "primary_domain": "aprecomm.ai" },
                  "headcount": { "total": 75 }
              },
              {
                  "crustdata_company_id": 49618,
                  "basic_info": { "name": "Automaton AI Infosystem Pvt. Ltd.", "primary_domain": "automatonai.com" },
                  "headcount": { "total": 46 }
              },
              {
                  "crustdata_company_id": 609348,
                  "basic_info": { "name": "Cron AI", "primary_domain": "cronai.ai" },
                  "headcount": { "total": 37 }
              }
          ],
          "next_cursor": "H4sIABHRQWoC_x...",
          "total_count": 520
      }
      ```
    </CodeGroup>

    <Note>Response trimmed for clarity.</Note>

    <Warning>
      `competitors.company_ids` and `competitors.websites` are **filter-only** —
      you can filter on them, but they are not returned in the response (passing
      one in `fields` returns `400 "Invalid fields"`). Select returnable fields
      like `headcount.total` instead.
    </Warning>
  </Accordion>

  <Accordion title="Find companies backed by a specific investor">
    Filter on `funding.investors` to find every company an investor has backed.
    This search finds Sequoia Capital portfolio companies, sorted by total funding.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "field": "funding.investors",
            "type": "in",
            "value": ["Sequoia Capital"]
          },
          "sorts": [{"field": "funding.total_investment_usd", "order": "desc"}],
          "limit": 3,
          "fields": ["crustdata_company_id", "basic_info.name", "basic_info.primary_domain", "funding.total_investment_usd"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "crustdata_company_id": 631466,
                  "basic_info": { "name": "OpenAI", "primary_domain": "openai.com" },
                  "funding": { "total_investment_usd": 201125120000.0 }
              },
              {
                  "crustdata_company_id": 635252,
                  "basic_info": { "name": "Anthropic", "primary_domain": "anthropic.com" },
                  "funding": { "total_investment_usd": 63740377627.0 }
              },
              {
                  "crustdata_company_id": 681042,
                  "basic_info": { "name": "Oracle", "primary_domain": "oracle.com" },
                  "funding": { "total_investment_usd": 55750000000.0 }
              }
          ],
          "next_cursor": "H4sIABHRQWoC_y...",
          "total_count": 1199
      }
      ```
    </CodeGroup>

    <Note>
      Response trimmed for clarity. Request `funding.investors` in `fields` to
      see the company's all-time investor list. This field does not identify
      participants in a specific funding round.
    </Note>
  </Accordion>

  <Accordion title="Find educational institutions in a country">
    Combine `basic_info.company_type` with an industry and a country filter — a
    common first step in alumni or talent-flow workflows. This search finds UK
    universities, ranked by headcount.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {"field": "basic_info.company_type", "type": "=", "value": "Educational Institution"},
              {"field": "taxonomy.professional_network_industry", "type": "=", "value": "Higher Education"},
              {"field": "locations.country", "type": "in", "value": ["GBR"]}
            ]
          },
          "sorts": [{"field": "headcount.total", "order": "desc"}],
          "limit": 3,
          "fields": ["crustdata_company_id", "basic_info.name", "basic_info.company_type", "headcount.total", "locations.country"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "crustdata_company_id": 1201786,
                  "basic_info": { "name": "University of Oxford", "company_type": "Educational Institution" },
                  "headcount": { "total": 23154 },
                  "locations": { "country": "GBR" }
              },
              {
                  "crustdata_company_id": 1182667,
                  "basic_info": { "name": "The University of Manchester", "company_type": "Educational Institution" },
                  "headcount": { "total": 20301 },
                  "locations": { "country": "GBR" }
              },
              {
                  "crustdata_company_id": 770034,
                  "basic_info": { "name": "University of Birmingham", "company_type": "Educational Institution" },
                  "headcount": { "total": 14943 },
                  "locations": { "country": "GBR" }
              }
          ],
          "next_cursor": "H4sIABLRQWoC_x...",
          "total_count": 3593
      }
      ```
    </CodeGroup>

    <Note>Response trimmed for clarity.</Note>
  </Accordion>

  <Accordion title="Find companies by HQ country">
    Filter on `locations.country` with ISO 3-alpha codes (`USA`, `GBR`, `CAN`,
    `IND`). This search finds Canada-headquartered companies with more than 100
    employees.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {"field": "locations.country", "type": "in", "value": ["CAN"]},
              {"field": "headcount.total", "type": ">", "value": 100}
            ]
          },
          "sorts": [{"field": "headcount.total", "order": "desc"}],
          "limit": 3,
          "fields": ["crustdata_company_id", "basic_info.name", "basic_info.primary_domain", "headcount.total", "locations.country"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "crustdata_company_id": 890813,
                  "basic_info": { "name": "KPMG", "primary_domain": "kpmg.com" },
                  "headcount": { "total": 241782 },
                  "locations": { "country": "CAN" }
              },
              {
                  "crustdata_company_id": 909849,
                  "basic_info": { "name": "TD", "primary_domain": "td.com" },
                  "headcount": { "total": 105531 },
                  "locations": { "country": "CAN" }
              },
              {
                  "crustdata_company_id": 1049593,
                  "basic_info": { "name": "RBC", "primary_domain": "rbc.com" },
                  "headcount": { "total": 99801 },
                  "locations": { "country": "CAN" }
              }
          ],
          "next_cursor": "H4sIABPRQWoC_x...",
          "total_count": 11618
      }
      ```
    </CodeGroup>

    <Note>Response trimmed for clarity. `locations.country` accepts **both** ISO 3166-1 alpha-3 codes (`"USA"`, `"CAN"`) and full country names (`"United States"`, `"Canada"`) — either form matches the same companies, so ISO-3 filters like the one above keep working unchanged. Response values are the normalized full country names. See [Normalized location facets](/company-docs/search/reference#locations).</Note>
  </Accordion>

  <Accordion title="Search within a radius of headquarters">
    The `geo_distance` filter finds companies whose headquarters is within a
    specific distance of a point. Apply it to the `locations.headquarters` field.

    This search finds companies with more than 100 employees headquartered within
    50 km of Palo Alto.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {
                "field": "locations.headquarters",
                "type": "geo_distance",
                "value": {
                  "location": "Palo Alto, CA",
                  "distance": 50,
                  "unit": "km"
                }
              },
              {"field": "headcount.total", "type": ">", "value": 100}
            ]
          },
          "limit": 25,
          "fields": ["crustdata_company_id", "basic_info.name", "basic_info.primary_domain", "headcount.total", "locations.headquarters", "locations.city", "locations.state", "locations.country"]
        }'
      ```
    </CodeGroup>

    The `value` is an object whose centre is given as **either** a `location`
    string (geocoded server-side) **or** an explicit `lat_lng` pair (which skips
    geocoding). If both are supplied, `lat_lng` wins. `distance` is required and
    must be positive; `unit` is optional and defaults to `km` (also accepts `mi`,
    `miles`, `m`, `meters`, `ft`, `feet`). See the
    [`geo_distance` reference](/company-docs/search/reference#geo_distance--radius-around-headquarters)
    for the full value-object table.

    ### Search by explicit coordinates

    Use `lat_lng` when you already have coordinates (for example, from a map
    picker) or you want to skip the geocoding step. The example below finds
    companies headquartered within 25 miles of latitude `37.4419`, longitude
    `-122.143` (Palo Alto).

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "field": "locations.headquarters",
            "type": "geo_distance",
            "value": {
              "lat_lng": [37.4419, -122.143],
              "distance": 25,
              "unit": "mi"
            }
          },
          "limit": 5
        }'
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Exclude a geographic radius">
    The `geo_exclude` filter is the inverse of `geo_distance` — it removes
    companies headquartered **inside** the radius and keeps everyone else. Use it
    to carve out a metro you already cover, or to target companies outside a
    region.

    This search finds companies that are **not** headquartered within 100 km of
    London.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "field": "locations.headquarters",
            "type": "geo_exclude",
            "value": {
              "location": "London, UK",
              "distance": 100,
              "unit": "km"
            }
          },
          "limit": 5
        }'
      ```
    </CodeGroup>

    `geo_exclude` accepts the same value object as `geo_distance` (`location` or
    `lat_lng`, a required `distance`, and an optional `unit`), so you can also
    exclude a radius around explicit coordinates.
  </Accordion>

  <Accordion title="Find companies by follower count and growth">
    Filter on `followers.count` and `followers.six_months_growth_percent` to find
    companies with a large, fast-growing audience.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {"field": "followers.count", "type": ">", "value": 100000},
              {"field": "followers.six_months_growth_percent", "type": ">", "value": 20}
            ]
          },
          "sorts": [{"field": "followers.count", "order": "desc"}],
          "limit": 2,
          "fields": ["crustdata_company_id", "basic_info.name", "basic_info.primary_domain", "followers.count", "followers.six_months_growth_percent"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "crustdata_company_id": 7434923,
                  "basic_info": { "name": "Zip, a puzzle by LinkedIn", "primary_domain": "linkedin.com" },
                  "followers": { "count": 45891930, "six_months_growth_percent": 114.27916071283744 }
              },
              {
                  "crustdata_company_id": 1523288,
                  "basic_info": { "name": "Queens, a puzzle by LinkedIn", "primary_domain": "linkedin.com" },
                  "followers": { "count": 9457905, "six_months_growth_percent": 125.50956541643271 }
              }
          ],
          "next_cursor": "H4sIABTRQWoC_x...",
          "total_count": 1617
      }
      ```
    </CodeGroup>

    <Note>Response trimmed for clarity. `followers.count` is sortable; the follower-growth fields are filterable but not sortable.</Note>
  </Accordion>

  <Accordion title="Look up companies by domain">
    Pass one or more exact primary domains to `basic_info.primary_domain` with the
    `in` operator to resolve known domains in a single call.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "field": "basic_info.primary_domain",
            "type": "in",
            "value": ["retool.com", "serverobotics.com"]
          },
          "limit": 10,
          "fields": ["crustdata_company_id", "basic_info.name", "basic_info.primary_domain", "headcount.total", "locations.country"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "crustdata_company_id": 628895,
                  "basic_info": { "name": "Serve Robotics", "primary_domain": "serverobotics.com" },
                  "headcount": { "total": 404 },
                  "locations": { "country": "USA" }
              },
              {
                  "crustdata_company_id": 633593,
                  "basic_info": { "name": "Retool", "primary_domain": "retool.com" },
                  "headcount": { "total": 416 },
                  "locations": { "country": "USA" }
              }
          ],
          "next_cursor": null,
          "total_count": 2
      }
      ```
    </CodeGroup>

    <Tip>
      A widely shared domain (for example, a platform domain that many small
      profiles reuse) can return several low-headcount records alongside the
      primary company. To resolve a single best-match company from a domain, use
      [Company Identify](/company-docs/identify/introduction) or
      [Company Enrich](/company-docs/enrichment/introduction) with
      `exact_match: true`.
    </Tip>
  </Accordion>

  <Accordion title="Fetch specific companies by Crustdata ID">
    When you already have `crustdata_company_id` values (from a previous search or
    Identify call), fetch those exact records with the `in` operator. This is the
    most deterministic way to pull specific companies.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "field": "crustdata_company_id",
            "type": "in",
            "value": [631466, 635252]
          },
          "limit": 10,
          "fields": ["crustdata_company_id", "basic_info.name", "basic_info.primary_domain", "headcount.total"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "crustdata_company_id": 631466,
                  "basic_info": { "name": "OpenAI", "primary_domain": "openai.com" },
                  "headcount": { "total": 9538 }
              },
              {
                  "crustdata_company_id": 635252,
                  "basic_info": { "name": "Anthropic", "primary_domain": "anthropic.com" },
                  "headcount": { "total": 4832 }
              }
          ],
          "next_cursor": null,
          "total_count": 2
      }
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Find recently IPO'd or acquired companies">
    Use `revenue.public_markets.ipo_date` to find companies that went public in a
    date window, or `revenue.acquisition_status` to find acquired companies.

    **Companies that IPO'd in 2020–2021 (1,000+ employees):**

    <CodeGroup>
      ```bash Request — recent IPOs theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {"field": "basic_info.company_type", "type": "=", "value": "Public Company"},
              {"field": "revenue.public_markets.ipo_date", "type": "=>", "value": "2020-01-01"},
              {"field": "revenue.public_markets.ipo_date", "type": "=<", "value": "2021-12-31"},
              {"field": "headcount.total", "type": ">", "value": 1000}
            ]
          },
          "sorts": [{"field": "revenue.public_markets.ipo_date", "order": "desc"}],
          "limit": 2,
          "fields": ["basic_info.name", "basic_info.primary_domain", "revenue.public_markets.ipo_date", "headcount.total"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "basic_info": { "name": "Stellantis", "primary_domain": "stellantis.com" },
                  "revenue": { "public_markets": { "ipo_date": "2021-01-18" } },
                  "headcount": { "total": 117523 }
              },
              {
                  "basic_info": { "name": "Concentrix", "primary_domain": "concentrix.com" },
                  "revenue": { "public_markets": { "ipo_date": "2020-12-01" } },
                  "headcount": { "total": 218080 }
              }
          ],
          "next_cursor": "H4sIAGjRQWoC_x...",
          "total_count": 343
      }
      ```
    </CodeGroup>

    **Acquired software companies:**

    <CodeGroup>
      ```bash Request — acquired companies theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {"field": "revenue.acquisition_status", "type": "=", "value": "acquired"},
              {"field": "taxonomy.professional_network_industry", "type": "=", "value": "Software Development"}
            ]
          },
          "sorts": [{"field": "headcount.total", "order": "desc"}],
          "limit": 2,
          "fields": ["basic_info.name", "basic_info.primary_domain", "revenue.acquisition_status", "headcount.total"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "basic_info": { "name": "Instagram", "primary_domain": "instagram.com" },
                  "revenue": { "acquisition_status": "acquired" },
                  "headcount": { "total": 53313 }
              },
              {
                  "basic_info": { "name": "PayPal", "primary_domain": "paypal.com" },
                  "revenue": { "acquisition_status": "acquired" },
                  "headcount": { "total": 36990 }
              }
          ],
          "next_cursor": "H4sIAGjRQWoC_y...",
          "total_count": 12877
      }
      ```
    </CodeGroup>

    <Note>Responses trimmed for clarity. `revenue.acquisition_status` matches the lowercase value `"acquired"`.</Note>
  </Accordion>

  <Accordion title="Find companies by recent funding round">
    Combine `funding.last_round_type` with `funding.last_fundraise_date` to find
    companies that recently raised a specific round. This search finds companies
    whose latest round was Series A/B/C and closed on or after 2024-01-01.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {"field": "funding.last_round_type", "type": "in", "value": ["series_a", "series_b", "series_c"]},
              {"field": "funding.last_fundraise_date", "type": "=>", "value": "2024-01-01"}
            ]
          },
          "sorts": [{"field": "funding.last_fundraise_date", "order": "desc"}],
          "limit": 2,
          "fields": ["basic_info.name", "basic_info.primary_domain", "funding.last_round_type", "funding.last_fundraise_date", "funding.last_round_amount_usd"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "basic_info": { "name": "Upside", "primary_domain": "joinupside.com" },
                  "funding": { "last_round_type": "series_a", "last_fundraise_date": "2026-06-25", "last_round_amount_usd": 20000000.0 }
              },
              {
                  "basic_info": { "name": "Warp", "primary_domain": "warp.co" },
                  "funding": { "last_round_type": "series_b", "last_fundraise_date": "2026-06-25", "last_round_amount_usd": 60000000.0 }
              }
          ],
          "next_cursor": "H4sIAC_RQWoC_x...",
          "total_count": 9749
      }
      ```
    </CodeGroup>

    <Note>Response trimmed for clarity. Round-type values are lowercase with underscores (`series_a`, `series_b`). Use `=>` / `=<` for date ranges — `>=` and `<=` are not supported.</Note>
  </Accordion>

  <Accordion title="Find companies by category and market">
    Filter on `taxonomy.categories` and `basic_info.markets` for fine-grained
    segmentation. This search finds AI companies in the software-development
    industry, ranked by headcount.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {"field": "taxonomy.categories", "type": "in", "value": ["Artificial Intelligence (AI)"]},
              {"field": "basic_info.industries", "type": "in", "value": ["Software Development"]}
            ]
          },
          "sorts": [{"field": "headcount.total", "order": "desc"}],
          "limit": 2,
          "fields": ["basic_info.name", "basic_info.primary_domain", "headcount.total"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "basic_info": { "name": "Amazon", "primary_domain": "aboutamazon.com" },
                  "headcount": { "total": 768927 }
              },
              {
                  "basic_info": { "name": "Google", "primary_domain": "goo.gle" },
                  "headcount": { "total": 308114 }
              }
          ],
          "next_cursor": "H4sIAFjRQWoC_x...",
          "total_count": 19844
      }
      ```
    </CodeGroup>

    <Tip>
      Category and market values are case-sensitive for `in`. Use
      [Autocomplete](/company-docs/autocomplete/introduction) to find exact
      values — for example, the AI category is stored as
      `"Artificial Intelligence (AI)"`. For public-market tags like `"NASDAQ"`,
      filter on `basic_info.markets`.
    </Tip>
  </Accordion>

  <Accordion title="Find companies by type and fuzzy name match">
    Use the `(.)` fuzzy operator on `basic_info.name` to match name variants and
    tolerate typos, combined with a `basic_info.company_type` filter. This search
    finds privately held companies with "robotics" in the name.

    <CodeGroup>
      ```bash Request theme={"theme":"vitesse-black"}
      curl --request POST \
        --url https://api.crustdata.com/company/search \
        --header 'authorization: Bearer YOUR_API_KEY' \
        --header 'content-type: application/json' \
        --header 'x-api-version: 2025-11-01' \
        --data '{
          "filters": {
            "op": "and",
            "conditions": [
              {"field": "basic_info.company_type", "type": "=", "value": "Privately Held"},
              {"field": "basic_info.name", "type": "(.)", "value": "robotics"}
            ]
          },
          "sorts": [{"field": "headcount.total", "order": "desc"}],
          "limit": 3,
          "fields": ["basic_info.name", "basic_info.primary_domain", "basic_info.company_type", "headcount.total"]
        }'
      ```

      ```json Response theme={"theme":"vitesse-black"}
      {
          "companies": [
              {
                  "basic_info": { "name": "ECOVACS ROBOTICS", "primary_domain": "ecovacs.com", "company_type": "Privately Held" },
                  "headcount": { "total": 1006 }
              },
              {
                  "basic_info": { "name": "VEX Robotics", "primary_domain": "vexrobotics.com", "company_type": "Privately Held" },
                  "headcount": { "total": 850 }
              },
              {
                  "basic_info": { "name": "Torc Robotics", "primary_domain": "torc.ai", "company_type": "Privately Held" },
                  "headcount": { "total": 848 }
              }
          ],
          "next_cursor": "H4sIADHRQWoC_x...",
          "total_count": 4428
      }
      ```
    </CodeGroup>

    <Note>Response trimmed for clarity. `(.)` is fuzzy (tolerates typos, ignores word order); use `[.]` for exact token matching.</Note>
  </Accordion>
</AccordionGroup>

***

## What to do next

* **Paginate and sort** — see [Pagination and sorting](/company-docs/search/reference#paginate-through-results) to walk through all matching companies.
* **Look up operators and fields** — see [Search reference](/company-docs/search/reference) for operators, searchable fields, response fields, validation, and errors.
* **Enrich a company** — use [Company Enrich](/company-docs/enrichment/introduction) to get a detailed profile for a known company.
* **Discover filter values** — use [Company Autocomplete](/company-docs/autocomplete/introduction) to find valid values for industries, categories, and countries before building search filters.
