REST API for official company data in Spain, France, the United Kingdom, Ireland, Poland, Norway, Finland, Sweden, Croatia, Belgium, Denmark, Estonia, Slovakia, Switzerland, Latvia, Cyprus, Romania, Lithuania, Canada, Australia, Japan, Israel, Brazil, Colombia, Singapore, Taiwan, the Czech Republic, Germany (LEI-registered entities and energy-market register companies), Argentina, Ukraine, Serbia, Ecuador, Chile, Mexico (LEI-registered entities and the INEGI DENUE directory), the Netherlands (LEI-registered entities with a KVK number) and the United States (the New York, Colorado, Connecticut, Pennsylvania, Florida, Iowa, the District of Columbia, Texas and Oregon registers, the Massachusetts public-record extract of the Corporations Division, SEC filers and LEI holders). Base URL: https://api.prometiam.com/functions/v1/risk-api
Topic guides: Quickstart · Authentication · Company search · Monitoring and webhooks · Rate limits, credits and errors · Identifiers by country · Testing and demo data
Recipes: French insolvency by SIREN · Spanish company by NIF with its BORME events · Daily events feed for a country · Companies that share a director · Monitor a supplier with a webhook · Verify a customer list in one batch · VAT number to company record · Screen a name against sanctions lists (beta)
Base URL: https://api.prometiam.com/functions/v1/risk-api. Header: Authorization: Bearer <key> (keys start rk_live_). To try it without signing up, use the public demo key rk_live_demo_publichn (shared, 30 calls a minute and 1,000 a day; company search, records, VAT, LEI, insolvency and coverage only). Your own key: the 14-day free trial at https://www.prometiam.com/signup (500 credits, card required, nothing charged for 14 days).
1. Search a company by name:
curl "https://api.prometiam.com/functions/v1/risk-api/companies/search?name=inditex&country=ES&limit=1" -H "Authorization: Bearer rk_live_demo_publichn"
2. The response (excerpt, recorded 24 Oct 2026): the payload is in data, lists add pagination and meta, and a company has the same keys in every country, null where the register publishes no value.
{
"data": [{
"id": 1741526, "match_score": 100, "country": "ES", "company_number": "A15075062",
"company_name": "INDUSTRIA DE DISEÑO TEXTIL, S.A",
"identifiers": [{ "type": "nif", "value": "A15075062" }, { "type": "vat", "value": "ESA15075062" }],
"vat_number": "ESA15075062", "lei": "549300TTCXZOGZM2EY83", "legal_form": "SA",
"status": "active", "founding_date": "1985-06-12", "city": "ARTEIXO"
}],
"pagination": { "count": 1, "has_more": true, "next_cursor": "o:1" },
"meta": { "search_mode": "name", "country": "ES" }
}
3. Look up by register number: GET /companies/search?country=XX&company_number=ID for any live country (the number as the register prints it), or GET /companies/by-identifier?type=vat&value=ESA15075062 with a VAT number or an LEI and no country (1 credit).
4. Costs: a successful call costs credits (1 for a company search or record, 2 for people, events, insolvency and procurement, 3 per name screened, 25 for one company's financial statements; account, coverage and monitoring management are free); errors cost nothing. The call's cost is in the X-Credits-Cost header.
5. Errors: 401 unauthorized (key missing, malformed or revoked), 403 upgrade_required (the call needs a plan that includes it; the body names the plan and the price), 429 rate_limit_exceeded (wait the Retry-After seconds).
From an AI assistant, with no key: npx -y prometiam-risk-mcp, or in Claude Desktop and Cursor {"mcpServers":{"prometiam-risk":{"command":"npx","args":["-y","prometiam-risk-mcp"]}}}. Hosted endpoint (no install): the same tools over Streamable HTTP at https://api.prometiam.com/functions/v1/mcp (your key in Authorization: Bearer rk_live_..., demo mode without one; each tool call is one API request, priced in credits; claude.ai and ChatGPT connectors: add https://api.prometiam.com/functions/v1/mcp/connect and sign in with your Prometiam account; a connection lasts 30 days). More at https://www.prometiam.com/mcp and https://www.prometiam.com/mcp.md; short index for assistants: https://www.prometiam.com/llms.txt.
Every request needs a bearer API key: Authorization: Bearer rk_live_.... Keys are created at https://www.prometiam.com/signup (free trial: 500 credits over 14 days, card required, nothing charged for 14 days). Most read endpoints accept ?country=ES|FR|GB|IE|PL|NO|FI|SE|HR|BE|DK|EE|SK|CH|LV|CY|RO|US|LT|CA|AU|JP|IL|BR|CO|SG|TW|CZ|DE|NL|IT|IN|AT|GR; the default is ES.
GET /companies/search — Search companies by name or identifierGET /companies/{id} — Get company by IDGET /companies/{country}/{company_number} — Get company by its register number (NIF, SIREN, CRN, KRS, CVR, ...)GET /companies/by-identifier — Find one company by VAT number, LEI or company number, the country worked out for youPOST /companies/lookup — Resolve up to 100 companies in one callGET /sanctions/screen — Screen a name against sanctions listsPOST /sanctions/screen — Screen up to 50 names in one callGET /sanctions/entity/{id} — Get sanctions entity detailGET /sanctions/watchlist — Your sanctions watchlists and recent hitsPOST /sanctions/watchlist — Add a name to your sanctions watchlistDELETE /sanctions/watchlist/{id} — Remove a watchlist entryGET /sanctions/changes — Sanctions list change feedGET /insolvency/search — Search cross-border corporate insolvency noticesPOST /insolvency/check — Check up to 100 counterparties for corporate insolvency noticesGET /people/search — Search people by nameGET /people/{id} — Get person by IDGET /directors/network — Director network graphGET /company-events/search — Search corporate events, or a country's event feedGET /company-events/timeline — Corporate event timelineGET /company-events/records/{id} — Get corporate event by IDGET /monitor — List monitored companiesPOST /monitor — Subscribe a company to monitoringGET /monitor/{id} — Get a monitor + alert historyDELETE /monitor/{id} — Stop monitoring a companyGET /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 /procurement/awards — List public-procurement awards (ES, FR, GB, IE, PL, NO)GET /procurement/buyer/{id} — Public-buyer risk profile (beta, ES + FR)GET /procurement/buyers — List scored public buyers by risk (beta, ES + FR)GET /procurement/relationship — Buyer-supplier relationship (beta, ES + FR)GET /search — Search Spanish registry risk noticesGET /records/{id} — Get a registry risk notice by IDGET /coverage — Dataset coverage statisticsGET /account — Account info and usageErrors 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, 120 and 300 requests per minute. Monthly quotas are credits: a successful call costs credits (1 for a company record, see the cost table in Rate limits & quotas), responses with an error cost nothing, and each response carries its cost in the X-Credits-Cost header.
Look up a Finnish company with GET /companies/search?company_number=0112038-9&country=FI (a Y-tunnus; the hyphen is optional and the check digit is verified) or vat=FI01120389. GET /companies/{id}?include=insolvency returns the linked insolvency notices. Company records from the Finnish Trade Register: legal name, legal form, status, registered address, activity code and dates; with register-change events and monitoring, but no officers and no registry-compliance signal. Corporate insolvency notices are linked by business ID.
Look up a Swedish company with GET /companies/search?company_number=556012-5790&country=SE (an organisationsnummer; the hyphen is optional and the check digit is verified) or vat=SE556012579001. Company records from the Swedish Companies Registration Office (Bolagsverket): legal name, legal form, status, registered address, activity code and dates; with register-change events and monitoring, but no officers and no registry-compliance signal (corporate insolvency notices are linked by organisationsnummer), and sole traders (enskild näringsverksamhet) are never served. Sweden is updated weekly. Contains data from Bolagsverket (the Swedish Companies Registration Office) and Statistics Sweden (SCB).
Look up a Croatian company with GET /companies/search?company_number=080000604&country=HR (an MBS; a dropped leading zero is restored and the check digit is advisory), oib=27759560625 (an OIB; the check digit is verified) or vat=HR27759560625 (HR plus the OIB). Company records from the Croatian court register (Sudski registar): legal name, legal form, status, registered address, activity code and dates; with register-change events and monitoring, but no officers and no registry-compliance signal (corporate insolvency notices are linked by MBS), and sole traders (trgovac pojedinac) are never served. Croatia is updated every working day. Izvor: Sudski registar, Ministarstvo pravosuđa, uprave i digitalne transformacije (Otvorena dozvola).
Look up a Belgian company with GET /companies/search?company_number=0417.497.106&country=BE (an enterprise number; the dots and spaces are optional and the check digits are verified) or vat=BE0417497106 (BE plus the ten digits). Company records from the Crossroads Bank for Enterprises (KBO/BCE): legal name, legal form, status, registered address, activity code and dates; with register-change events and monitoring, but no officers, no registry-compliance signal and no insolvency notices (a bankruptcy shows in the company status and in the register-change events), and enterprises of natural persons (eenmanszaak / entreprise individuelle) are never served. Belgium is updated every working day. Contains data from the Crossroads Bank for Enterprises (KBO/BCE), FPS Economy; see data_as_of for the date of the update.
Look up a Danish company with GET /companies/search?company_number=24256790&country=DK (a CVR number; spaces and hyphens are optional, the eight-digit format is validated and the mod-11 check is advisory, so a mismatch is not an error) or vat=DK24256790 (DK plus the eight digits). Company records from the Danish Central Business Register (CVR): legal name, legal form, status (including the register's bankruptcy state), registered address, activity code and dates; with register-change events and monitoring, but no officers, no registry-compliance signal and no share capital (corporate insolvency notices are linked by CVR number), and sole proprietorships (enkeltmandsvirksomhed) and estates are never served. Denmark is updated every working day. Contains data from Det Centrale Virksomhedsregister (CVR), CC BY 4.0. Contains CVR data (Erhvervsstyrelsen), CC BY 4.0
Machine-readable specification: https://www.prometiam.com/openapi.json — Postman collection: https://www.prometiam.com/prometiam.postman_collection.json (37 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
| Status | Code | Meaning |
|---|---|---|
| 401 | unauthorized | The key is missing, malformed or revoked. |
| 403 | upgrade_required | The call needs a plan that includes it; the body names the plan and the price. |
| 429 | rate_limit_exceeded | Per-minute or daily limit; wait the Retry-After seconds. |
| 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. Trial 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 (requests) or daily (credits) limit exceeded — check Retry-After header (seconds) |
| 429 | quota_exceeded | Monthly credits 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 | Credits/month | Requests/min | Credits/day (fair use) | Watchlists | Price |
|---|---|---|---|---|---|
| Free | 500 over the 14-day trial | 10 | 200 | — | EUR 0, 14-day trial |
| Starter | 1,000 | 60 | 1,000 | 10 | EUR 9.99/mo |
| Professional | 10,000 | 120 | 10,000 | 100 | EUR 29.99/mo |
| Scale | 50,000 | 300 | 50,000 | 1,000 | EUR 99.99/mo |
| Enterprise | Custom | Custom | Custom | Custom | Contact sales |
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer (path) | yes | Company id as returned by /companies/search |
| country | string | no | Country code; inferred from the id when omitted |
| years | integer | no | Fiscal years to return, 1-10, default 3, most recent first |
| statement_type | string | no | individual, consolidated or all (default) |
| currency | string | no | native (filing currency only), eur (euro only) or both (default) |
| include | string | no | lines adds balance_sheet and income_statement: every mapped line, with keys such as total_assets, cash, share_capital, revenue, cost_of_sales |
| include_superseded | boolean | no | true also returns statements replaced by a later or amended filing, flagged superseded: true. Default false |
| 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 (the UK Sanctions List, published by the FCDO), FR_GELS, DFAT (the Australian DFAT Consolidated List), NL_TERROR (the Dutch national terrorism list), JP_MOF (Japan, Ministry of Finance), NZ_MFAT (New Zealand, Russia Sanctions Register), PL_MSWIA (Poland, MSWiA), MC_GEL (Monaco, Direction du Budget et du Trésor),DHS_UFLPA, FINCEN_311, STATE_FTO, STATE_TEL and DOD_1260H (US government lists) |
| entity_type | string | no | person, company, vessel, aircraft, unknown or any (no filter, the default); entity is an alias of company; anything else is a 400 |
| 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, renamed, or bulk: one event per list summarising a mass change held back for review (no entity, entity_name reads "<n> entries of <LIST>", never a watchlist hit) |
| limit | integer | no | 1–500, default 100 |
| Parameter | Type | Required | Description |
|---|---|---|---|
| country | string | yes | One of FR, DE, GB, AT, CH, NO, FI, US, NL, DK, HR, SE, ES, LV, EE, SG |
| 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). A German HRA/HRB number is only unique within its register court, so DE notices carry it with the court (HRB12653/FRANKFURT-AM-MAIN): send HRB 12653 Frankfurt am Main (or the court first, or with Amtsgericht) to select one court; HRB 12653 alone matches every court and meta.register_courts lists them. Pair with country |
| limit | integer | no | 1–100, default 20 |
| cursor | string | no | Pagination cursor from the previous response |
| 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, FI, SE, HR, BE, DK, EE, SK, CH, LV, CY, RO, US, LT, CA, AU, JP, IL, BR, CO, SG, TW and CZ 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_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 |
| include | string | no | notice attaches to each event the publication behind it as notice (id, source: BORME, BODACC or Companies House, published_date, reference, type, court, region, url), or null for events of the other countries, which have no notice |
| 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. |
| 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) |