API review

Lusha API review

B2B contact and company data API (about 515.5M contacts, 29M companies) for search-then-reveal email and phone enrichment, ICP prospecting, signals, lookalikes, buying groups, scoring and workspace tables, plus a 50-tool hosted MCP. Best for phone reveals at a flat 5 credits per number.

Verified 25 Oct 2026 · 22 endpoints listed · Official MCP server

What a call costs

The actions you pay for, as Lusha prices them in credits.

ActionCostPer
Verified email reveal1 creditper email address
Phone number reveal5 creditsper phone number
Waterfall vendor email / phone (Data Waterfall)2 / 8 creditsper work email / per phone
API call (search/prospecting)1 creditper 1-25 results
Company profile via API1 creditper company
Signals and premium data enrichment1 creditper data point
Buyer intent1 creditper intent topic per company/contact
AI recommendations1 creditper lead/account
Show all 18 priced actionsHide the rest
ActionCostPer
ICP Fit Score1 creditper scored record
De-anonymized IP (website visitors)2 creditsper successful identification
Conversation intelligence8 creditsper recorded call
Export to CSV1 creditper 1-25 results (company/contact)
Export to CRM1 creditper result (company/contact)
AI search1 creditper 5 prompts
Notetaker summary analysis1 creditper 25 recorded meeting summaries
Notetaker transcript analysis1 creditper recorded meeting full transcript
Signal Score (API)1 creditper scored row (free until seeded on the account)
Buying group contact (API)charged per contact returned (rate not stated)per contact

Pricing, plan by plan

US dollars, as Lusha's pricing page shows them on 25 Oct 2026. Monthly and annual billing are shown apart.

Free tier Free: $0, 40 credits per month, 1 seat, no credit card

Free

$0

Free

40 credits/month

API included

Starter

$49.90/mo

billed monthly

$37.45/mo

billed annually ($449.10 a year)

400 credits/month (monthly) or 4,800/year upfront (annual); 1 seat

API included
Plan details

Buy credits anytime in account settings

Pro

$69.90/mo

billed monthly

$52.45/mo

billed annually ($629.10 a year)

600 credits/month (roll over up to 2x) or 7,200/year; 2 free seats; adds API, CSV enrichment, Signals, Webhooks

API included
Plan details

Buy credits anytime

Premium

$399.90/mo

billed monthly

$299.95/mo

billed annually ($3,599.10 a year)

3,400 credits/month or 40,800/year at the slider's default position (slider changes the price); 5 free seats; API Advanced

API included
Plan details

Buy credits anytime

Scale

Custom quote

Custom credits; '50%+ off price per credit'; SSO, credit allocation, DNC

API included

Rate limits

Account-level (not per key): 25 requests/second default on all endpoints; /account/usage 5/min; Webhooks API 100/min; webhook bulk create/delete 25 items per request.

LimitFreeStarterPro / Premium / Scale
ApiStrict rate limitsStrict rate limitsDefault limits; higher hourly/daily quotas on higher tiers via account manager
More on limitsLess

Hourly and daily quotas vary by plan and are returned in x-rate-limit-minute/hourly/daily and x-*-requests-left headers. Free and Starter API has 'Strict rate limits' per the pricing table.

How to get an API key

Lusha uses API key. The steps below follow Lusha's own docs.

  1. Create a Lusha account. The Free plan includes API access.
  2. Lusha API Dashboard dashboard.lusha.com/api/manage-api-keys (only admins and managers with API feature access can see it)
  3. Send it with every request: header api_key (lowercase, underscore; other casings are rejected). MCP: OAuth for Claude/ChatGPT/Codex, or x-api-key header for other clients.
  4. Make a first call: Find contacts by identifier; non-PII preview with has/canReveal. Keep the key in an environment variable, never in the command.
    curl -X POST "https://api.lusha.com/v3/contacts/search" \
      -H "api_key: $LUSHA_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'

Where the docs live

WhatWhere
Documentationdocs.lusha.com/index.md
API referencedocs.lusha.com/api-reference/overview.md
OpenAPI specdocs.lusha.com/openapi.json
llms.txtdocs.lusha.com/llms.txt
Changelogdocs.lusha.com/changelog/overview.md
Base URLhttps://api.lusha.com
MCP serverhttps://mcp.lusha.com

Strengths and limits

