Skip to main content
Company signals give you visibility into what’s happening inside your target accounts - hiring surges, headcount changes, shifts in website traffic and IT spend, news events across seven categories, and changes in the topics a company is researching. 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.
Signals are charged per matched signal per result. Request only the signal types you need.

Get company 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 Example request
Example response
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

allSignals does not include newIntentTopic, intentScoreIncrease, intentScoreDecrease, or intentTopicRemoved - name them in signalTypes to get them.
Call Get Company Signal Types to fetch this list programmatically instead of hardcoding it.

Intent signals

The four intent signal types track week-over-week changes in what a company is researching. Each topic has a score from 0 to 100 - a high score means the company is researching the topic more than usual. Intent data refreshes weekly. Every topic in the catalog is available - the topics selected in your Lusha dashboard don’t apply.
1

Find the topics you care about

There are about 18,000 intent topics, so search for them by name. query is required (2-256 characters), and up to 50 matches come back. This call is free.
2

Request intent signals for those topics

Name the intent types in signalTypes and pass the exact topic names in filters.include.intentTopics. You can also narrow by filters.include.intentCategories. With neither filter, all topics come back, up to maxResultsPerSignal.
A topic that isn’t in the catalog returns 400 INVALID_FILTER_VALUE, naming the topic. Always use exact names from the topic search.
Each intent signal returns:
Intent signals are charged like every other company signal - per matched signal per result, via showSignalsCompany. No matches, no charge.
Intent signals are available on this lookup only. You can’t use them to find new companies in Prospecting or signal search - for that, use the Prospecting intentTopics filter.

Explore the news, department, location, and intent taxonomy

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

List available filter types

Call Get Company Signal Filters - GET /v3/companies/signals/filters - to see the available filter types (newsEventTypes, hiringByDepartments, hiringByLocations, intentCategories, intentTopics) and whether each requires a search query.
2

Fetch values for a specific filter type

Call Get Company Signal Filter Values - GET /v3/companies/signals/filters/{filterType} - for the values themselves. hiringByLocations and intentTopics require a query (2–256 characters); the others don’t.

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:
1

Resolve the company

Call Enrich Companies or Search & Enrich Companies to get a Lusha company id.
2

Retrieve signals for that ID

Pass the id into POST /v3/companies/signals.