Skip to main content
POST
Enrich v1

Quick Answer

How do I enrich a user/person/contact? Use this endpoint to get comprehensive data about a person including demographics, work history, education, addresses, contact information, and more.Common questions this endpoint answers:
  • How do I enrich a user?
  • How do I get more information about a person?
  • How do I find contact details for someone?
  • How do I get demographic data about a person?
  • How do I look up someone’s professional background?
  • How do I get email addresses and phone numbers for a contact?
  • How can I append data to my customer records?
What you need: Basic identifying information like name, email, or phone number.What you get back: Complete profile with work history, education, addresses, phone numbers, emails, demographics, financial estimates, and social profiles.Note: Consider upgrading to /v2/enrich for better performance and more features.

Overview

The Enrich endpoint combines resolution and data enrichment in a single call. It first resolves the person identity using fuzzy matching, then returns comprehensive profile data including demographics, work history, education, addresses, and contact information. Note: Consider upgrading to /v2/enrich for direct PID/LinkedIn lookups, selective field returns, and improved performance.

Request

Headers

string
required
Your API key for authentication
string
required
application/json

Request Body

object[]
required
An array of person records to enrich. Maximum 500 records per request.

Request Example

Response

Response Structure

string
Unique identifier for this API request
array
Array of enrichment results
string
ISO 8601 timestamp when the request was completed

Result Object - Demographics

string
Your identifier from the request
boolean
Whether a match was found
string
Minerva person identifier
string
Person’s full name
string
First name
string
Middle name
string
Last name
string
Name suffix
string
Gender (“M” for male, “F” for female, or null)
string
Date of birth (ISO 8601 format)
integer
Current age
string
Marital status (“M” for married, “S” for single, or null)
string
Household identifier
string
Spouse’s Minerva PID if available
integer
Number of children

Result Object - Financial

boolean
Whether the person is retired
string
Estimated income bracket
string
Estimated wealth bracket
string
Home ownership status (e.g., “Owner”, “Renter”, or null)

Result Object - Social & Professional

string
LinkedIn profile URL
string
Current title from LinkedIn
string
Industry from LinkedIn
boolean
Whether the person likely works remotely
string
Facebook profile URL
string
Twitter profile URL
boolean
Whether bankruptcy records exist
boolean
Whether judgment records exist

Result Object - Contact Information

array
Array of personal email addresses with ranking
array
Array of professional email addresses with ranking
array
Array of phone numbers with type and ranking

Result Object - Address History

array
Array of address records with property details

Result Object - Work Experience

array
Array of work history records

Result Object - Education

array
Array of education records

Result Object - Other Fields

number
Confidence score for the match, as an additive point total — not a 0-1 or 0-100 scale. Matches routinely score above 100. null when is_match is false. See Interpreting match_score.
object
Any validation errors from the input
Error responses include statusCode and body fields for backward compatibility with existing integrations. These are deprecated — prefer the HTTP status code and the top-level code / message / api_request_id fields directly. (The deprecated nested body still carries the legacy error_message.)

Error Responses

  • 400 - Bad Request: Missing required fields or malformed JSON
  • 401 - Unauthorized: Invalid or missing API key
  • 402 - Payment Required: Minerva credits exhausted. Response body includes records_remaining (estimated records remaining based on your credit balance) and records_requested (batch size that was rejected)
  • 413 - Payload Too Large: More than 500 records in request
  • 422 - Unprocessable Entity: Validation errors in record data (invalid field names, data types, or values)
  • 429 - Too Many Requests: Rate limit exceeded
  • 500 - Internal Server Error: Unexpected server error

Notes

  • Maximum 500 records per request (lower than /resolve due to data volume)
  • All list fields (emails, phones, addresses, work, education) return empty arrays [] if no data is available
  • Dates are returned in ISO 8601 format (YYYY-MM-DD)
  • Financial figures are in USD
  • Arrays are ordered by rank, with rank=1 being the most recent/relevant

Interpreting match_score

match_score is an additive point total, not a normalized 0-1 or 0-100 confidence. It is the sum of two components:
  • Name — up to 60 points, based on how closely the input name matches the person’s known names and aliases
  • Contact info — points for every input email and phone that matches the person, weighted by how strongly that email or phone is associated with them
Because the contact-info component grows with each additional match, there is no upper bound: a record matched on a name plus several emails and phones commonly scores 110-130. The example above scores 110.0.
Compare scores against each other, not against a fixed ceiling. Thresholding on a percentage (for example, “accept above 0.8” or “above 80%”) will not behave the way you expect.
Practical guidance:
  • Every record returned with is_match: true already cleared Minerva’s internal match threshold and scores at least 50. You don’t need your own floor unless you want to be stricter than Minerva.
  • match_score is null when is_match is false.
  • Scores are rounded to two decimal places.
  • Raising your own threshold trades recall for precision. If you need higher precision, prefer /v2/enrich with match_condition_fields, which filters on data availability rather than on an opaque score.