Where it fits

  • Phone (mobile/direct) reveals at a flat 5 credits per number
  • Batch enrichment of up to 100 contacts or companies per call, synchronous
  • Free previews first: search returns a canReveal cost per field so you only pay for fields that exist
  • Signals: job changes, promotions, hiring, headcount, news, weekly intent topics; webhooks for monitored entities
  • Agent workflows via the official MCP (OAuth for Claude/ChatGPT/Codex, x-api-key for others)

Where it falls short

  • Teams on Free or Starter who need real API throughput: the pricing table marks API there as 'Strict rate limits'
  • Field-scoped billing (email only or phone only) unless you are on the Unified Credits plan; otherwise every returned data point is charged
  • Very large ICP pulls: prospecting pagination stops at page 1000 x size 100

Worth knowing

  • Header is api_key exactly (lowercase, underscore). Not Bearer.
  • Two-step search then enrich: both steps bill. Search is charged per successful result (pricing page: 1 credit per 1-25 results).
  • Docs disagree on misses: the Get Started page says minimum 1 credit per request even if no match; the Billing FAQ and Search page say NOT_FOUND is not charged.
  • revealEmails / revealPhones (email-only or phone-only billing) are Unified Credits plan only; on other plans they return 403 and every returned data point is charged.
  • Data Waterfall (if enabled in the dashboard) silently fills gaps from third-party vendors at higher prices (2 credits/email, 8/phone) and can return an async job; pass waterfallEnabled:false to keep Lusha-only.
6 moreShow fewer
  • Rate limits are per account, so every key and integration shares 25 req/s; /account/usage is only 5/min.
  • 402 = out of credits, 429 = rate limited, 451 = legal/GDPR restriction.
  • V2 is legacy and 'approaching deprecation'; V3 is current. Recommendations need a user-scoped key or OAuth (account-wide keys get 403).
  • Annual plans grant credits upfront and reset unused at year end. Monthly rollover (up to 2x) is shown on the Pro and Premium cards and compare table; the Starter card shows no rollover although the FAQ says monthly plans roll over.
  • Docs disagree on Buying Group billing: the API FAQ calls results 'free previews', the Buying Group overview and OpenAPI say charged per contact returned.
  • Signal Score and Conversations endpoints are free until the action is 'seeded on your account's pricebook', then 1 credit per row / per 25 conversations; check billing.creditsCharged.

Our take

Lusha is the last step in the email chain of an enrichment service we built for a B2B data company, called through an enrichment orchestration platform with the email and phone reveals requested separately.

Who should use it

Use Lusha for
Phone (mobile/direct) reveals at a flat 5 credits per number
Look elsewhere for
Teams on Free or Starter who need real API throughput: the pricing table marks API there as 'Strict rate limits'

If Lusha is not the answer

Other Sourcing tools in this directory, each with its own review.

Before you build

Four things to settle first, each read off Lusha's own pages.

  • Confirm the API is on your planThe Free plan includes API access. Free tier: Free: $0, 40 credits per month, 1 seat, no credit card.
  • Keep the key out of your codeAPI key. It is sent as: header api_key (lowercase, underscore; other casings are rejected). MCP: OAuth for Claude/ChatGPT/Codex, or x-api-key header for other clients..
  • Design around the rate limitAccount-level (not per key): 25 requests/second default on all endpoints; /account/usage 5/min; Webhooks API 100/min; webhook bulk create/delete 25 items per request.
  • Know the catch before you scaleHeader is api_key exactly (lowercase, underscore). Not Bearer.

Want us to build it for you?

Tell us what you want Lusha to do in your stack. We will show you how we would wire it into your data, outbound or CRM, and what we would check first.

Read from lusha.com/pricing, docs.lusha.com/api-reference/overview.md and docs.lusha.com/rate-limiting.md. Verified 25 Oct 2026.

All 22 endpointsFor developers: method, path, what it does and what it costs.

Base URL: api.lusha.com

Bulk and async: Yes: every V3 search/enrich/signal/score endpoint takes 1-100 records per call; buying group up to 25 companies; tables add up to 500 entities. Source: docs.lusha.com/faq/api.md

Webhooks: Yes, for signals on subscribed contacts/companies (job changes, promotions, company events). HMAC-SHA256 signed, automatic retries, audit logs, opt-out endpoint. Pro plan and above per pricing page. Source: docs.lusha.com/webhooks/overview.md

