Contact details are three lookups, not one
Recruiters ask for them by name: personal email, work email, mobile. They are right to, because each is a separate lookup with its own providers, its own rate and its own odds of a hit. Buy all three on every row and you pay for mobiles you never dial and for work addresses you should not use on a candidate.
You have already done the hard part. The names are in a job board export, last year's shortlist or a delegate sheet. This play does not source or score anyone. It asks which channel you need and for whom, fills those columns, and tells you what it will cost before it runs.
What you get back
A copy of your file, same rows, same order, with the columns you asked for added. Next to each value: the provider it came from, whether it was verified, and what that row cost. Your original file is not edited.
Rows that came back empty say why. No usable identifier, nothing found, or skipped because you already held the detail are three different answers, and only one of them means the person is hard to reach.
Nothing is sent, and nothing is loaded into a sequencer or a CRM.
Variations worth knowing
Mobiles only. If the list already has emails and you want to dial, say so. The mobile lookup runs on its own, on the rows you name. It is the dearest of the three, so give it your top twenty, not the sheet.
A second pass on work emails. On a client list, rows the main chain missed can go through BetterContact, which checks several sources in one job. You approve it separately, and it returns work addresses only, so it is never run on candidates.
Only verify. If the file already has addresses of unknown age, skip the search and run the deliverability check alone.
Send it somewhere next. The same session can stage an outreach sequence or fill the gaps in your CRM, each with its own approval.
Where this goes wrong
Thin identifiers. A first name and an employer spelled three ways is not a match. Those rows are marked as unmatchable, not guessed at, because a wrong mobile is worse than an empty cell.
A mixed list. Candidates and hiring managers in one sheet need different channels. Split the file, or add a column that says which is which.
Old employers. A work address is checked against the company on the row. If the person left that company three years ago, good hits get rejected. Refresh the employer first with clean and refresh your database.
A spending cap mid-run. If your workspace reaches its cap, the remaining rows are marked as not attempted, which is different from not found. Run it again later: rows already paid for are kept.