Blog/Sales & enrichment
5 min read

Apollo Email Finder API: Find Work Emails for a List of People

Find a person's work email from a name and company domain, or from a title search, through the Apollo email finder API with one key, billed per call.

Apollo Email Finder API: Find Work Emails for a List of People

Find a person's work email from their name and company, or find the people first. Paste this into your agent:

Set up https://monid.ai/SKILL.md, and then use Monid to find the Heads of Engineering at stripe.com with Apollo's free people search, then look up the work email for each one with Apollo's people match and give me a table with name, title, email and email status.

One prompt searches, then finds the emails. 1 min setup · 20-40 hrs saved.

You have a name and a company, or just a job title and a list of companies, and you want the work email without opening the Apollo extension for every row. This guide shows how to run Apollo's email finder as an API from your agent or a script, what a lookup returns (we ran both calls live on 2026-10-16), and what to watch when you go from one person to a list. It runs through Monid, the OpenRouter for agent tools: one key, one balance, every tool priced per call.

What is the easiest way to use the Apollo email finder API?

Monid. Install it once, add a key, and your agent calls Apollo's people search and people match with no Apollo portal, no plan and no separate account to set up.

  • Pay per call. A people match costs $0.026 (Verified 2026-10-16 on the people enrichment tools page). Buy calls as you need them: no monthly plan and no minimum top-up. The people search that finds the person first is free. Discovery and inspection are free; only a run bills.
  • One install, every API. The same key and the same balance call Apollo and every other tool on Monid, including the Hunter.io and People Data Labs endpoints you may want next. No new account when the job changes.
  • Lives inside your agent. Install the CLI, add your key, run the prompt above, and the tools are there whenever your agent needs them, with nothing to keep running. Your agent reads SKILL.md and learns the rest, so setup is about a minute.

The one lookup we ran for this guide cost $0.026 (Verified 2026-10-16 from the billed amount).

How do you find work emails for a list of people?

Search first, which is free, then match each person you want an email for. Search tells you who exists at a company and whether Apollo holds an email; match is the call that returns it.

For agents

Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:

set up https://monid.ai/SKILL.md

It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.

For humans

npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main

Read the price before the first call

monid inspect -p apollo -e /people/match

The price is tiered: a base per call, an extra charge when reveal_personal_emails is true, and a larger one when reveal_phone_number is true and a mobile number is found. Leave both flags off for a plain work-email lookup.

Find the people

monid run -p apollo -e /mixed_people/api_search \
  --query '{"q_organization_domains_list[]":["stripe.com"],"person_titles[]":["head of engineering"],"per_page":3}'

On 2026-10-16 this returned 3 rows out of total_entries 49 at no cost. Each row has an Apollo id, a first_name, the last name masked as Ko***v, the title, last_refreshed_at, and flags such as has_email and has_direct_phone. The flag says an email exists; it does not give it to you. Because the last name is masked, the id is what you carry into the next call. The endpoint pages up to 100 per page and 500 pages.

Match one person

monid run -p apollo -e /people/match \
  --query '{"first_name": "Patrick", "last_name": "Collison", "domain": "stripe.com"}'

This returned patrick@stripe.com with email_status: "verified" in about 1.2 seconds. The input accepts any mix of first_name, last_name, name, email, domain, organization_name, linkedin_url and the Apollo id from the search above, and more identifiers improve the match. The call runs as a job, so the first response can read RUNNING; poll the run id and it completes within a couple of seconds when no phone flag is set.

Loop over a list

Search once per company, keep the rows where has_email is true, and match each id. A hundred matches is a hundred calls at $0.026, which is $2.60 (Verified 2026-10-16). The search that built the list cost nothing.

Give this to your agent

$Set up https://monid.ai/SKILL.md, and then use Monid to for each company domain in my list, use apollo people search to find the heads of sales, keep the people with has_email true, match each one by id with apollo people match, and give me a table with name, title, email, email_status and match_confidence.

For the other direction, an address in and a person out, see the reverse email lookup guide.

Can you build an Apollo email finder yourself?

Yes, in two shapes, and both carry upkeep.

Drive the Apollo UI or extension. Fine for a handful of people a day by hand. It does not scale to a list, and automating a logged-in browser session is brittle: the page changes, sessions expire, and your account carries the risk.

Call the Apollo API directly with Python. This is a cleaner route than scraping. You open an Apollo account, create a key, and handle the paging, the retries and the credit accounting. The phone reveal is asynchronous, so you also write polling. It works, and for a team that already lives in Apollo it is a reasonable choice.

Through Monid you skip the account and the key handling: the people search and the match are two typed endpoints behind the one key you already hold, billed per call, and the polling is a run id you read back. A people match is $0.026 (Verified 2026-10-16). If your question is about exporting leads from the Apollo screen rather than an email lookup, Apollo extension or API compares the two routes.

What does the Apollo email finder return, and what can you build with it?

A person record with an email and a status, a company record, and flags about how far to trust the email. The Collison match above returned 35 person fields.

The person layer

FieldWhat it held on 2026-10-16
emailpatrick@stripe.com
email_statusverified
match_confidencehigh
email_domain_catchalltrue, with email_domain_catchall_verdict allow
title, headlineCo-Founder & Chief Executive Officer, Stripe CEO
seniority, departmentsfounder, ["c_suite"]
linkedin_url, city, state, country, time_zoneprofile link, San Francisco, California, United States, America/Los_Angeles
employment_history3 entries, each with title, organization, dates and a current flag