22 endpoints
MethodPathWhat it doesCost
POST/v3/contacts/searchFind contacts by identifier; non-PII preview with has/canRevealCharged per successful result (api_search); NOT_FOUND not charged. Pricing page: API call 1-25 results = 1 credit
POSTasync/v3/contacts/enrichReveal emails and phones for contact IDs from searchPer revealed data point: 1 credit per email, 5 per phone (Lusha data); Waterfall vendor match 2 per work email, 8 per phone; charged once per account
GET/v3/contacts/jobs/{jobId}Poll async Data Waterfall enrich jobPolling free; async data points billed on the job
POST/v3/contacts/search-and-enrichFind and reveal contacts in one callBilling applies at both the search and enrich steps
POST/v3/companies/searchFind companies by id, name or domain (preview)Per successful result
POST/v3/companies/enrichReveal firmographics, employees by department, competitors, intentPer result (reveal_company; pricing page: 1 credit per company profile via API); extra fields (employeesByDepartment, competitors, intent) charged separately
POST/v3/companies/search-and-enrichFind and reveal companies in one callSearch + enrich charges
POST/v3/contacts/prospectingICP filter search for net-new contactsSearch charge per results page (API call 1-25 results = 1 credit); signal filters charged per matched signal
POST/v3/companies/prospectingICP filter search for companiesAs contacts prospecting
GET/v3/contacts/prospecting/filters and /v3/companies/prospecting/filters/{filterType}Discover filter types and valid valuesfree
POST/v3/contacts/signals and /v3/companies/signalsSignal events: job change, promotion; hiring, headcount, traffic, news, weekly intent changesPer matched signal per result (no match, no charge)
POST/v3/contacts/signal-score and /v3/companies/signal-scoreSingle [0,1] buying-signal score per record1 credit per scored row (signal_score_contact_reveal / company equivalent); limited availability: free (creditsCharged 0) until the action is seeded on the account's pricebook; NOT_FOUND / NO_SCORE never charged
POST/v3/contacts/icp-fit-score and /v3/companies/icp-fit-scoreScore records against 1-3 Target Profiles1 credit per scored record (score 0 still charged; NOT_FOUND/NO_SCORE free); GET /v3/icp/profiles free
POST/v3/contacts/lookalike and /v3/companies/lookalikeAI lookalikes from seed recordsPer result returned
POST/v3/contacts/recommendations and /v3/companies/recommendationsDaily ranked recommendations from Target ProfilesCharged per result without an error (contactRecommendationsReveal / companyRecommendationsReveal); error rows (e.g. COMPLIANCE_RESTRICTED) not charged; filters endpoints free. Pricing page: 1 credit per lead/account. Requires OAuth or a user-scoped key (account-wide keys get 403).
POST/v3/contacts/buying-groupBuying committee (decision_maker, potential_champion, end_user) at up to 25 companiesCharged per contact returned (buyingGroupContact action) per the Buying Group overview and the OpenAPI spec; revealing emails/phones via Enrich Contacts is charged separately. The API FAQ instead calls the results 'free previews' (docs contradict; the spec and overview are the more specific sources).
POST/v3/companies/website-visitsCompanies visiting your tracked domainsPricing page: de-anonymized IP 2 credits per successful identification
POST/GET/PATCH/DELETEasync/v3/contacts/tables..., /v3/companies/tables... (13 endpoints each)Workspace Tables (Beta): create, add up to 500 entities, add up to 10 columns, run enrichment columnsTable management and Add Columns free (Add Columns 'free today'); adding contacts free; adding companies charged reveal_company per newly added company (deduped); reading rows charged per row returned; running a column charged per row by the column's tier
POST/GET/v3/account/conversations/search, /v3/account/conversations/{id}/transcriptSearch Lusha-recorded sales calls and fetch transcriptsSearch: 1 credit per block of up to 25 conversations returned (ci_meeting_data_export), empty result free. Transcript: 1 credit per successful request (ci_transcript_analysis), 404 free. Free while the action is not seeded on the account's pricebook. Pricing page matches: Notetaker summary 1 credit/25, transcript 1 credit/1.
GET/v3/account/usageCredit balance, rate limits, plan detailsfree
POST/GET/PATCH/api/subscriptions (+ /{id}, /{id}/test, /delete, /opt-out), /api/audit-logs, /api/account/secretWebhook subscriptions for signal notifications, delivery logs, HMAC secretCharged when signals are detected and delivered; retries free
GET/POST/v2/person, /v2/company, /bulk/company/v2, /prospecting/*, /api/signals/* (V2 legacy)Legacy V2 enrichment, prospecting and signals; revealEmails/revealPhones live herePer data point