Resolve402 / services
Company search by NACE code
GET /api/company-search · $0.01 per call (USDC on Base or Solana, x402)
Search companies by industry (NACE code), country, region and size in official European business registers: France (Sirene), Norway (Brønnøysund), Finland (PRH/YTJ). Give one NACE code, Rev. 2 or Rev. 2.1: it is translated into each registry's own classification with the official correspondence tables (Eurostat, INSEE NAF, Statistics Finland TOL, SSB SN2025), and only companies whose main activity matches come back, up to 25, with registry ID, status, both NACE codes, local code, size band, address, licence and attribution. No sole traders. Charged only if a company is found.
Problem solved
You need a list of companies in an industry, a country, a region and a size range, from the official business register, and the NACE code your agent speaks is not the one the register uses (NAF, SN2025, TOL, Rev. 2 vs Rev. 2.1).
Use cases
- Build a target list: Norwegian IT consultancies (NACE 62.20) in Oslo with 50 to 249 employees.
- Market map across countries with one code: software companies (NACE 62.01 or 62.10) in France, Norway and Finland, each with its registry ID for a later counterparty check.
Input
GET /api/company-search?country=FR|NO|FI&nace=<NACE code, e.g. 62.01 or 62.10>[&nace_rev=2|2.1®ion=<FR département | NO kommune or fylke | FI municipality>&size_min=&size_max=&status=active|all&limit=1-25]
| Parameter | Where | Type | Description |
|---|---|---|---|
country (required) | query | string: FR | NO | FI | Country register: FR (Sirene), NO (Brønnøysund), FI (PRH/YTJ). UK coming soon. |
nace (required) | query | string | NACE code, Rev. 2 or Rev. 2.1: class (62.01 or 6201), group (62.0) or division (62) |
nace_rev | query | string: 2 | 2.1 | Force the NACE version when the code exists in both (default: detected; Rev. 2 when ambiguous) |
region | query | string | FR: département of the head office (75, 69, 2A); NO: kommunenummer (0301) or fylke (03); FI: municipality name (Helsinki) |
size_min | query | integer | Minimum employees (FR: Sirene brackets lying entirely in the range; NO: exact headcount; not available in FI) |
size_max | query | integer | Maximum employees (same rules as size_min) |
status | query | string: active | all | active (default) or all (adds ceased, bankrupt, in liquidation) |
limit | query | integer | 1-25, default 10 |
Output
results [{name, registry_id (SIREN / org.nr / Y-tunnus), country, status (active, ceased, in_liquidation, bankrupt, restructuring), legal_form, nace_rev2, nace_rev21, nace_source {rev2, rev21: registry | correspondence | ambiguous}, nace_candidates (when the official correspondence splits a class), nace_match (exact | partial), local_code, local_classification (NAF rév. 2, SN2025, TOL 2025, TOL 2008), size_band, employees (NO only), address, created_at, source_url}] and meta {registry, licence, attribution, classification_sources, nace_query, total, registry_total, excluded}. Largest first in FR and NO. 404 = nothing found, not charged.
Price
$0.01 per call. Charged only if at least one company is found: 404 no_match, 400 invalid filters and 502 registry_unavailable are not charged.
Example
GET https://resolve402.dev/api/company-search?country=NO&nace=62.10&limit=3
{
"results": [
{
"name": "BOUVET NORGE AS",
"registry_id": "996756246",
"country": "NO",
"status": "active",
"legal_form": "AS (Aksjeselskap)",
"nace_rev2": "62.01",
"nace_rev21": "62.10",
"nace_source": {
"rev2": "correspondence",
"rev21": "registry"
},
"local_code": "62.100",
"local_classification": "SN2025",
"size_band": "2000-4999",
"employees": 2270,
"address": "Sørkedalsveien 8, 0369 OSLO",
"created_at": "2011-02-10",
"source_url": "https://virksomhet.brreg.no/nb/oppslag/enheter/996756246",
"nace_match": "exact"
}
],
"meta": {
"registry": "Enhetsregisteret, Brønnøysundregistrene (data.brreg.no)",
"licence": "Norwegian Licence for Open Government Data (NLOD) 2.0",
"attribution": "Contains data under the Norwegian licence for Open Government data (NLOD) distributed by the Brønnøysund Register Centre.",
"total": 3,
"registry_total": 17344
}
}Real output of lib/companysearch.ts on 2026-10-12 against data.brreg.no (abridged to one company and part of meta).
Sources
- France: Sirene (INSEE) and RNE (INPI) via recherche-entreprises.api.gouv.fr, Licence Ouverte 2.0
- Norway: Enhetsregisteret, Brønnøysundregistrene (data.brreg.no), NLOD 2.0
- Finland: YTJ open data, PRH and Finnish Tax Administration (avoindata.prh.fi), CC BY 4.0
- Correspondence tables: Eurostat NACE Rev. 2 / Rev. 2.1 (V1.06), INSEE NAF rév. 2 to NAF 2025, Statistics Finland TOL 2008 and TOL 2025, SSB SN2025; built from the official files only, each with its source, version and date
Limits
- France, Norway and Finland for now. UK (Companies House) is coming soon.
- Main activity only: secondary activities do not match.
- When the official correspondence splits a class (e.g. Rev. 2.1 62.20 = Rev. 2 62.02 + 62.03), a company coded in the other version comes back with nace_match partial and nace_candidates.
- France, Rev. 2.1 search: companies are pre-selected through their NAF rév. 2 code; one that INSEE recoded individually into an unrelated NAF 2025 class can be missed.
- Finland publishes no headcount (size filters return 400) and returns companies in no particular order. FR region = head-office département.
- Sole traders and non-public units are never returned (FR entrepreneurs individuels and non-diffusible units, NO ENK and NUF, FI entries without a legal-person form). Nothing stored.
Use it
- HTTP + x402: call the URL, pay the 402 with any x402 v2 client, retry with the PAYMENT-SIGNATURE header.
- OpenAPI: /openapi.json (operation
companySearch) - MCP:
npx -y resolve402-mcp, toolcompany_search(npm) - Agent guide: /llms.txt · skill: /SKILL.md