canonical: https://jentic.com/apis/lusha.com/lusha

# Lusha API Documentation

The Lusha API enriches B2B contact and company records with business profile data, using a search-then-enrich pattern under its V3 endpoints. Search contacts or companies by known identifiers, then enrich them by id with the fields you choose to reveal, or do both in a single search-and-enrich call. Filter-based prospecting, lookalike recommendations from seed records, buying-group discovery, and contact and company signals such as job changes extend it into prospect discovery. Tables, signal-score endpoints, website-visitor lookups, and webhook subscriptions round out the surface.

## For AI agents

Search and enrich B2B contacts and companies with Lusha: find prospects by filters, reveal profile fields by id, pull lookalikes and buying groups, and subscribe to signal webhooks.

## Scope

Does not send emails, run outreach sequences, or store CRM deals. Use for B2B contact and company search, enrichment, and signals only.

## Capabilities

- Enrich contacts or companies by Lusha id, choosing which fields to reveal with the reveal option
- Search and enrich contacts in one call from identifiers such as name and company
- Prospect contacts and companies with filter-based search, discovering valid filter values first
- Find lookalike contacts or companies from seed records and the buying group at target companies
- Read contact and company signals by signal type and score companies by signal activity
- Organise enriched records into contacts and companies tables and run columns over them
- Subscribe a webhook URL to signal events and review delivery audit logs

## Use cases

### AI sales-research agent enriching leads

A sales-research agent receives a list of names and company domains and needs business profiles before outreach. Through Jentic it searches for 'enrich a contact', loads the Lusha search-and-enrich operation with its input schema, and submits the contacts in one request with the API key injected at call time. The agent returns enriched profiles without the developer hand-writing a Lusha client.

Example prompt: Call POST `/v3/contacts/search-and-enrich` with a contacts array holding a full name and company domain, then return the enriched profile fields

### Filter-based account prospecting

A growth team builds a target-account list from firmographic filters rather than known names. The Lusha prospecting endpoints accept filters plus pagination, and the filter discovery endpoints list the valid filter types and values first, so a query only uses filters Lusha understands. Results can be saved into a companies table for later enrichment.

Example prompt: Call GET `/v3/companies/prospecting/filters` to discover filter types, then POST `/v3/companies/prospecting` with filters and pagination to list matching companies

### Lookalike and buying-group expansion

After closing a few accounts, a team wants more like them and the right people to contact. The Lusha lookalike endpoints take seed records and return similar companies or contacts, while the buying-group endpoint returns contacts at given companies for chosen personas. Together they expand an ideal-customer list into named contacts.

Example prompt: Call POST `/v3/companies/lookalike` with seeds from three closed accounts, then POST `/v3/contacts/buying-group` with the returned companies to find decision makers

### Signal-driven outreach timing

Outreach lands better when it follows a real change at the account. The Lusha signal endpoints return contact and company signals for chosen signal types since a start date, the signal-score endpoints rank companies or contacts by signal activity, and webhook subscriptions push new signals to your URL. A monitor can then queue outreach when a tracked account changes.

Example prompt: Call GET `/v3/companies/signals/types`, then POST `/v3/companies/signals` with ids and signalTypes to fetch recent signals for a watch list

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v3/contacts/search-and-enrich` | Search and enrich contacts |
| POST | `/v3/contacts/enrich` | Enrich contacts by id |
| POST | `/v3/companies/enrich` | Enrich companies by id |
| POST | `/v3/companies/prospecting` | Prospect companies by filters |
| POST | `/v3/companies/lookalike` | Get lookalike companies |
| POST | `/v3/contacts/buying-group` | Get buying group contacts |
| POST | `/v3/companies/signals` | Get company signals |
| POST | `/api/subscriptions` | Create a webhook subscription |

## Key resources

- **Contacts** — Business person profiles searched, enriched, prospected, and scored through the `/v3/contacts` endpoints
- **Companies** — Company profiles with search, enrich, prospecting, lookalike, signal, and website-visit endpoints
- **Tables** — Saved contacts and companies tables addressed by table_id, with entities and runnable columns
- **Subscriptions** — Webhook subscriptions for signal events, with test, opt-out, and audit-log endpoints

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 63 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 54 / 100
  - Developer Experience & Jentic Compatibility: 76 / 100
  - AI-Readiness & Agent Experience: 51 / 100
  - Agent Usability: 92 / 100
  - Security: 50 / 100
  - AI Discoverability: 84 / 100
- **View full report:** https://jentic.com/apis/lusha.com/lusha/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Lusha by hand means sending the key in its non-standard `api_key` header, learning the V3 search-then-enrich flow, and tracking async enrich jobs. Through Jentic you install once, import Lusha from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Lusha carries most targets in the request body, such as the ids sent to POST `/v3/contacts/enrich`, so rules bound which operations your agent may call rather than which records. Tables are the exception: table_id sits in the URL path, so a rule can pin the agent to one table. You choose the operations it may call, so destructive ones like deleting a table or regenerating the account secret are not included unless you add them.
- **Credential handling:** Your Lusha API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'enrich a contact' or 'find lookalike companies', and Jentic returns the matching Lusha operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Apollo** — B2B contact and company database with enrichment plus sales engagement tooling
- **People Data Labs** — Person and company enrichment datasets aimed at developers building data products
- **Hunter** — Email finding and verification by domain and name
- **HubSpot CRM Contacts** — CRM contact records where enriched Lusha data is stored and worked

## FAQ

### What authentication does the Lusha API use?

The Lusha API authenticates with an API key sent in the `api_key` request header, per its OpenAPI spec, and the spec applies it to every operation. You find the key in your Lusha dashboard under API settings. Through Jentic the key is stored by your own instance and attached at call time, so the agent never sees it.

### Can I enrich contacts in bulk with the Lusha API?

Yes. POST `/v3/contacts/enrich` takes an ids array of Lusha contact ids plus a reveal option for the fields you want returned, and POST `/v3/contacts/search-and-enrich` takes a contacts array of identifiers to find and enrich in one call. Larger runs can be tracked with GET `/v3/contacts/jobs/{jobId}.`

### What are the rate limits for the Lusha API?

The OpenAPI spec does not specify numeric rate limits. Check the Lusha documentation at https://docs.lusha.com for current limits, and use GET `/v3/account/usage` to read your account's credit usage before a large enrichment run.

### Is there a Lusha MCP server?

You don't need an MCP server to give your agent Lusha. Jentic connects it directly from the API Directory: import it, store your API key once, and your agent calls the search, enrich, and prospecting operations on demand without loading another server's tool definitions into its context.

### How do I prospect companies with Lusha through Jentic?

Search Jentic for 'find companies matching filters', load the POST `/v3/companies/prospecting` operation, and execute it with filters and pagination; GET `/v3/companies/prospecting/filters` lists the filter types to use. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Can I limit what my agent is allowed to do with the Lusha API?

Yes. For example, write a rule that allows only POST `/v3/contacts/search-and-enrich` and GET `/v3/account/usage`, so the agent can enrich a lead list and check credit usage but cannot delete tables, edit subscriptions, or regenerate the account secret. Every call it makes is logged.
