← all tools
Enrichment

Lusha

Verified emails and direct dials for people you already know you want.

Lusha is a contact enrichment tool, and one of the 53 tools hyreflow connects to Claude, ChatGPT and other AI assistants. Through hyreflow, an AI agent can run 21 actions, all of which look something up. Paid Lusha actions cost 2.8 to 13.9 credits per result or per request, from your hyreflow credit balance, so you need no Lusha account, though you can connect your own key.

Cost per call2.8–13.9 cr
Your own keyoptional
CategoryEnrichment

Lusha turns a name and a company into a way to reach them. Its strength is the direct dial, the mobile number that actually gets answered. Searching is cheap, revealing costs credits, so hyreflow shortlists before it spends.

Lusha works on a filtered list. Something upstream decides who matters, Lusha works out how to reach them.

What can you ask Claude or ChatGPT to do with Lusha?

With hyreflow connected, you ask for the outcome in plain language and the assistant runs Lusha for you. For example:

  • “Get a direct dial for this hiring manager, then log the call through Aircall”
  • “Enrich this list of 50 with verified emails and validate them with Enrichley”
  • “Find the head of talent at these twelve companies from TheirStack”
  • “Take this longlist csv and add mobiles for the ten I want to call first”

Which tools work well with Lusha?

In a hyreflow run, Lusha is most often paired with TheirStack, Enrichley, Aircall and Bullhorn.

  • TheirStack

    start from companies with live roles instead of a cold list

  • Enrichley

    validate before the sequencer, not after the bounce

  • Aircall

    dial the direct line and log the call automatically

  • Bullhorn

    file the contact detail on the record

Which Lusha actions can an AI agent run through hyreflow?

Through hyreflow, an AI agent can run 21 Lusha actions, all of which look something up. Paid Lusha actions cost 2.8 to 13.9 credits per result or per request, from your hyreflow credit balance, so you need no Lusha account, though you can connect your own key.

Lusha actionWhat it doesCost through hyreflow
Enrich companiesLooks something up2.8 credits per result
Enrich companyLooks something up2.8 credits per result
Enrich contact emailsLooks something up2.8 credits per result
Enrich contact phonesLooks something up13.8 credits per result
Enrich person emailLooks something up2.9 credits per result
Enrich person phoneLooks something up13.9 credits per result
Search and enrich companiesLooks something up2.9 credits per request
Search and enrich contact emailsLooks something up2.9 credits per request
Search and enrich contact phonesLooks something up13.9 credits per request
Search companiesLooks something up2.8 credits per request
Show all 21 Lusha actions →
Lusha actionWhat it doesCost through hyreflow
Search contactsLooks something up2.8 credits per request
Company filter typesLooks something upfree
Company filter valuesLooks something upfree
Company lookalikesLooks something up2.8 credits per result
Company signalsLooks something up2.8 credits per result
Contact filter typesLooks something upfree
Contact filter valuesLooks something upfree
Contact lookalikesLooks something up2.8 credits per result
Contact signalsLooks something up2.8 credits per result
Prospecting companiesLooks something up5.5 credits per request
Prospecting contactsLooks something up5.5 credits per request

One credit is priced on the pricing page. The full price list for every tool is in the pricing tables.

Which hyreflow skills use Lusha?

25 hyreflow skills call Lusha as part of the run. A skill is a whole pipeline your agent already knows, end to end.

Sourcing

Find more candidates like the best person you ever placed

use whenyou can point at one person and say more like this, faster than you can write the brief that describes them

AI ArkProspeoLeadMagicExahyreflow AgentFullEnrichLusha
starts from a candidate · 8 stepsget the prompt →
Sourcing

Map a whole talent pool, including the half that is not looking

use whenthe role is hard, the obvious search is exhausted, and you need to prove to a client that you have covered the market

AI ArkExaProspeoLushaPredictLeadsFullEnrichLeadMagic
starts from a job spec · 8 stepsget the prompt →
Business development

Build the target account list for a recruitment desk

use whenyou are opening a new market or a new desk and need to know which companies are even worth calling

AI ArkProspeoLushaPredictLeadsExaSerperFirecrawl
starts from just your niche · 7 stepsget the prompt →
Business development

Find more companies like your best clients

