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

# Retrieve company signals for business events and growth

> Fetch hiring surges, headcount trends, website traffic changes, and news events for up to 100 companies per request using their Lusha company IDs.

Company signals give you visibility into what's happening inside your target accounts - hiring surges, headcount changes, shifts in website traffic and IT spend, and news events across seven categories. One endpoint takes up to 100 Lusha company IDs and the signal types you want, and returns everything that matched - no separate lookup or search step.

<Note>
  Signals are charged per matched signal per result. Request only the signal types you need.
</Note>

## Get company signals

```
POST https://api.lusha.com/v3/companies/signals
```

Send 1–100 Lusha company IDs per request along with the `signalTypes` you want. Use `startDate` to limit results to signals detected on or after a given date, and `maxResultsPerSignal` to cap how many instances of each signal type come back per company.

**Request body**

| Field                 | Type             | Required | Description                                                    |
| --------------------- | ---------------- | -------- | -------------------------------------------------------------- |
| `ids`                 | array of strings | Yes      | Lusha company IDs, 1–100 per request                           |
| `signalTypes`         | array of strings | Yes      | Signal types to retrieve (see full list below)                 |
| `startDate`           | string           | No       | Earliest date for signals, in `YYYY-MM-DD` format              |
| `maxResultsPerSignal` | integer          | No       | Maximum signal instances returned per type per company (1–100) |

**Example request**

```json theme={null}
{
  "ids": ["16303253"],
  "signalTypes": ["allSignals"],
  "startDate": "2025-01-01",
  "maxResultsPerSignal": 10
}
```

**Example response**

```json theme={null}
{
  "results": [
    {
      "id": "16303253",
      "companyName": "Lusha",
      "domain": "lusha.com"
    }
  ],
  "startDate": "2025-01-01",
  "endDate": "2025-07-31",
  "billing": {
    "creditsCharged": 3,
    "resultsReturned": 1
  }
}
```

Every result carries `id`, `companyName`, and `domain`. Whichever signal types you requested and matched appear as additional arrays keyed by that type name (for example `surgeInHiring`), the same pattern Contact Signals uses for `promotion`/`companyChange`.

## Available company signal types

<AccordionGroup>
  <Accordion title="Hiring and workforce">
    | Signal type                 | Description                                        |
    | --------------------------- | -------------------------------------------------- |
    | `allSignals`                | All available company signal types                 |
    | `surgeInHiring`             | Overall increase in open job postings              |
    | `surgeInHiringByDepartment` | Hiring surge scoped to a specific department       |
    | `surgeInHiringByLocation`   | Hiring surge scoped to a specific country or state |
  </Accordion>

  <Accordion title="Headcount trends">
    | Signal type            | Description                             |
    | ---------------------- | --------------------------------------- |
    | `headcountIncrease1m`  | Employee count increased over 1 month   |
    | `headcountDecrease1m`  | Employee count decreased over 1 month   |
    | `headcountIncrease3m`  | Employee count increased over 3 months  |
    | `headcountDecrease3m`  | Employee count decreased over 3 months  |
    | `headcountIncrease6m`  | Employee count increased over 6 months  |
    | `headcountDecrease6m`  | Employee count decreased over 6 months  |
    | `headcountIncrease12m` | Employee count increased over 12 months |
    | `headcountDecrease12m` | Employee count decreased over 12 months |
  </Accordion>

  <Accordion title="Technology and digital presence">
    | Signal type              | Description             |
    | ------------------------ | ----------------------- |
    | `websiteTrafficIncrease` | Website traffic growth  |
    | `websiteTrafficDecrease` | Website traffic decline |
    | `itSpendIncrease`        | IT spending increase    |
    | `itSpendDecrease`        | IT spending decrease    |
  </Accordion>

  <Accordion title="News events">
    | Signal type              | Description                                               |
    | ------------------------ | --------------------------------------------------------- |
    | `riskNews`               | Litigation and security news                              |
    | `commercialActivityNews` | Launches, partnerships, and go-to-market activity         |
    | `corporateStrategyNews`  | M\&A, restructuring, and strategic direction changes      |
    | `financialEventsNews`    | Funding, IPO, and financial performance events            |
    | `peopleNews`             | Hiring, layoff, and leadership changes                    |
    | `marketIntelligenceNews` | Event participation, recognition, and competitor activity |
    | `productActivityNews`    | Product launches, development, and integrations           |
  </Accordion>
</AccordionGroup>

<Tip>
  Call [Get Company Signal Types](/api-reference/signals/company-signal-types) to fetch this list programmatically instead of hardcoding it.
</Tip>

## Explore the news, department, and location taxonomy

Two reference endpoints let you explore what values exist for the news, department, and location dimensions behind company signals - useful for populating a picker UI or validating input before you build automations around specific categories.

<Steps>
  <Step title="List available filter types">
    Call [Get Company Signal Filters](/api-reference/signals/company-signal-filters) - `GET /v3/companies/signals/filters` - to see the available filter types (`newsEventTypes`, `hiringByDepartments`, `hiringByLocations`) and whether each requires a search `query`.
  </Step>

  <Step title="Fetch values for a specific filter type">
    Call [Get Company Signal Filter Values](/api-reference/signals/company-signal-filter-values) - `GET /v3/companies/signals/filters/{filterType}` - for the values themselves. `hiringByLocations` requires a `query` (2–256 characters); the other two don't.
  </Step>
</Steps>

## If you don't have company IDs yet

Company Signals only accepts Lusha company IDs. If you're starting from a company name or domain, resolve the company first, then retrieve signals for the returned ID:

<Steps>
  <Step title="Resolve the company">
    Call [Enrich Companies](/enrichment/enrich-companies) or [Search & Enrich Companies](/enrichment/search-and-enrich-companies) to get a Lusha company `id`.
  </Step>

  <Step title="Retrieve signals for that ID">
    Pass the `id` into `POST /v3/companies/signals`.
  </Step>
</Steps>

## Related pages

* [Signals overview](/signals/overview) - the consolidated signals model, credits, and delivery options
* [Contact signals](/signals/contact-signals) - retrieve job change and promotion signals for contacts
* [API reference: Company Signals](/api-reference/signals/company-signals) - full request/response schema