extrapolated_email_confidence came back null, because the address was not guessed.

The company layer

The organization object held primary_domain, estimated_num_employees (9400), founded_year (2010), industry, annual_revenue_printed ("6.9B"), funding fields, a phone number and a technology_names list of 475 entries.

What to build

  • A prospect list with emails. Search by title and domain, match the ones with has_email, store the email, the status and the date. Pair it with a B2B prospecting tool built on APIs.
  • A cleaned CRM. Match existing contacts by email or linkedin_url and refresh titles and employers.
  • A second-source check. Run the same people through Hunter.io and keep rows where the two agree.

What goes wrong when you look up emails at scale?

Three things, all of which showed up in one call or in the endpoint's notes.

verified on a catchall domain is a weak signal

The Stripe record returned email_status: "verified" and email_domain_catchall: true together. A catchall domain accepts mail for any address, so a deliverability check passes on real and invented mailboxes alike. Read email_status together with email_domain_catchall, and when the flag is true, run a separate verification step before you send. Best email verification API compares the verifiers.

The first response may be RUNNING

Our match returned status: "RUNNING" first and COMPLETED about 1.2 seconds later, with no phone flag set. Code that reads the output of the first response will read nothing. Poll the run id until the status is COMPLETED, and with reveal_phone_number set expect the run to stay RUNNING for several minutes, because Apollo produces numbers asynchronously.

The response is large

The saved match response was about 66,000 characters, most of it the company's 475 technology names and keywords. If you hand the raw result to an agent, it fills the context. Pick the fields you need (email, email_status, match_confidence, title) in code and drop the rest.

Billing has two edges

The endpoint's notes say a no-match consumes nothing, and that the base is billed when Apollo can attach the name to a known company, even with no email. The phone tier adds a charge only when a number is actually found; the flag alone never bills. Budget a list by matches, not by emails received.

Which endpoint should I use for which job?

EndpointWhat it doesInputBillingPrice (Verified 2026-10-16)
apollo/mixed_people/api_searchFind people by title, seniority, location, employer; no emails in the rowsFiltersFreeFree
apollo/people/matchOne person to email, title and companyAny identifier mix, or idTiered per call$0.026
hunterio/email-finderMost likely address for a name at a domaindomain, first_name, last_namePer address found$0.0245
hunterio/combined/findPerson and company from an addressemailPer call, a 404 is free$0.0049

Prices Verified 2026-10-16 with monid inspect, and current figures are on monid.ai/tools. Use search to build the list, match to get the email, and the Hunter.io finder when Apollo has no email for someone you named. How Hunter.io domain search differs from its finder is covered in the Hunter.io API guide. We ran the first two rows and inspected the Hunter.io rows.

When is another route a better fit?

You already have the email and want the person. That is a reverse lookup, and people/match with the email input or Hunter.io's combined/find does it more directly than a name-and-domain match.

The domain is catchall and the send matters. A verified status cannot prove a mailbox belongs to the named person on a catchall domain. Verify separately, or prefer an address a second provider observed on a public page.

You want the mobile number by default. The phone tier is the larger charge at eight extra credits when a number is found, and most outreach does not call anyone. Leave reveal_phone_number off unless a workflow dials.

You want Apollo's platform. Sequences, a dialer, an extension and team seats are a product the API does not replace. If the question is plan pricing rather than per-call access, that is a plan-versus-metered decision outside this guide.

And the disclosure: we resell these endpoints.

Conclusion

The quickest way to find a work email with Apollo from an agent is a free people search followed by one people match through Monid: $0.026 per match (Verified 2026-10-16), one key for Apollo and every other tool, about a minute to set up and ready inside your agent whenever you need it. Wiring Apollo up yourself works, and costs hours of account setup, paging and polling.

Two things matter more than the choice. Read email_status together with email_domain_catchall, because a verified address on a catchall domain is a first pass, not a guarantee. And poll until COMPLETED before you read a result, since the first response can be RUNNING.

How we estimated the time saved: building and maintaining your own Apollo lookup (account, key, paging, retries, async polling) is roughly 10 to 20 hours, and adding a second email source to cross-check it is another 10 to 20. That is 20 to 40 hours. The 1 minute is the install, key and first call once you already have a Monid key.

Free next step: run monid inspect -p apollo -e /people/match, run the free people search for one domain, and match one person whose email you already know. Start at monid.ai.

FAQ

Is the Apollo email finder free?

Searching for people is free through Monid, and looking up the email is $0.026 per match (Verified 2026-10-16), with no monthly plan and no minimum top-up. Discovery and inspection cost nothing.

What are the alternatives to the Apollo email finder?

Hunter.io is the closest on the same key: its finder returns the most likely address for a name at a domain for $0.0245 per address found (Verified 2026-10-16). People Data Labs is another source for the same job. Which one covers your people best is something you learn by running the same fifty names through two and counting.

How do you get personal emails and phone numbers from Apollo?

Two optional flags on the same call. reveal_personal_emails adds personal addresses and costs one extra credit. reveal_phone_number asks for a mobile number, costs eight extra credits only when a number is found, and runs asynchronously, so the run stays RUNNING for several minutes. Both default to off.

Why was I billed for a match that returned no email?

Because the endpoint bills the base credit when Apollo can attach the name you gave to a known company, even with no email or title. A true no-match, where Apollo cannot place the person at all, consumes nothing. Budget a list by matches rather than by emails received.

Published September 2026.

apollo email finderapollo apiapollo.io apipeople matchfind work email