use whenyou can name the five to ten clients you would clone if you could, and you want the companies that look like them

ProspeoLushaPredictLeadsExaSerperFirecrawlAI ArkEnrichley
starts from a list · 7 stepsget the prompt →
Business development

Spec one strong candidate out to fifteen companies

use whenyou have an excellent candidate on the bench and no live role to put them into

hyreflow NativeProspeoLushaPredictLeadsExaRecruit CRMBullhornLemlistInstantly
starts from a candidate · 8 stepsget the prompt →
Business development

Turn a CV into live open roles and the manager who owns each one

use whenone candidate, and you want to know exactly who is hiring for them right now and who to write to

hyreflow NativeProspeoLushaLeadMagicEnrichley
starts from a candidate · 8 stepsget the prompt →

See all 25 skills that use Lusha →

How does an AI agent know how to use Lusha?

hyreflow ships a written playbook for Lusha, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.

Read the Lusha docs →
Show the raw playbookwritten for the agent

WHAT/guardrails here; HOW in reference/endpoints.md + lib/lusha.py. OpenAPI cached at reference/docs/lusha/raw/v2_openapi.md.

Auth & config

  • Base URL: https://api.lusha.com
  • Auth: header api_key (Lusha → API settings). Env LUSHA_API_KEY; never hardcode.

Two modes

  • Enrichment (known target): enrich_person_email / enrich_person_phone / enrich_company (single) or enrich_companies (bulk). Consumes credits on reveal, at the price of the field the method reveals.
  • Prospecting (search → enrich): search_contacts/search_companies (cheap, returns requestId + ids) → enrich_contact_emails/enrich_contact_phones/enrich_companies (reveal the chosen ids, consumes credits).

Guardrails

  • Credits: reveal/enrich consumes credits; search is cheap. A phone reveal costs 5x an email one, and the method fixes which you get — there's no field argument to get it wrong. Pilot one, confirm, then bulk. get_usage() reads your own Lusha account and needs your own Lusha key; budget against hyreflow billing balance.
  • V1 person API is deprecated — this adapter uses v2 only.

Handoff

Enrichment/prospecting layer: search or take a shortlist → Lusha for verified emails/direct-dials → ATS (recruit-crm) / sequencer. Enrich late, on the filtered set. Sits in the email_enrichment (enrich_person_email) and phone_enrichment (enrich_person_phone) waterfalls.

Field notes (production experience)

Field-shape note: these are vendor-native operational notes. The client returns the raw vendor JSON and uses the method names in this file — read field shapes accordingly (no normalized-wrapper / result.data. prefix).

Strength: direct dials (mobile + desk), not just HQ. Coverage global, strongest NA + Europe.

  • Person input: LinkedIn URL (best - must contain linkedin.com/in/; Sales Navigator/Recruiter URLs fail), OR email, OR first_name+last_name+(company_name or company_domain). Name+company is the minimum combo - don't pass company_name alone.
  • Company enrich: domain/name/Lusha ID; don't include http:// or www. in domain values.
  • Output: email at emails[].email (or top-level email); phone at phones[].number - check the array first, top-level phone isn't always populated.
  • Fields: an *_email method reveals emails, a *_phone method phones; intent data comes from the *_signals methods.
  • Search: filters seniority, companySize (e.g. "201-500"), department, etc.; returns { contacts, pagination:{ page, pageSize, total, totalPages } }.

Callable surface — lib/lusha.py

