---
title: "Search people by name"
method: GET
path: "/people/search"
tags: ["People"]
---

# Search people by name

`GET /people/search`

## Request

- Base URL: `https://api.prometiam.com/functions/v1/risk-api`
- URL: `https://api.prometiam.com/functions/v1/risk-api/people/search`
- Auth: HTTP bearer

Search officers, directors and PSCs by name across ES (BORME), FR (BODACC), GB (Companies House) and NO (Enhetsregisteret roles register). Returns a ranked list of person summaries; use /people/{id} for full detail. Requires the `people` scope (Starter tier and above). Ireland and Poland are company-level (no people data). Norwegian officers carry a year-month (YYYY-MM) date of birth only, and Norwegian person ids are returned raw rather than country-offset.

## Query parameters

- `country` 'ES' | 'FR' | 'GB' | 'IE' | 'PL' | 'NO' | 'FI' | 'SE' | 'HR' | 'BE' | 'DK' | 'EE' | 'SK' | 'CH' | 'LV' | 'CY' | 'RO' | 'LT' | 'CA' | 'AU' | 'JP' | 'IL' | 'BR' | 'CO' | 'SG' | 'TW' | 'CZ' | 'DE' | 'US'
- `name` string, required
- `limit` integer
- `cursor` string

## Response `200`

Matching people

- object
  - `data` Person[]
    - `id` integer
    - `match_score` integer, nullable: Relevance of a name match, 0-100, comparable across countries and name lengths. It is set by the kind of match, then placed within it by trigram similarity: 100 the name is the query; 80-99 the name starts with the query's words; 50-79 the name holds every word of the query; 0-49 only parts of words match. Name-search results are ranked best first by relevance (match type, then active before closed, group head and size), so the score is a reading of the match, not the sort key.
    - `full_name` string
    - `nif` string, nullable
    - `is_legal_entity` boolean
    - `first_seen_date` string, date, nullable
    - `last_seen_date` string, date, nullable
    - `appointments` Appointment[]
      - `id` integer
      - `person_id` integer
      - `company_id` integer, nullable
      - `company_name` string, nullable
      - `company_number` string, nullable
      - `full_name` string, nullable
      - `role` string, nullable
      - `appointment_date` string, date, nullable: Norway appointments carry no dates: the Brønnøysund roles file publishes current roles without appointment dates, so date fields are null for NO.
      - `end_date` string, date, nullable
      - `is_current` boolean: Boolean. Whether the officer is still in office: true when the appointment has no end date and no ending action (resignation, cessation), false otherwise. Appointments are returned for Spain, France, the United Kingdom and Norway only; false when the appointment has an end date (ceased_date) or its action records the end (ceased, resigned). One rule for every country; Norway's roles file carries no end dates, so a Norwegian role reads current until the register drops it.
    - `created_at` string, date-time
  - `pagination` object
    - `count` integer
    - `has_more` boolean
    - `next_cursor` string, nullable

## Other responses

- `400`: Validation error (name missing or shorter than 2 characters)
- `401`: Missing, invalid, or expired API key
- `403`: Key lacks the required scope or country access
- `429`: Rate limit exceeded — see `Retry-After` header for seconds until reset

---

[API](https://skmtc.dev/prometiam/apis/prometiam-risk-intelligence-api.md) · [All operations](https://skmtc.dev/prometiam/apis/prometiam-risk-intelligence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/prometiam/apis/prometiam-risk-intelligence-api/revisions/fb8b4de5b18d?raw)
