Email Finder API - Work Emails, Phone Numbers, Profiles avatar

Email Finder API - Work Emails, Phone Numbers, Profiles

Under maintenance

Pricing

$15.00 / 1,000 contact or company results

Go to Apify Store
Email Finder API - Work Emails, Phone Numbers, Profiles

Email Finder API - Work Emails, Phone Numbers, Profiles

Under maintenance

Find work emails, personal emails and phone numbers for professionals by job title, seniority, employer, skills and location, and search companies by firmographics, tech stack and buying signals. Pay per result. Bring your own API key.

Pricing

$15.00 / 1,000 contact or company results

Rating

0.0

(0)

Developer

Nabeel Hassan

Nabeel Hassan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Find the people you want to reach and the companies they work for, then export the results as clean rows. Search a database of professional profiles by job title, seniority, department, employer, previous employer, skills, school and location, resolve work emails, personal emails and phone numbers for the people you name, and search companies by firmographics, tech stack, competitors and buying signals. You pay only for the records you actually receive.

This actor is built for outbound prospecting, recruiting and sourcing, building account and contact lists, alumni targeting, and enriching a CRM with verified contact details.

What you can do with it

  • Build a targeted contact list by title, seniority and department at companies matching your ideal customer profile.
  • Resolve work emails and phone numbers for a list of LinkedIn URLs you already hold.
  • Source candidates by skills, school, degree and previous employer.
  • Catch people who just changed jobs, which is the strongest timing signal in outbound.
  • Build a competitive displacement list by asking for the competitors of a company you name.
  • Search companies by the technology they run, their hiring signals and their news signals.
  • Export everything as JSON, CSV or Excel, or push it into a CRM or warehouse.

Features

  • All four of the provider's endpoints in one actor, chosen with a single mode field: people search, people lookup, company search and company lookup.
  • The difference between searching and looking up is made explicit rather than left as a surprise. Search returns profiles without contact details; lookup is what resolves emails and phone numbers. Every row carries hasContactDetails so a list is never mistaken for a contactable one.
  • The lookup list accepts whatever you happen to have: a LinkedIn URL, an email address, a numeric provider id, a company domain, a ticker, or a name with the employer after a pipe. Each line is routed to the right identifier automatically.
  • Paging is done the provider's way, by a record offset counted from 1 rather than a page number, following the next offset the provider returns and stopping at its 10,000-record depth limit, which is logged rather than hit silently.
  • A successful search answers with HTTP 201 rather than 200, which the client handles, so no run fails on a status code that actually means success.
  • Emails and phone numbers are normalised into value, grade and type triples, with counts, alongside the provider's own recommended email picks, so you can filter on deliverability grade before sending.
  • Job history, education and skills are kept intact for sourcing work.
  • A lookup with no match comes back as a row marked matched: false rather than vanishing, and it is never charged for.
  • Duplicate people and companies are removed across pages, keyed on provider id then LinkedIn URL or domain then name, before anything is charged.
  • The untouched provider payload is kept under raw, so nothing is lost.
  • Rate limits are handled with retry-after aware backoff, and a run that hits a limit keeps everything already collected.
  • Pay-per-result pricing with a hard result cap so a run can never surprise you.

Input

FieldTypeDescription
modestringFind people, get emails and phones, find companies, or enrich companies.
lookupsarrayOne lookup per line for the lookup modes. LinkedIn URL, email, id, domain, or name with employer after a pipe.
names / currentTitles / previousTitlesarrayPerson name and title filters.
managementLevels / departmentsarraySeniority and department filters.
employers / previousEmployersarrayCurrent and past employer filters.
skills / allSkillsarrayMatch any skill, or require every skill.
schools / degrees / majors / yearsExperiencearrayEducation and experience filters.
locations / statesarrayWhere the person is based.
jobChangeSignals / jobChangeRangeDaysarrayTarget recent job changers.
contactMethods / emailGradearray, stringRequire a contact method, or a minimum email deliverability grade.
companyNames / companyDomains / companyIndustriesarrayCompany identity and industry filters.
companySizes / companyRevenuesarrayHeadcount and revenue bands, written as the provider documents them.
companyNaicsCodes / companySicCodesarrayClassification codes.
companyTechstack / companyCompetitorsarrayTechnology and competitive filters.
companyIntent / companyJobPostingSignals / companyNewsSignals / companyGrowtharrayBuying, hiring, news and growth signals.
orderBystringRelevance, popularity or score.
skipUnmatchedbooleanDrop unresolvable lookups instead of returning them marked unmatched.
rawQueryobjectAny extra filter, merged last into the provider's query object.
maxResultsintegerStop after this many records (1 to 10,000).
pageSizeintegerRecords per search call (1 to 100).
apiKeystringYour API key. Required, stored securely.

A search mode needs at least one filter. A lookup mode needs at least one line in the lookup list.

Example output

Each dataset item is one person or one company, marked by recordType. Fields are populated where the provider has data, and the untouched payload is kept under raw:

