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. 20 free calls/day per IP with header X-Free-Trial: 1.

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

Input

GET /api/company-search?country=FR|NO|FI&nace=<NACE code, e.g. 62.01 or 62.10>[&nace_rev=2|2.1&region=<FR département | NO kommune or fylke | FI municipality>&size_min=&size_max=&status=active|all&limit=1-25]

ParameterWhereTypeDescription
country (required)querystring: FR | NO | FICountry register: FR (Sirene), NO (Brønnøysund), FI (PRH/YTJ). UK coming soon.
nace (required)querystringNACE code, Rev. 2 or Rev. 2.1: class (62.01 or 6201), group (62.0) or division (62)
nace_revquerystring: 2 | 2.1Force the NACE version when the code exists in both (default: detected; Rev. 2 when ambiguous)
regionquerystringFR: département of the head office (75, 69, 2A); NO: kommunenummer (0301) or fylke (03); FI: municipality name (Helsinki)
size_minqueryintegerMinimum employees (FR: Sirene brackets lying entirely in the range; NO: exact headcount; not available in FI)
size_maxqueryintegerMaximum employees (same rules as size_min)
statusquerystring: active | allactive (default) or all (adds ceased, bankrupt, in liquidation)
limitqueryinteger1-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.

Free tier: 20 free calls per day per client IP (UTC day, shared with the other free-tier services), no wallet needed. Opt in with the header X-Free-Trial: 1 (or free_trial=1 in the query) and no payment header: the answer carries X-Free-Quota-Remaining, X-Free-Quota-Limit and "billing": {"free_tier": true, "remaining": N}. Without the opt-in, or past the quota, the usual 402. Paid calls never use the free quota.

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

Limits

Use it

All services