Skip to Content
Bulk Enrich Person API

Enrich up to 50 person records at once

This endpoint allows you to enrich multiple person’s in one request while staying blazing-fast.

How are credits spent?

Credit spending using this endpoints depends on the enrichment parameters you submit and the matches that are returned.

The credit system works in the same way as the unique Enrich Person endpoint, and it can be controlled in the same way (using only_verified_email, enrich_mobile, only_verified_mobile).

Please refer to this section of the Enrich Person endpoint to understand how credits are spent.

Endpoint

Parameters

The parameters are the same as the unique Enrich Person endpoint, except for the data parameter.

ParameterExample valueDescription
only_verified_email
optional
trueChose if you only want records with a verified email to be returned. Default is false.
enrich_mobile
optional
trueChose if you want to enrich the mobile (if it exists).
only_verified_mobile
optional
trueChose if you only want records with a mobile to be returned. Default is false. If true, enrich_mobile will automatically be true.
data
required
See belowThe records to enrich (up to 50 at once). See below for complete details.

Data parameter

The data parameter for the /bulk-enrich-person endpoint is a list of all the persons you wish to enrich.

The data parameter contains the datapoints you have for us to identify the record. We offer the following matching datapoints:

DatapointExample valueDescription
identifier
required
1234abcdA random alpha-numeric string generated on your side to identify the specific matching object. This will be used when you parse the response, to attributes which data object represents which match in the response.
first_name
optional
RogerThe first name of the person
last_name
optional
SterlingThe last name of the person
full_name
optional
Roger SterlingThe full name of the person
linkedin_url
optional
https://www.linkedin.com/in/roger-sterlingThe person’s LinkedIn URL
email
optional
roger.sterling@deloitte.comThe work email of the person
company_name
optional
DeloitteThe company name
company_website
optional
deloitte.comThe company website
company_linkedin_url
optional
https://linkedin.com/company/deloitteThe company’s LinkedIn URL
person_id
optional
6f745841665155f554e5fIf enriching from search: the ID of the person from the /search-person endpoint

Minimum requirements for matching

We require at a minimum the below datapoints together in one data object (allowing us to accurately identify the person):

  • first_name + last_name + any of (company_name/company_website/company_linkedin_url)
  • full_name + any of (company_name/company_website/company_linkedin_url)
  • linkedin_url
  • email
  • person_id (enrich from /search-person)

Important note #1: We advise strongly against using only the company_name for matching. Many company have the same name, and this can result in mismatch/inaccurate results. Whenever possible, try to use at least the company_website.

Important note #2: the more datapoints you submit, the better, so whenever possible, submit everything you have for greater accuracy. For example, it is better to submit company_website and company_linkedin_url together rather than just one of them.

Enrich records from our search API

Another way to enrich records is to use the person_id you get from the search results (/search-person) to this endpoint. This will identify the person and enrich as per your option (only_verified_email, only_verified_mobile, enrich_mobile).

Example request

Please refer to this section of the Enrich Person to understand how matching parameters works individually.

Whenever a parameter such as only_verified_email, it will apply to all of the object in the request.

We generated our own identifier (1,2,3,4,5,6,7) so that in case of a match, we can reconcile it with the response.

In the below request, the identifier 4 does not match the minimum matching requirements of a data object. Hence, this record will be ignored and provided in the invalid_datapoints list of the response.

We also enriched the identifier 7 by using its person_id we got from the /search-person endpoint.

POST "https://api.prospeo.io/bulk-enrich-person" X-KEY: "your_api_key" Content-Type: "application/json" { "only_verified_email": true, "enrich_mobile": true, "data": [ { "identifier": "1", "full_name": "Eva Kiegler", "company_website": "intercom.com" }, { "identifier": "2", "first_name": "Jonah", "last_name": "Stones", "linkedin_url": "https://www.linkedin.com/in/jonah-stones", "company_name": "Deloitte", "company_website": "deloitte.com", "company_linkedin_url": "https://www.linkedin.com/company/deloitte" }, { "identifier": "3", "linkedin_url": "https://www.linkedin.com/in/micah-sanders" }, { "identifier": "4", "full_name": "Brandon Stering" }, { "identifier": "5", "email": "nicolas.b@kpmg.com" }, { "identifier": "6", "full_name": "Nicole Wonda", "company_linkedin_url": "https://www.linkedin.com/company/young" }, { "identifier": "7", "person_id": "6f564548455488874f48e" }, ... up to 50 objects ] }

Response

The response structure is as follow:

{ "error": false, "total_cost": 10, "not_matched": ["2", "3"], "invalid_datapoints": ["4"], "matched": [ { "identifier": "1", "person": { ... }, "company": { ... } }, { "identifier": "5", "person": { ... }, "company": { ... } }, { "identifier": "6", "person": { ... }, "company": { ... } }, { "identifier": "7", "person": { ... }, "company": { ... } } ] }

Response details

PropertyTypeDescription
errorbooleanIndicates if an error has occurred. If false, the request was successful. If true, an error has occurred and a error_code property will be present. See below.
total_costintegerIndicates the total cost of the request. It varies depending on the matches and the enrich_mobile option. Refer to this section to understand how price is calculated.
matchedlistThis list contains all the matched records as per your requirements (only_verified_email, only_verified_mobile).
matched.identifierstringThis is the identifier you generated corresponding to the matched record. Use it to know which match is which.
matched.personobjectThe matched person. See our up-to-date person fields in details here.
matched.companyobjectThe current company of the matched person. See our up-to-date company fields in details here.
not_matchedlistThis list contains all the identifiers that we couldn’t match given your requirements (only_verified_email, only_verified_mobile).
invalid_datapointslistThis list contains all the identifiers that were not meeting our minimum requirements for matching. See this section., so matching wasn’t attempted.

Error codes

HTTP codeerror_code propertyMeaning
400INSUFFICIENT_CREDITSYou do not have enough credit to perform the request.
401INVALID_API_KEYInvalid API key, check your X-KEY header.
429RATE_LIMITEDYou hit the rate limit for your current plan.
400INVALID_REQUESTThe request your submitted is invalid.
400INTERNAL_ERRORAn error occurred on our side, please contact the support.

Rate limit

See our rate limits page.

Last updated on