I Turned a List of Cold Emails into Real People
How I enrich a raw list of email addresses into full profiles with People Data Labs on Monid, paying per call from one wallet instead of a seat license.

Copy this line to your agent to enrich a person from just their email.
set up https://monid.ai/SKILL.md and use People Data Labs to enrich a person from an email address
You can turn a bare email address into a real person in one API call, and pay only for the calls you make. I hand an email to a pay-per-call enrichment endpoint, get back a name, a job title, a company, a LinkedIn URL, and a confidence score, and I pay nothing in the weeks I run nothing. That is the whole trick. Here is how I got there, and the two endpoints that do the work.
TL;DR
- I collect email addresses faster than I collect context: signups, replies with no signature, a webinar export, a scraped list. An address alone tells me almost nothing.
- On Monid I call People Data Labs
/v5/person/enrichwith just an email and get back a full person record, priced per call in the cents range (current pricing at monid.ai/tools). - The same endpoint also accepts a phone, a name plus company, a LinkedIn URL, an email hash, or a PDL id, so I use whatever identifier I happen to hold.
- When I do not have an identifier at all, only a description of who I want, I switch to
/v5/person/searchand query the dataset directly. - One API key, one wallet, no per-seat contract and no sales call.
Why an email address is basically nothing
An email address is an identifier, not a person. j.torres@northwind.io could be a VP or an intern, in Denver or Lisbon, someone I should reply to in five minutes or someone I can safely ignore. Before I answer a cold inbound or sort a signup list, I want the answer to a few boring questions: who is this, what do they do, where do they work, and how senior are they.
For years my answer was manual. Copy the address, guess the name from the local part, search LinkedIn, open three tabs, cross-check the company. Two minutes per person if the name is unusual, much longer if it is a John Smith. Multiply that by a list of two hundred and the afternoon is gone. Tools like Clearbit connect or a Chrome sidebar sped it up, but they wanted a seat, a login, and a monthly commitment for something my usage treats as bursty. I enrich a few hundred people before a push, then nothing for weeks.
What I do now instead
Monid is a pay-per-call data API marketplace: one key and one wallet reach hundreds of external data endpoints across people and company enrichment, scraping, social data, and search, with the price shown before anything runs. Searching the catalog and reading a schema is free. Only executing a call bills the wallet.
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 details in the agent quickstart.
For humans
npm install -g @monid-ai/cli
monid keys add --label main --key <your-api-key>
More details in the CLI quickstart.
One email in, a whole person out
The endpoint I lean on is People Data Labs' person enrichment. A free schema check shows exactly what it takes and returns:
monid inspect -p pdl -e /v5/person/enrich
# -> input schema, docs, and the per-call price (free)
The thing that surprised me is how many ways in there are. You do not need the email. The schema accepts email, phone, name (or first_name plus last_name), company, school, profile for a LinkedIn URL, lid, email_hash, and pdl_id, plus location fields like locality, region, and country to disambiguate a common name. Pass whatever you have. More identifiers means a tighter match.
monid run -p pdl -e /v5/person/enrich \
-i '{"email": "j.torres@northwind.io", "min_likelihood": 6}' -w
# -> one person record with a likelihood score attached
What comes back is a one-to-one match against roughly three billion profiles: full name and title, current company and role, employment history, education, skills, social profiles including LinkedIn, location, and available contact fields. Every match carries a likelihood score from 1 to 10, and the input takes a min_likelihood floor (default 2, which is loose). For anything that will touch a real reply or a CRM I set it to 6, because greeting the wrong Torres by name is worse than not greeting them at all. The full field list is in the PDL person enrichment docs.

The fields I actually use are the plain ones. Title plus seniority decides which template a lead gets. Company routes it to the right owner. Location sets the timezone I reply in. And the likelihood score is the quiet hero: it lets me automate the confident matches and hand-check only the uncertain ones, instead of trusting or distrusting the whole batch.
One small privacy nicety: if you would rather not send raw addresses, the endpoint accepts an email_hash instead of email, so you can match on a hashed identifier. Handy when the raw list is sensitive.
When I do not even have the email
Sometimes I do not have an identifier at all. I know the shape of the person I want, not their address: heads of data engineering at Series B fintechs in Berlin, say. Enrichment is the wrong tool for that, because it matches one known record. For discovery there is a second endpoint, /v5/person/search, and it works differently in two ways that matter.
First, instead of identifiers it takes a query, an Elasticsearch object built from any field in the person schema (job title, company, location, skills, education). You can also pass raw sql. Second, and this is the part to watch, it bills per record returned, not per call, so the size parameter (up to 100) is also your cost dial.
monid run -p pdl -e /v5/person/search \
-i '{"query": {"bool": {"must": [
{"term": {"job_title_role": "engineering"}},
{"term": {"location_country": "germany"}}
]}}, "size": 10}' -w
# -> up to `size` matching people; paginate with scroll_token
So the mental model is simple. Enrich when I hold an identifier and want the person behind it, billed once per lookup. Search when I hold a description and want candidates, billed per person I pull back. The PDL person search docs cover the query fields and the scroll_token you use to page.

What a batch actually costs me
Person enrichment prices per call in the cents range, and search prices per record, both shown by monid inspect before you run and listed at monid.ai/tools. In practice, enriching a list of a couple hundred inbound emails lands in the low tens of dollars, and checking a handful of replies is pocket change. The number that changed my behavior is not the per-call price, it is the zero: in a month where I enrich nobody, I pay nothing, and there is no seat quietly renewing in the background.
Because Monid also ships as an MCP server, my agent runs the same play on its own. Handed a spreadsheet of addresses, it enriches each one, keeps the high-likelihood matches, flags the rest for me, and never touches the more expensive search endpoint unless a row has no identifier to work with. Free discovery plus visible prices is what makes handing it the wallet feel safe.
FAQ
Do I need a People Data Labs account? No. You integrate Monid once and fund one pay-as-you-go wallet. PDL is called through the same key, and the wallet bills at the price shown before the run.
What if an email does not match anyone?
You get no match rather than a wrong one, and min_likelihood lets you set the bar up front. Start around 6 for anything customer-facing and inspect matches below that before trusting them.
When should I use search instead of enrich?
Use enrich when you already hold an identifier for a specific person (email, phone, LinkedIn URL). Use search when you only have a description and want to find people who fit it. Search bills per record, so keep size small while you tune the query.
Is enriching people on strangers allowed?
Treat person data with care and within the law that applies to you. Enrich people you have a legitimate reason to contact, respect opt-outs, and lean on the likelihood score so you are acting on confident data, not guesses.
If your list looks like mine did
Take the last list of email addresses you were too busy to research. Inspect /v5/person/enrich, run ten of them pay-per-call, and see how many turn into real people you actually recognize. That test costs pocket change through monid.ai.