REST API for official company data in Spain, France, the United Kingdom, Ireland, Poland and Norway. Base URL: https://api.prometiam.com/functions/v1/risk-api
Every request needs a bearer API key: Authorization: Bearer rk_live_.... Keys are created at https://www.prometiam.com/signup (free tier: 1,000 calls a month, no credit card). Most read endpoints accept ?country=ES|FR|GB|IE|PL|NO; the default is ES.
GET /search — Search insolvency / risk noticesGET /records/{id} — Get insolvency notice by IDGET /companies/search — Search companiesGET /companies/{id} — Get company by IDPOST /companies/lookup — Resolve up to 100 companies in one callPOST /sanctions/screen — Screen up to 50 names in one callPOST /insolvency/check — Check up to 100 counterparties for insolvency noticesGET /people/search — Search people by nameGET /people/{id} — Get person by IDGET /notices/{id} — Get registry gazette noticeGET /company-events/search — Search corporate eventsGET /company-events/records/{id} — Get corporate event by IDGET /company-events/timeline — Corporate event timelineGET /sanctions/screen — Screen a name against sanctions lists (BETA)GET /sanctions/entity/{id} — Get sanctions entity detailGET /directors/network — Director network graphGET /coverage — Dataset coverage statisticsGET /account — Account info and usageGET /vat/{vatNumber} — Validate an EU VAT number (VIES)GET /lei/{lei} — Look up a Legal Entity Identifier (GLEIF)GET /lei/{lei}/relationships — GLEIF Level 2 ownership (who owns whom)GET /lei/search — Search the GLEIF LEI register by nameGET /monitor — List monitored companiesPOST /monitor — Subscribe a company to monitoringGET /monitor/{id} — Get a monitor + alert historyDELETE /monitor/{id} — Stop monitoring a companyErrors return a JSON body of the shape {"error":{"code":"...","message":"...","status":N}}. 401 means a missing, malformed or revoked key; 403 means the key lacks the scope for that endpoint; 429 means a rate or quota limit was hit. Rate limits by plan are 10, 60, 300 and 600 requests per minute. Monthly quotas count successful requests only.
Machine-readable specification: https://www.prometiam.com/openapi.json — Postman collection: https://www.prometiam.com/prometiam.postman_collection.json (30 requests covering every endpoint; set the api_key variable and send) — run it without downloading: https://app.getpostman.com/run-collection/56913391-c22df6ad-ad87-43cf-b3a3-0bddb12bebf7
| Parameter | Type | Required | Description |
|---|---|---|---|
| country | string | yes | One of FR, DE, GB, AT, CH, NO, FI, US, NL |
| name | string | no | Company name (fuzzy match) |
| company_number | string | no | Registry number as printed on the notice, exact match (SIREN for FR, Companies House number for GB, org number for NO). Pair with country |
| limit | integer | no | 1–100, default 20 |
| cursor | string | no | Pagination cursor from the previous response |
| Parameter | Type | Required | Description |
|---|---|---|---|
| country | string | no | ES (default) or FR |
| model | string | no | competition (default) or counterparty — the score that orders the list |
| min_score | integer | no | 1–10, keep buyers at or above this score |
| name | string | no | Buyer name, matched anywhere (min 3 characters) |
| region | string | no | Region name, matched anywhere |
| limit | integer | no | 1–100, default 20 |
| cursor | string | no | Keyset cursor from pagination.next_cursor (score_id) |
| Value | Adds |
|---|---|
| risk_flags | Risk flags on the company. registry_compliance (ES, GB, IE, NO): the register's own signal that the company has stopped meeting its filing duties, with signal (sheet_closed, strike_off_proposed, accounts_overdue, strike_off_listed, forced_dissolution) and as_of — a compliance signal, not an insolvency or a dissolution. tax_debt (Spain): AEAT large tax-debtor entries, with amount_eur, severity, reference_date, published_date and a link to the official source |
| insolvency | Insolvency proceedings linked to the company |
| procurement | Top public-procurement awards |
| lei | Matching GLEIF LEI record |
| all | Every optional block above |
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | yes | Person name (normalised pattern match). Minimum 2 characters |
| country | string | no | ES (default), FR, GB, or NO. IE/PL are company-level and return no people |
| limit | integer | no | 1–100, default 20 |
| cursor | string | no | Pagination cursor from previous response |
| Parameter | Type | Required | Description |
|---|---|---|---|
| company_name | string | one of two | Company name (normalised pattern match) |
| company_number | string | one of two | Registry registration number (exact match) |
| event_type | string | no | dissolution, director_change, capital_change, new_incorporation, name_change, address_change, liquidation, merger, demerger, status_change, insolvency |
| date_from | string | no | Event date range start (YYYY-MM-DD) |
| date_to | string | no | Event date range end (YYYY-MM-DD) |
| limit | integer | no | 1–100, default 20 |
| cursor | string | no | Pagination cursor from previous response |
| Parameter | Type | Required | Description |
|---|---|---|---|
| company_number | string | one of two | Registry registration number (exact match, recommended) |
| company_name | string | one of two | Company name (normalised pattern match) |
| limit | integer | no | 1–200, default 50 |
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | yes | Name to screen (person, company, or vessel) |
| threshold | integer | no | Minimum match score 30–100, default 80. Lower it (50–60) to catch typos and spelling variants |
| list | string | no | Comma-separated list filter: EU, OFAC, UN, OFSI, FR_GELS |
| entity_type | string | no | person, company, or vessel |
| dob | date | no | Disambiguator (YYYY-MM-DD). Excludes entities with a different known date of birth; entities with unknown DOB are never excluded |
| country | string | no | Disambiguator. Matches against listed country/nationality; entities with unknown country are never excluded |
| active_only | boolean | no | Default true. Set false to include delisted entities |
| include_pep | boolean | no | Set true to also screen against politically exposed persons. Results come back in a separate pep block so they never mix with sanctions hits — see the note below |
| pep_min_tier | string | no | national, regional or local — only return PEP hits at or above that tier. Omit it and you get every hit, including people with no recorded office |
| group | string | no | Set entity to fold hits into one row per listed person or company, with a sources array carrying each listing (OFSI, OFAC, EU, UN…) and a lists summary. The default keeps one row per listing; meta.distinct_entities is reported either way |
| limit | integer | no | 1–100, default 20 |
| Parameter | Type | Required | Description |
|---|---|---|---|
| since | date | no | YYYY-MM-DD or ISO timestamp, default 30 days ago |
| list | string | no | Comma-separated list filter |
| change_type | string | no | listed, delisted, relisted, or renamed |
| limit | integer | no | 1–500, default 100 |
| Parameter | Type | Required | Description |
|---|---|---|---|
| vatNumber | string | yes | Full VAT number including the 2-letter country prefix, e.g. IE6388047V or DE811569869. Spaces and punctuation are ignored. |
| Status | Code | Description |
|---|---|---|
| 400 | validation_error | Missing or invalid parameters (e.g. no search term, invalid country) |
| 401 | unauthorized | Missing, invalid, or expired API key |
| 403 | forbidden | Key has no access to the requested country |
| 403 | upgrade_required | The scope is not in your plan, or your free trial allowance for it is used up. The body names the plan that includes it (included_in), its price, upgrade_url and, when relevant, trial_allowance. Free keys get 25 calls a month on each of sanctions screening, people search and company events; allowed calls carry meta.trial_allowance with used, limit and resets_on |
| 404 | not_found | Record or endpoint not found |
| 429 | rate_limit_exceeded | Per-minute or daily limit exceeded — check Retry-After header (seconds) |
| 429 | quota_exceeded | Monthly quota exhausted (incl. 10% paid-tier grace) — resets at month start; upgrade or contact support |
| 409 | idempotency_key_in_progress | A request with this Idempotency-Key (batch endpoints only) is still running — see Retry-After |
| 422 | idempotency_key_reuse | This Idempotency-Key was already used with a different request body — use a new key |
| 500 | internal_error | Server error — safe to retry with exponential backoff |
| Tier | Requests/month | Requests/min | Requests/day (fair use) | Watchlists | Price |
|---|---|---|---|---|---|
| Free | 1,000 | 10 | 200 | — | EUR 0/mo |
| Starter | 10,000 | 60 | 2,000 | 10 | EUR 9.99/mo |
| Professional | 100,000 | 300 | 20,000 | 100 | EUR 29.99/mo |
| Scale | 1,000,000 | 600 | 200,000 | 1,000 | EUR 99/mo |
| Enterprise | Custom | Custom | Custom | Custom | Contact sales |