{
"recordType": "person",
"personId": "12345678",
"status": "complete",
"name": "Alex Example",
"currentTitle": "VP of Engineering",
"currentEmployer": "Example Corp",
"currentEmployerDomain": "example.com",
"currentEmployerIndustry": "Computer Software",
"linkedinUrl": "https://www.linkedin.com/in/example",
"location": "San Francisco, California, United States",
"city": "San Francisco",
"region": "California",
"country": "United States",
"countryCode": "US",
"recommendedEmail": "alex@example.com",
"recommendedProfessionalEmail": "alex@example.com",
"currentWorkEmail": "alex@example.com",
"emails": [
{ "value": "alex@example.com", "grade": "A", "type": "professional" },
{ "value": "alex.example@gmail.com", "grade": "B", "type": "personal" }
],
"emailCount": 2,
"phones": [{ "value": "+1 415 555 0100", "type": "mobile" }],
"phoneCount": 1,
"hasContactDetails": true,
"jobHistory": [{ "title": "Director of Engineering", "company_name": "Example Corp", "start_date": "2019-03" }],
"education": [{ "school": "Example University", "degree": "BSc Computer Science" }],
"skills": ["distributed systems", "Go", "Kubernetes"],
"raw": { "id": 12345678, "name": "Alex Example" }
}

Pricing and the credit model

This actor uses pay-per-result pricing. You are charged a fixed price for each person or company delivered to the dataset. Duplicates and unmatched lookups are not charged, and a search that matches nothing costs nothing. Set maxResults to cap how many rows a run can collect, and set a run spending limit as a second safety net.

Your own provider plan meters separately, and the two modes cost very differently there: search results are cheap because they carry no contact details, while a lookup that resolves an email or a phone number is what actually spends a lookup credit. Search first to build and filter the list, then look up only the rows you decided to keep.

Bring your own API key

This actor connects to a third-party professional contact data provider (RocketReach) on your behalf and requires your own provider API key. Create a key in the provider's platform and paste it into the apiKey input. It is stored securely and never logged, and the actor never ships with or shares credentials.

Frequently asked questions

What data does this actor return?

For a person: provider id and status, name, current title and employer with the employer's domain, website, industry and LinkedIn page, LinkedIn URL and whether it is still active, profile picture, location broken into city, region, country and country code with coordinates, connection count, the provider's recommended email picks, every email and phone number with its deliverability grade and type, job history, education, skills, tags and the last update time. For a company: provider id, name, domain, email and website domains, ticker, industry and industry keywords, description, year founded, headcount, revenue, funding investors, SIC and NAICS codes, tech stack, competitors, departments, growth, phone and fax, the full address, and social links. Every record also carries the untouched provider payload.

What is the difference between search and lookup?

Search discovers people and returns their profile, but not their email address or phone number. Lookup takes a person you have already identified and resolves their contact details. This is the provider's own split, and it is also the cost split: searching is cheap, resolving contact details is what spends the credit. The normal workflow is search first, filter, then look up the rows you kept.

How do I look up someone if I only have their name?

Add the employer after a pipe: Alex Example | Example Corp. A name on its own is ambiguous and will often match the wrong person. Name plus employer is the most reliable combination short of a LinkedIn URL, which is better still.

Why do employee count and revenue take text rather than numbers?

Because the provider models them as bands rather than as ranges, and every search filter it exposes is a list of strings. A headcount filter is a band label such as 51-200, not a minimum and a maximum. Write them exactly as the provider documents them, or the filter is quietly ignored.

Can I filter out low-quality email addresses?

Yes, two ways. Set emailGrade to a minimum grade so the provider only returns people whose email meets it, and check the per-email grade on each returned row before sending. Both matter: the first narrows the search, the second lets you pick between several addresses on the same person.

How do I find people who just changed jobs?

Use jobChangeSignals together with jobChangeRangeDays to set how far back a change still counts. New starters in a role are the single most responsive segment in outbound, because budgets and tooling decisions reopen when someone new takes over.

How do I build a competitive displacement list?

Use companyCompetitors in company search mode with the name of the incumbent you want to displace, or companyTechstack with the product they run. The first finds companies the provider treats as competitors, the second finds companies actually running the tool.

Why does the run stop at 10,000 records?

The provider caps how deep search paging can go, at a 10,000-record offset, regardless of how many records match. The log says so explicitly when the limit is reached. Split the search, for example one industry or one location at a time, to reach past it.

What happens to a lookup with no match?

It comes back as a row with matched: false and the original input under query, so you can see exactly which inputs failed, and it is not charged. Turn on skipUnmatched if you would rather they disappeared.

How does the actor handle rate limits?

It throttles requests, honours the retry-after signal on a rate-limited response, and backs off exponentially. A response saying the account is out of credits or that the plan does not include API access stops the run early and keeps everything already collected.

How am I charged?

You pay a fixed price per record returned to the dataset. Duplicates and unmatched lookups are not charged and empty runs cost nothing. Use maxResults and the run spending limit to control cost.

What output formats are available?

The dataset can be exported as JSON, CSV, Excel, HTML or RSS, or read through the API for pushing into a CRM or warehouse.

Keyword map

email finder api, work email lookup api, find email by linkedin url, contact data api, b2b contact database api, phone number lookup api, professional profile search api, people search api, lead generation contact data, recruiting sourcing api, candidate search api, job change signal data, company search api, technographic company search, competitor list api, buying intent data api, crm contact enrichment, prospecting email api, bulk email finder, verified business email data.