Skip to main content
GET
/
person-search
/
v0
/
search
/
{search_id}
curl --request GET \
  --url 'https://api.minerva.io/person-search/v0/search/550e8400-e29b-41d4-a716-446655440000' \
  --header 'x-api-key: <api-key>'
{
  "search_id": "550e8400-e29b-41d4-a716-446655440000",
  "query": "Software engineers in Denver with a professional email on file",
  "results": [
    "p-a1b2c3d4e5f6",
    "p-b2c3d4e5f6a7",
    "p-c3d4e5f6a7b8"
  ],
  "total_count": 1284,
  "result_count": 3,
  "total_contact_coverage": {
    "personal_email": { "count": 812, "percent": 63.24 },
    "professional_email": { "count": 1284, "percent": 100.0 },
    "phone": { "count": 497, "percent": 38.71 },
    "linkedin": { "count": 1110, "percent": 86.45 }
  },
  "results_contact_coverage": {
    "personal_email": { "count": 2, "percent": 66.67 },
    "professional_email": { "count": 3, "percent": 100.0 },
    "phone": { "count": 1, "percent": 33.33 },
    "linkedin": { "count": 3, "percent": 100.0 }
  },
  "created_at": "2026-04-24T15:02:11.482915+00:00"
}

Quick Answer

How do I re-fetch the results of a previous person search? Use this endpoint with the search_id you received from Person Search to get back the same search payload — PIDs, total count, and contact-channel coverage — without re-running the query.Common questions this endpoint answers:
  • How do I look up a saved person search?
  • How do I re-download results from a search I ran earlier?
  • How do I verify what query a given search_id corresponds to?
What you need: The UUID search_id returned from a previous POST /person-search/v0/search call.What you get back: The same PersonSearchResponse shape as the original search, including results, total_count, and both full-set and page-level contact coverage stats.

Overview

The Get Person Search endpoint returns the stored payload for a search you created earlier with Person Search. The response shape is identical to POST /person-search/v0/search, so you can use the same result-handling code for both endpoints. Only searches that belong to your organization can be accessed. Requests for search_id values from a different organization return 404.
curl --request GET \
  --url 'https://api.minerva.io/person-search/v0/search/550e8400-e29b-41d4-a716-446655440000' \
  --header 'x-api-key: <api-key>'

Request

Headers

x-api-key
string
required
Your API key for authentication.

Path Parameters

search_id
string
required
UUID of the search to retrieve. This is the search_id returned from POST /person-search/v0/search.

Request Notes

  • There is no request body and no query parameters.
  • The search must belong to the organization associated with your API key.

Response

Success Response

The endpoint returns the same payload shape as Person Search. See that page for the full field reference on total_contact_coverage and results_contact_coverage.
search_id
string
UUID identifying the search. Matches the search_id you requested.
query
string
The normalized natural-language query associated with this search.
results
string[]
Array of Minerva PIDs previously returned for this search. Each PID has the format p-{hash}.
total_count
integer
Total number of people matching the search at the time it was run.
result_count
integer
Number of PIDs in results.
total_contact_coverage
object
Availability of contact channels across the full match set of total_count people. See the Person Search page for the field-level shape.
results_contact_coverage
object
Availability of contact channels across the PIDs in results. Same shape as total_contact_coverage.
created_at
string
ISO 8601 timestamp (UTC) indicating when the search was originally created.
{
  "search_id": "550e8400-e29b-41d4-a716-446655440000",
  "query": "Software engineers in Denver with a professional email on file",
  "results": [
    "p-a1b2c3d4e5f6",
    "p-b2c3d4e5f6a7",
    "p-c3d4e5f6a7b8"
  ],
  "total_count": 1284,
  "result_count": 3,
  "total_contact_coverage": {
    "personal_email": { "count": 812, "percent": 63.24 },
    "professional_email": { "count": 1284, "percent": 100.0 },
    "phone": { "count": 497, "percent": 38.71 },
    "linkedin": { "count": 1110, "percent": 86.45 }
  },
  "results_contact_coverage": {
    "personal_email": { "count": 2, "percent": 66.67 },
    "professional_email": { "count": 3, "percent": 100.0 },
    "phone": { "count": 1, "percent": 33.33 },
    "linkedin": { "count": 3, "percent": 100.0 }
  },
  "created_at": "2026-04-24T15:02:11.482915+00:00"
}

Error Responses

Common Errors

  • 401 - Unauthorized: Invalid or missing API key
  • 404 - Not Found: No search with the provided search_id exists for your organization. This is also returned if the search belongs to a different organization.
  • 422 - Unprocessable Entity: search_id is not a valid UUID
  • 500 - Internal Server Error: Unexpected server error

Error Example

Search not found:
{
  "error": {
    "code": "not_found",
    "message": "Search not found."
  }
}

Implementation Notes

  • Immutable payload: The stored payload reflects the results at the time the search was originally run. Re-fetching does not re-execute the query, so it will not reflect any new matches that have entered the dataset since.
  • Organization scoping: A search is only accessible to the organization that created it. Cross-org access returns 404.
  • Retries: Safe to call repeatedly; the endpoint is idempotent.