Import: from lib.lusha import Lusha → instantiate Lusha() (reads key from env). Base: https://api.lusha.com. Generic passthrough: request(method, path, *, params, json).

  • company_filter_types() -> dict — GET /v3/companies/prospecting/filters — list company filter types.
  • company_filter_values(filter_type: str, *, query: str | None = None) -> dict — GET /v3/companies/prospecting/filters/{type} — valid values (sizes/revenues/sics/naics/
  • company_lookalikes(payload: dict) -> dict — POST /v3/companies/lookalike — AI lookalikes from 5–100 seed companies (domains/linkedin).
  • company_signals(payload: dict) -> dict — POST /v3/companies/signals — hiring/headcount/web-traffic/IT-spend/news signals for up to
  • contact_filter_types() -> dict — GET /v3/contacts/prospecting/filters — list contact filter types (+ whether query required).
  • contact_filter_values(filter_type: str, *, query: str | None = None) -> dict — GET /v3/contacts/prospecting/filters/{type} — valid values for a contact filter
  • contact_lookalikes(payload: dict) -> dict — POST /v3/contacts/lookalike — AI lookalikes from 5–100 seed contacts (linkedinUrl/email/
  • contact_signals(payload: dict) -> dict — POST /v3/contacts/signals — job-change/promotion events for up to 100 contact ids
  • enrich_companies(ids: list[str], **opts) -> dict — POST /v3/companies/enrich — reveal firmographics (size/revenue/industry/tech/funding/
  • enrich_company(*, domain: str | None = None, name: str | None = None) -> dict — Convenience: search-and-enrich a SINGLE company by domain or name (no http/www in domain).
  • enrich_contact_emails(ids: list[str]) -> dict — POST /v3/contacts/enrich — reveal the EMAILS of contacts already found via search. ids =
  • enrich_contact_phones(ids: list[str]) -> dict — POST /v3/contacts/enrich — reveal the PHONES of contacts already found via search. ids =
  • enrich_person_email(*, linkedin_url: str | None = None, email: str | None = None, first_name: str | None = None, last_name: str | None = None, company_name: str | None = None, company_domain: str | None = None) -> dict — Convenience: search-and-enrich the EMAIL of a SINGLE contact (wraps
  • enrich_person_phone(*, linkedin_url: str | None = None, email: str | None = None, first_name: str | None = None, last_name: str | None = None, company_name: str | None = None, company_domain: str | None = None) -> dict — Convenience: search-and-enrich the PHONE of a SINGLE contact (wraps
  • get_usage() -> dict — GET /v3/account/usage — credits (total/used/remaining), rate limits, plan, and per-action
  • prospecting_companies(payload: dict) -> dict — POST /v3/companies/prospecting — filter-based company search (size/revenue/industry/tech/
  • prospecting_contacts(payload: dict) -> dict — POST /v3/contacts/prospecting — filter-based ICP search (title/seniority/department/
  • search_and_enrich_companies(companies: list[dict], **opts) -> dict — POST /v3/companies/search-and-enrich — find + reveal companies in one call (id/name/domain).
  • search_and_enrich_contact_emails(contacts: list[dict], *, options: dict | None = None) -> dict — POST /v3/contacts/search-and-enrich — find + reveal EMAILS in ONE call. contacts:
  • search_and_enrich_contact_phones(contacts: list[dict], *, options: dict | None = None) -> dict — POST /v3/contacts/search-and-enrich — find + reveal PHONES in ONE call. Same contacts
  • search_companies(companies: list[dict], **opts) -> dict — POST /v3/companies/search — preview companies by id/name/domain (max 100). Returns has
  • search_contacts(contacts: list[dict], *, filters: dict | None = None, **opts) -> dict — POST /v3/contacts/search — preview contacts by identifier (id / linkedinUrl / email /

Questions about Lusha and hyreflow

Can I use Lusha inside Claude or ChatGPT?

Yes. hyreflow is a connector for Claude, ChatGPT and other AI assistants. Once hyreflow is connected, you ask for the outcome in plain language and the assistant calls Lusha for you. hyreflow exposes 21 Lusha actions this way.

Do I need my own Lusha account to use it with hyreflow?

No. hyreflow holds the Lusha account and bills each action from your hyreflow credits. If you already pay for Lusha, you can connect your own key instead, and hyreflow then charges no credits for those calls.

What does Lusha cost through hyreflow?

Paid Lusha actions cost 2.8 to 13.9 credits per result or per request, from your hyreflow credit balance, so you need no Lusha account, though you can connect your own key. 4 actions are free. hyreflow can show the cost of a paid action before it runs.

How do I connect Lusha to an AI agent over MCP?

Add the hyreflow MCP server to your assistant and sign in. hyreflow calls the Lusha API directly and exposes its actions as tools the assistant can run, so there is no separate Lusha server to install.

Connect hyreflow to your assistant →

Put Lusha to work from one prompt

Connect hyreflow to Claude or ChatGPT and ask for the outcome. It reads the playbook above before it makes a single call.