| Surface | Before v0.4 | After v0.5 |
|---|---|---|
| Canonical companies | 1.4M Nordic-only | 35.8M global |
| Sanctions entities | 24K | 1.6M |
| Per-fact provenance | — | 83M facts, every field sourced |
| MCP tools | 28 | 78 |
| Countries with deep data | NO + SE | NO · SE · FI · UK · US · DK + 304 LEI |
| Universal external-ID resolver | — | 310 schemes |
| Cross-jurisdiction officer match | — | NO + UK officer graph |
| Async bulk export | — | up to 10M rows / job |
| GDPR Art 15 self-serve | — | POST /gdpr/access |
| Status page | — | /status.html |
| Interactive sandbox | — | /sandbox |
GET /v2/companies/{canonical_id} — full record with per-fact provenanceGET /v2/companies/search?q=&country= — fuzzy name search (sub-200ms on 35M rows)GET /resolve/{scheme}/{id} — universal external-ID resolverGET /v2/companies/{id}/provenance — per-fact source + freshnessGET /v2/companies/{id}/contacts — tiered confidence emails + phonesGET /v2/companies/{id}/global-officers — cross-jurisdiction officer graphGET /v2/companies/{id}/related-by-domain — sister entities sharing a domainGET /sanctions/search — 1.6M dataset name searchPOST /sanctions/screen-bulk — bulk-100 names per callPOST /companies/{id}/enrich — JIT enrichment for long-tail companiesPOST /gdpr/access and POST /gdpr/opt-out — self-serve GDPRGET /status.html — HTML status page with live KPIsThe legacy /companies/{orgnr} endpoints work identically. Internally they resolve orgnr → canonical_id and return the same shape. Existing customer keys keep working.
Sandbox key (no signup, 30 calls/hour, all features unlocked): sandbox_try_2026
curl -H "X-API-Key: sandbox_try_2026" \ "https://api.nordicdata.cloud/v2/companies/search?q=equinor&country=NO&limit=3"
Interactive: /sandbox · Docs: /docs · Postman: /postman-collection.json · npm: npm install -g [email protected]
The build itself was three days of autonomous agent work. Key engineering decisions documented in companion posts: