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 IDGET /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
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | one of six | Company name — normalised pattern match (accent-insensitive, legal suffix stripped) |
| vat | string | one of six | Spanish NIF/CIF (exact match, e.g. A28015865) |
| siren | string | one of six | French SIREN (9 digits, e.g. 552032534) — use with country=FR |
| siret | string | one of six | French SIRET (14 digits). The first 9 digits are treated as SIREN. |
| company_number | string | one of six | Registry registration number (exact match, e.g. M-15812) |
| event_type | string | no | insolvency, dissolution, liquidation, restructuring, status_change |
| date_from | string | no | Filing date range start (YYYY-MM-DD) |
| date_to | string | no | Filing date range end (YYYY-MM-DD) |
| limit | integer | no | 1–100, default 20 |
| cursor | string | no | Pagination cursor (numeric ID) from previous response |
| Parameter | Type | Required | Description |
|---|---|---|---|
| country | string | yes | One of FR, DE, GB, AT, CH, NO, FI, US |
| name | string | no | Company name (fuzzy match) |
| limit | integer | no | 1–100, default 20 |
| cursor | string | no | Pagination cursor from the previous response |
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | one of six | Company name (normalised pattern match) |
| nif | string | one of six | Spanish NIF/CIF (exact match) |
| siren | string | one of six | French SIREN (9 digits) — pair with country=FR |
| siret | string | one of six | French SIRET (14 digits) |
| founded_after | date | one of seven | YYYY-MM-DD — companies incorporated on/after this date. Works alone (no name needed): the newly-incorporated-companies feed |
| founded_before | date | no | YYYY-MM-DD — upper bound on incorporation date |
| cnae | string | one of seven | CNAE-2009 activity code or prefix (e.g. 62 = all of programming/IT, 6201 = computer programming). Combine with founded_after for an activity-scoped new-company feed |
| has_risk_flag | boolean | one of seven | Set to true to return only companies carrying a risk flag (currently Spanish AEAT large tax-debtor entries). Works alone — no name needed |
| risk_flag_type | string | no | Narrow the flag filter to a single type, e.g. tax_debt |
| objeto | string | one of seven | Keyword in the company's objeto social (statutory business purpose), e.g. software, biotech. Min 3 chars. Best signal for startup/sector scouting |
| sort / order | string | no | sort=founding_date with order=asc|desc (default desc) — applies in feed mode |
| limit | integer | no | 1–100, default 20 |
| cursor | string | no | Pagination cursor from previous response |
| Value | Adds |
|---|---|
| risk_flags | Risk flags on the company — currently Spanish 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 |
| prospect | Firmographics and role-mapped appointments |
| 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 |
| 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 lacks required scope or country access |
| 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 |
| 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 |