| Endpoint essentials | |
|---|---|
| API key access | api/v1/contacts/find_potential_duplicate or Master API key |
| OAuth scopes | contacts_deduplicate |
| Credit usage | 0 creditsLearn more about API pricing and credits. |
Contacts are people saved in Apollo.
Use the find a potential duplicate contact endpoint to check whether a contact in your team's Apollo workspace has a likely duplicate. Pass one contact ID in the path. To find contact IDs, call the search for contacts endpoint.
This endpoint only reads data. It doesn't change, merge, or delete either contact.
What the response contains
- A match:
contactsholds exactly two objects. The first is the contact you sent, reduced to itsidand theduplicate_contact_id. The second is the suggested duplicate's contact record. It has the contact fields of view a contact, but not the nestedaccountoremployment_history. To get those, call view a contact withduplicate_contact_id. - No match: the body is an empty object,
{}. - An unusable ID:
404when the ID doesn't belong to a contact in your workspace or the contact has been deleted, and422when the ID isn't a valid Apollo ID.
How Apollo picks the match
Apollo compares the contact you send with the other contacts in your workspace. It checks these signals in order and returns the first contact that matches:
- Apollo person: both contacts are linked to the same person in Apollo's database.
- Email: the email of the contact you sent is the other contact's verified primary email or one of its additional emails. If the contact you sent is linked to an Apollo person, contacts linked to a different person are skipped.
- Salesforce ID: the same Salesforce contact ID or lead ID, including IDs the other contact kept from an earlier merge.
- LinkedIn profile: the same LinkedIn profile.
- Name and company: the same first and last name at the same company. Apollo matches the company on Apollo organization, then company name, then company domain. Free email domains such as gmail.com don't count as a company domain.
Apollo never returns deleted contacts, or contacts that exist only from an email import.
One match per request
Each request checks one contact and returns at most one duplicate, so checking 500 contacts takes 500 requests. When a contact has several copies, every call returns the same match until that copy is merged or deleted. To find every copy:
- Call this endpoint for the contact.
- If the two contacts are different people, don't merge. This endpoint keeps returning that contact, so move on to the next contact.
- In Apollo, merge the returned duplicate into the contact you keep.
- Call this endpoint again for the surviving contact.
- Repeat until the response is
{}.
Review the pair before you mergeA match is a suggestion, not a verdict: a name-and-company match can be a different person with the same name. Merging permanently deletes the duplicate and can't be undone, so compare both contacts first.