The People Contact Lookup API answers the question “who does this email/phone/name belong to?” Hand it an identifier, get back aDocumentation Index
Fetch the complete documentation index at: https://docs.pubrio.com/llms.txt
Use this file to discover all available pages before exploring further.
people_search_id and the matched person’s profile — without having to run a search first.
When to use Contact Lookup
Use Contact Lookup when you have an identifier and want to find the person:- An email landed in your inbox — who sent it, what company, what title?
- A phone number rang on your sales line — match it to a known contact
- A CSV of leads with names and companies but no Pubrio IDs — resolve them all to
people_search_ids - Form submission with
email + name— enrich into a full contact record
people_search_id (or LinkedIn URL) and want the email + phone for that person, use People Redeem — it’s the forward direction.
Two flavors
| Endpoint | Use when |
|---|---|
POST /redeem/people/contact/lookup | Single lookup — one identifier per request. |
POST /redeem/people/contact/lookup/batch | Batch lookup — up to your subscription’s bulk size limit per request, processed in parallel. |
match metadata per record (see Match metadata below).
Quick start
Lookup modes
You can match a person in two ways:Exact match — by email or phone
The default. Passemail or phone; Pubrio matches on the normalized contact value. This always returns match.confidence: "exact" when it hits.
Similarity match — by name + domain or company
If you don’t have a deterministic identifier, you can fall back to similarity matching. Passfirst_name, last_name, plus either domain or company, and set is_enable_similarity_search: true.
domain is omitted, the company match). Returned matches carry match.confidence: "similarity_domain" or "similarity_company" so you can filter by certainty.
You can combine both: pass an email and a name + domain. The exact email match wins; the name fields become a fallback only if the email doesn’t resolve.
Match metadata
Every returned record includes amatch object describing how the hit was made:
| Field | Values | Meaning |
|---|---|---|
match.confidence | exact | Direct email/phone match. Highest confidence. |
similarity_domain | Name-based match anchored to a known company domain. | |
similarity_company | Name-based match anchored to a company name (no domain). | |
match.input | { value, type } | Echoes the identifier that produced the hit, so you can show “matched on [email protected]” in your UI. |
match.is_duplicate_input | boolean | true when the same identifier appeared earlier in a batch — the lookup is performed only once and the duplicate isn’t charged. |
match.confidence to gate downstream actions: e.g., auto-enroll only exact matches into a sequence; route similarity_* matches to manual review.
Batch lookup
Submit up to your subscription’s bulk size limit in one request. Each entry takes the same identifiers as the single-lookup body.Credit cost
1 credit per billable match. Specifically:- A successful match (exact or similarity) → 1 credit
- No match → 0 credits
- Duplicate input within a batch → 0 credits (resolved once, charged once)
people_search_id.
Common patterns
Inbound email enrichment
On every inbound email, look up the sender. Surface their company, title, and
people_search_id in your CRM or helpdesk view.CSV-to-CRM resolution
Resolve a CSV of
name + company rows to canonical people_search_ids. Ones that don’t match exact get a similarity attempt automatically.Form submission enrichment
Hand off
{ email } from your marketing form. Get back the company, title, and a Pubrio ID you can route through scoring rules.Lookup → redeem pipeline
Two-step flow: cheap lookup (1 credit) to identify the person, then full redeem (5–10 credits) only for matches above a confidence threshold.
FAQ
Does Contact Lookup return verified email and phone?
Does Contact Lookup return verified email and phone?
No — Contact Lookup returns the person’s profile (
people_search_id, name, company, domain, title, etc.) plus match metadata. To get the verified contacts themselves, pass the returned people_search_id to Redeem.What's the difference between similarity_domain and similarity_company?
What's the difference between similarity_domain and similarity_company?
similarity_domain means we anchored the name match to a known company domain — strongest of the similarity tiers. similarity_company means we anchored to a company name with no canonical domain — slightly less reliable, since multiple unrelated companies can share a name.Will I be charged for unmatched inputs?
Will I be charged for unmatched inputs?
No. Unmatched inputs are silently dropped from the response and not billed.
What if I send the same email twice in a batch?
What if I send the same email twice in a batch?
The duplicate is detected server-side, the lookup runs once, and you’re charged once. The duplicate entry is flagged with
match.is_duplicate_input: true in the response.What's the batch size limit?
What's the batch size limit?
The cap is set on your subscription as
people_contact_enrichment_bulk_size. Most plans allow 100+ per call; reach out if you need a higher ceiling.Can I look up by LinkedIn URL?
Can I look up by LinkedIn URL?
Not on Contact Lookup. Use Redeem with
linkedin_url if you have a LinkedIn profile and want both the resolution and the contacts in one call.What happens with international phone numbers?
What happens with international phone numbers?
Phone is matched on a normalized form. International (E.164) is the most reliable input. Domestic-format numbers may match if the country can be inferred, but E.164 (
+15551234567) avoids ambiguity.Related
People Redeem
Forward direction: spend credits to unlock email + phone for a known
people_search_id or LinkedIn URL.People Search
Find people who match a job/company/location filter.
People Lookup
Resolve a single person’s full profile from a known identifier.
Pricing
Credit costs across all endpoints, by plan tier.

