Lusha Enrich API
Reveal full contact and company profiles by Lusha id, with an explicit `reveal` list controlling which fields are unlocked and charged, and optional waterfall fall-through to enabled third-party data providers.
Reveal full contact and company profiles by Lusha id, with an explicit `reveal` list controlling which fields are unlocked and charged, and optional waterfall fall-through to enabled third-party data providers.
openapi: 3.2.0
info:
title: Lusha API Documentation Enrich API
version: ''
x-logo:
url: https://www.lusha.com/logo.png
license:
name: Proprietary
url: https://lusha.com/legal/terms
description: "<blockquote class=\"callout\">\n\n **This is the Lusha API V3 documentation.** \n \n V3 introduces a new search-then-enrich pattern, bulk operations, AI-powered lookalikes, and richer filter capabilities. All endpoints are under `https://api.lusha.com/v3/`.\n\n For more information on V3, refer to the [Migration Guide](/tutorials/v3-migration-guide).\n\n</blockquote>\n\n --- \n\nLusha provides a RESTful API for querying a comprehensive dataset of business profiles and company information. Built for teams running prospecting, enrichment, automation, and analytics workflows that need accurate, continuously updated business data. The API supports both real-time and bulk use cases.\n\nUse the Lusha API to **search for new prospects**, **enrich existing records**, **react to real-world changes**, and **expand coverage** with AI-powered lookalike recommendations.\n\n> All API requests must be made over **HTTPS**. All responses are returned in **JSON** format.\n\n--- \n## Available Endpoints\n\n| Category | Description |\n|---|---|\n| [**Search**](#tag/Search) | Find contacts or companies using known identifiers |\n| [**Enrich**](#tag/Enrich) | Retrieve full profile data for contacts or companies by ID |\n| [**Search & Enrich**](#tag/Search-and-Enrich) | Find and retrieve full contact or company data in a single call |\n| [**Prospecting**](#tag/Prospecting) | Filter-based search across contacts and companies |\n| [**Lookalikes**](#tag/Lookalikes) | AI-powered recommendations for similar contacts and companies |\n| [**Buying Group**](#tag/Buying-Group) | Identify decision makers, champions, and end users within target accounts |\n| [**Contacts Tables**](#tag/Contacts-Tables) | Persist, organize, and enrich contacts in reusable tables |\n| [**Companies Tables**](#tag/Companies-Tables) | Persist, organize, and enrich companies in reusable tables |\n| [**Signals**](#tag/Signals) | Real-world activity data for contacts and companies |\n| [**Website Visitors**](#tag/Website-Visits) | Companies ranked by website-visit signals for your tracked domains |\n| [**Filters**](#tag/Filters) | Discover valid filter values for prospecting |\n| [**Webhooks**](#tag/Webhooks) | Real-time signal notifications via HTTP callbacks |\n| [**Account**](#tag/Account) | Usage, credits, rate limits, and pricing |\n\n<blockquote class=\"callout\">\n\n **Waterfall Reveal for Contact Enrichment.**\n\n Enrich Contacts now supports `waterfallEnabled`. Fall through to your enabled third-party providers when Lusha's own data has no match, for extra reach on hard-to-match contacts. On by default once your account has it turned on - pass `waterfallEnabled: false` to opt a specific call out. [See Enrich Contacts](#operation/enrichContacts).\n\n</blockquote>\n\n---\n\n## Data Source and Privacy\n\n**Lusha is a search platform.** The data provided is not created or directly managed by Lusha. It is sourced from publicly available information and trusted business partners.\n\nFor more details on how we collect and handle data, see our [Privacy Policy](https://lusha.com/legal/privacy-notice/).\n\n---\n\n## Authentication\n\nAll API requests require an **API key** linked to your Lusha account and plan. Pass your key in the `api_key` request header on every call.\n\n> Generate and manage your API key in the [Lusha dashboard](https://dashboard.lusha.com/enrich/api).\n\nStore your API key securely and use it only in **server-side environments**.\n\n---\n\n## Rate Limiting\n\nLusha enforces rate limits on a per-plan basis to ensure fair usage and platform stability. Limits are applied across multiple time windows (per minute, per hour, and per day), and vary depending on your account plan.\n\nRate limits for the **Credit Usage API** differ from standard endpoint limits.\n\n> **Note:** To check your current plan's limits, visit the [Lusha Help Center](https://info.lusha.com/en/articles/163856-all-there-is-to-know-about-lusha-s-api) or contact your account manager.\n\n**Rate Limit Response Headers**\n\n| Header | Description |\n|--------|-------------|\n| `x-rate-limit-daily` | Total requests allowed per day |\n| `x-daily-requests-left` | Requests remaining in your daily quota |\n| `x-daily-usage` | Requests made in the current daily period |\n| `x-rate-limit-hourly` | Total requests allowed per hour |\n| `x-hourly-requests-left` | Requests remaining in your hourly quota |\n| `x-hourly-usage` | Requests made in the current hourly period |\n| `x-rate-limit-minute` | Total requests allowed per minute |\n| `x-minute-requests-left` | Requests remaining in the current minute window |\n| `x-minute-usage` | Requests made in the current minute window |\n\n---\n## Error Codes\n\nLusha uses standard HTTP status codes to indicate the result of each request.\n\n| Code | Name | Description |\n|------|------|-------------|\n| `200` | OK | Request was successful |\n| `400` | Bad Request | Request is malformed or missing required fields |\n| `401` | Unauthorized | API key is missing or invalid |\n| `402` | Payment Required | Insufficient credits or payment needed |\n| `403` | Forbidden | Account is inactive. Contact support@lusha.com |\n| `404` | Not Found | Endpoint or resource does not exist |\n| `429` | Too Many Requests | Rate limit or daily quota exceeded |\n| `451` | Unavailable For Legal Reasons | Request blocked due to GDPR regulations |\n| `499` | Client Closed Request | Request timed out before completing |\n| `5XX` | Server Error | Issue on Lusha's end. Retry with exponential backoff |\n\n**Error Response Format**\n\n```json\n{\n \"statusCode\": 400,\n \"message\": \"Invalid request parameters\"\n}\n```\n\n**Tables-specific error codes**\n\n| Code | Status | Meaning |\n|---|---|---|\n| `TABLE_NOT_FOUND` | 404 | The `table_id` does not exist or is not accessible to this account |\n| `COLUMN_NOT_FOUND` | 404 | The `column_id` does not exist on the given table |\n| `TABLE_NAME_CONFLICT` | 409 | A table with this name already exists |\n\nTables error bodies use the shape `{ \"message\": \"...\", \"code\": <status>, ... }` rather than the `statusCode`/`errors` shape used elsewhere in this doc.\n\n**Limits:** up to 500 entity IDs per add/remove call · max 50,000 entities per table · max 500 tables per account · `page` 0–100 · `size` default 100.\n\n**Tips for Handling Errors**\n\n- Verify your API key is correct and active\n- Read the `message` field for specific troubleshooting details\n- For `429` errors, wait before retrying\n- For `5XX` errors, use exponential backoff before retrying\n"
contact:
name: Lusha Support
url: https://api.lusha.com
email: support@lusha.com
termsOfService: https://lusha.com/legal/terms
x-privacy-policy:
name: Privacy Policy
url: https://lusha.com/legal/privacy-notice/
servers:
- url: https://api.lusha.com
description: Production server
security:
- ApiKeyAuth: []
tags:
- name: Enrich
description: '**Enrich APIs:** Retrieve full profile data for contacts or companies by ID.
Pass IDs from Search results to reveal emails, phones, and full firmographic data.
> **Billing:** Charged per revealed field via per-datapoint pricing (`revealEmail`, `revealPhone`, `reveal_company`).
'
x-tag-expanded: true
paths:
/v3/contacts/enrich:
post:
tags:
- Enrich
summary: Enrich Contacts
operationId: enrichContacts
description: "Reveal full contact data for contacts you've already found via Search Contacts.\n\nPass up to 100 contact `ids` (from the search response). Use the `reveal` field to control what gets unlocked:\n- `emails` — work and personal email addresses\n- `phones` — mobile and direct phone numbers\n- Omit `reveal` to get both by default\n\n---\n\n### Waterfall Reveal\nFall through to your enabled third-party providers when Lusha's own data has no match, for extra reach on hard-to-match contacts.\n\nIf **Data Waterfall** is enabled on your account, with specific providers turned on under **Account > Waterfall**, the waterfall runs automatically on every Enrich Contacts call - you don't need to pass anything to trigger it.\n\n\nPass `waterfallEnabled: false` to opt a specific call out:\n\n ```json\n \"reveal\": [\"emails\", \"phones\"],\n \"waterfallEnabled\": false\n ```\n\n- `reveal` controls **which fields** come back.\n- `waterfallEnabled` controls whether the waterfall runs for this call at all. Defaults to `true` whenever Data Waterfall is enabled on your account; pass `false` to disable it just for this call.\n- Provider order isn't configurable - Lusha manages that internally.\n- If Data Waterfall is off or no providers are enabled on your account, `waterfallEnabled` has no effect either way.\n---\n> **Tip:** If `canReveal.credits` is `0` in the search response, that data has already been revealed for your account — re-enriching it is free.\n\n> **Billing:** Charged per revealed field (email or phone) via per-datapoint pricing.\n\n> **Persisting to a table:** Pass `tableId` to also add these contacts to an existing table and populate the Work email / Phone columns. See [Contacts Tables](#tag/Contacts-Tables).\n"
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/V3ContactsEnrichRequest'
examples:
standard:
summary: Standard reveal (waterfall runs automatically if enabled on your account)
value:
ids:
- '4389064654'
- '4389064624'
reveal:
- emails
- phones
waterfallDisabled:
summary: Opt this call out of the waterfall
value:
ids:
- '4389064654'
- '4389064624'
reveal:
- emails
- phones
waterfallEnabled: false
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/V3ContactsEnrichResponse'
example:
requestId: 71581363-f73d-46e1-9115-ecbd771b964b
results:
- id: '4389064654'
firstName: Daniel
lastName: Turgeman
fullName: Daniel Turgeman
jobTitle:
title: Technical Product Manager
departments:
- Product
seniority: Manager
location:
country: Israel
countryIso2: IL
city: Tel Aviv
continent: Asia
coordinates:
- 34.78057098388672
- 32.08087921142578
isEuContact: false
tags: []
emails:
- email: daniel.t@lusha.com
type: work
confidence: A+
updateDate: '2026-04-23'
phones: []
company:
id: '16303253'
name: Lusha
domain: www.lusha.com
industry: Technology, Information & Media
socialLinks:
linkedin: https://www.linkedin.com/in/daniel-turgeman-49676b161
previousEmployment: []
updateDate: '2026-04-23'
billing:
creditsCharged: 2
resultsReturned: 2
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/PaymentRequired'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
/v3/companies/enrich:
post:
tags:
- Enrich
summary: Enrich Companies
operationId: enrichCompanies
description: 'Reveal full company data for companies you''ve already found via Search Companies.
Pass up to 100 company `ids` (from the search response). Each enriched result includes:
- Firmographics: size, revenue range, year founded, company type
- Industry: primary industry, sub-industry, SIC/NAICS codes
- Locations: HQ and additional office sites
- Technologies, funding rounds, buyer intent topics
- LinkedIn followers, logo URL, social links
> **Billing:** Charged per successful result via the `reveal_company` action.
> **Persisting to a table:** Pass `tableId` to also add these companies to an existing table and populate the relevant enrichment columns. See [Companies Tables](#tag/Companies-Tables).
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/V3CompaniesEnrichRequest'
example:
ids:
- '16303253'
- '12790225'
reveal:
- employeesByLocation
- employeesByDepartment
- employeesBySeniority
- competitors
- intent
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/V3CompaniesEnrichResponse'
example:
requestId: 5e8f5993-a0a3-4510-bc90-7b4506272c68
results:
- id: '16303253'
name: Lusha
alternativeName: lusha
domain: www.lusha.com
alternativeDomains:
- lusha.com
description: Lusha is the leader in Sales Streaming – a new sales paradigm that streams top leads straight to salespeople and handles all the outreach, so they can escape the lead grind and just sell.
companyType: Private Company
yearFounded: 2016
employeeCount:
exact: 364
min: 201
max: 500
industry: Technology, Information & Media
subIndustry: Software Development
specialities:
- data accuracy
- data enrichment
- lead discovery
- lead generation
- prospecting
- sales enablement
- sales intelligence
- software development
sicCodes:
- code: 7371
description: Custom computer programming services
naicsCodes:
- code: 541511
description: Custom Computer Programming Services
location:
city: Boston
state: Massachusetts
country: United States
countryIso2: US
continent: North America
zipCode: 02199
additionalLocations:
- city: New York City
state: New York
country: United States
countryIso2: US
continent: North America
socialLinks:
linkedin: https://www.linkedin.com/company/lushadata
facebook: https://www.facebook.com/lusha
x: https://x.com/lusha
linkedinFollowers: 64339
funding:
rounds:
- currency: USD
roundAmount: 205000000
roundType: Private Equity Round
roundDate: Nov 10, 2021
- currency: USD
roundAmount: 40000000
roundType: Private Equity Round
roundDate: Feb 10, 2021
totalRounds: 2
totalRoundsAmount: 245000000
currency: USD
isIpo: false
lastRoundType: Private Equity Round
lastRoundAmount: 205000000
lastRoundDate: Nov 10, 2021
technologies:
- amazon
- google analytics
popularityTier: 1
logoUrl: https://logo.lusha.co/brightdata/year=2024/month=05/day=03/j_lvq47h0g13te1b3wpu.e7b0795e7affc9953dadd43e6fce99a2c5260043.file_lvq4cfwv17kcb9m4ej.logo_cached.jpg
employeesByDepartment:
- department: Business Development
count: 14
- department: Consulting
count: 10
- department: Customer Service
count: 28
- department: Engineering & Technical
count: 95
- department: Finance
count: 14
- department: General Management
count: 41
- department: Human Resources
count: 16
- department: Information Technology
count: 13
- department: Legal
count: 7
- department: Marketing
count: 31
- department: Operations
count: 22
- department: Other
count: 35
- department: Product
count: 38
- department: Research & Analytics
count: 42
- department: Sales
count: 72
employeesByLocation:
- country: Israel
state: null
count: 301
- country: United States
state: null
count: 45
- country: United States
state: Massachusetts
count: 30
- country: Brazil
state: null
count: 22
- country: France
state: null
count: 10
employeesBySeniority:
- seniority: C-Suite
count: 12
- seniority: Director
count: 35
- seniority: Founder
count: 33
- seniority: Intern
count: 1
- seniority: Manager
count: 141
- seniority: Non-Manager
count: 163
- seniority: Partner
count: 6
- seniority: Senior
count: 59
- seniority: Vice President
count: 9
competitors:
- id: '2497917'
name: Clearbit
domain: clearbit.com
- id: '9781263'
name: Hunter.io
domain: hunter.io
- id: '40857684'
name: MCJ Solutions Inc
domain: zoominfo.com
- id: '157961346'
name: PMc
domain: apollo.io
businessModel:
- B2B
emails:
- email: Support@Lusha.com
keywords:
- contact information
- data accuracy
- data enrichment
- lead discovery
- lead generation
- prospecting
- sales cadence
- sales enablement
- sales intelligence
- sales playlist
- sales streaming
- software development
- id: '12790225'
name: Salesforce
alternativeName: salesforce
domain: www.salesforce.com
alternativeDomains:
- salesforce.com
description: 'We''re the #1 AI CRM—where humans with agents drive customer success together with AI, data, and Customer 360 apps on one platform.'
companyType: Public Company
employeeCount:
exact: 88711
min: 100001
max: 10000000
industry: Technology, Information & Media
subIndustry: Software Development
sicCodes:
- code: 7371
description: Custom computer programming services
naicsCodes:
- code: 541511
description: Custom Computer Programming Services
location:
city: San Francisco
state: California
country: United States
countryIso2: US
continent: North America
zipCode: '94105'
additionalLocations:
- country: United States
countryIso2: US
continent: North America
- city: Chicago
state: Illinois
country: United States
countryIso2: US
continent: North America
- city: London
country: United Kingdom
countryIso2: GB
continent: Europe
- city: Tel Aviv
country: Israel
countryIso2: IL
continent: Asia
socialLinks:
linkedin: https://www.linkedin.com/company/salesforce
linkedinFollowers: 6417067
revenueRange:
min: 10000000000
max: 100000000000
intent:
detectedTopics:
- topicName: Cognism Limited
metadata:
topicScore: 85
topicTrend: '+24'
topicCount: 1
technologies:
- amazon
- paypal
- google analytics
popularityTier: 1
logoUrl: https://logo.lusha.co/brightdata/year=2024/month=05/day=20/j_lwej8xik12ncr6ge4u.9e1ec373903019beff129694cb926761f065e9af.file_lwejc8mispkz3m1ng.logo_cached.jpg
employeesByDepartment:
- department: Business Development
count: 2820
- department: Consulting
count: 4963
- department: Engineering & Technical
count: 29167
- department: Finance
count: 2126
- department: Marketing
count: 4793
- department: Operations
count: 6117
- department: Sales
count: 22316
employeesByLocation:
- country: United States
state: null
count: 46090
- country: United States
state: California
count: 9928
- country: India
state: null
count: 18527
- country: United Kingdom
state: null
count: 3682
- country: Ireland
state: null
count: 3226
employeesBySeniority:
- seniority: C-Suite
count: 1039
- seniority: Director
count: 11538
- seniority: Manager
count: 18836
- seniority: Non-Manager
count: 49493
- seniority: Senior
count: 20509
- seniority: Vice President
count: 3104
competitors:
- id: '4269625'
name: iGroup Vietnam - Solutions for Enterprise
domain: monday.com
- id: '7237482'
name: Pipedrive
domain: pipedrive.com
- id: '9740086'
name: Microsoft
domain: microsoft.com
- id: '156097472'
name: Hub Spot
domain: hubspot.com
phones:
- number: +1 800-420-7332
emails:
- email: datasubjectrequest@salesforce.com
billing:
creditsCharged: 10
resultsReturned: 2
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/PaymentRequired'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
schemas:
V3EmailAddress:
type: object
properties:
email:
type: string
format: email
example: orit.shilvock@lusha.com
type:
type: string
enum:
- work
- private
- unknown
example: work
confidence:
type:
- string
- 'null'
example: A+
updateDate:
type: string
format: date
example: '2026-04-23'
V3SicCode:
type: object
properties:
code:
type: integer
example: 7371
description:
type: string
example: Custom computer programming services
V3ContactTag:
type: object
properties:
id:
type: string
name:
type: string
color:
type: string
example: '#FF5733'
V3NaicsCode:
type: object
properties:
code:
type: integer
example: 541511
description:
type: string
example: Custom Computer Programming Services
V3Billing:
type: object
description: Credit usage summary for a V3 API request
properties:
creditsCharged:
type: integer
description: Total credits charged for this request
example: 3
resultsReturned:
type: integer
description: Number of successful results returned
example: 1
TableWrite:
type: object
description: 'Added to a Prospecting, Enrich, Signals, or Lookalike response when `tableId` is passed on the request. The primary response is unaffected even if the table write fails.
'
properties:
tableId:
type: string
example: '482910'
added:
type: integer
description: Number of new entities added to the table by this call.
example: 3
alreadyPresent:
type: integer
description: Number of entities from this call that were already in the table.
example: 2
columnsCreated:
type: integer
description: Number of columns auto-created by this call (e.g. a Signals column created on first use).
example: 0
rowsProcessed:
type: integer
description: Number of rows the column-run touched as part of this call.
example: 5
rowsCharged:
type: integer
description: Number of those rows that incurred a credit charge.
example: 5
rowsAlreadyPaidInTable:
type: integer
description: Number of those rows that were already paid for in this table and were not re-charged.
example: 0
creditsCharged:
type: integer
description: Credits charged specifically for this table write.
example: 0
V3EnrichedContactCompanyRef:
type: object
properties:
id:
type: string
example: '16303253'
name:
type: string
example: Lusha
domain:
type: string
example: www.lusha.com
industry:
type: string
example: Technology, Information & Media
V3ContactsEnrichRequest:
type: object
required:
- ids
properties:
ids:
type: array
items:
type: string
minItems: 1
maxItems: 100
example:
- '4389064654'
- '4389064624'
reveal:
type: array
items:
type: string
enum:
- emails
- phones
example:
- emails
- phones
waterfallEnabled:
type: boolean
default: true
description: 'Whether this call is allowed to fall through to your enabled
third-party providers when Lusha''s own data has no match, for the fields
requested via `reveal`. Defaults to `true` whenever Data Waterfall is
enabled on your account (Account > Waterfall) - pass `false` to opt this
specific call out. Has no effect if Data Waterfall or no providers are
enabled on your account. Provider order isn''t configurable - Lusha manages
that internally.
'
example: false
tableId:
type: string
description: Optional. If provided, these contacts are also added to this table (if not already present) and the revealed fields' columns are populated. See the Tables API.
example: '482910'
V3ItemError:
type: object
description: Per-item error in a batch response
properties:
code:
type: string
enum:
- NOT_FOUND
- COMPLIANCE_RESTRICTED
- ENRICH_FAILED
- NO_SCORE
example: NOT_FOUND
message:
type: string
example: Contact not found
V3CompaniesEnrichRequest:
type: object
required:
- ids
properties:
ids:
type: array
items:
type: string
minItems: 1
maxItems: 100
description: Company IDs from search results (strings)
example:
- '16303253'
- '12790225'
reveal:
type: array
items:
type: string
enum:
- employeesByDepartment
- employeesByLocation
- employeesBySeniority
- competitors
- intent
- estimatedAnnualItSpend
- monthlyWebsiteTraffic
description: 'Additional data fields to reveal. Each field is charged separately per result.
- `employeesByDepartment` — breakdown of employees by department
- `employeesByLocation` — breakdown of employees by country/state
- `employeesBySeniority` — breakdown of employees by seniority level
- `competitors` — list of competitor company IDs
- `intent` — buyer intent topics
- `estimatedAnnualItSpend` — estimated annual IT spend. 1 credit per company, charged only when a non-null value is returned.
- `monthlyWebsiteTraffic` — monthly website traffic and month-over-month change. 1 credit per company, charged only when a non-null value is returned.
'
example:
- employeesByDepartment
- employeesByLocation
- employeesBySeniority
- competitors
- intent
- estim
# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lusha/refs/heads/main/openapi/lusha-enrich-api-openapi.yml