veldora-no Fi API

The Fi API from veldora-no — 2 operation(s) for fi.

Operations 2

GET /v1/fi/companies/{businessId} Look up a Finnish company #
GET /v1/fi/companies Search Finnish companies #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/veldora-no:veldora-no-fi-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

veldora-no-fi-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Veldora No Fi API
  version: 1.0.0
  contact:
    name: Veldora
    url: https://veldora.no/contact
  license:
    name: 'Data: NLOD 2.0 (Brreg, Lovdata), CC BY 4.0 (Doffin, Kartverket, PRH), Norges Bank (source named) and TED reuse terms; see description'
  x-deprecation-policy:
    url: https://veldora.no/docs#versioning
    noticeDays: 90
    headers:
    - Deprecation
    - Sunset
    - Link
  description: 'Operations tagged Fi across 2 of this provider''s published API definitions: veldora-no-openapi.json, veldora-no-original.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://veldora.no
tags:
- name: Fi
paths:
  /v1/fi/companies/{businessId}:
    get:
      operationId: fiCompany
      summary: Look up a Finnish company
      description: 'One Finnish company from the PRH trade register (YTJ), cleaned: status (active, bankrupt, winding up, ceased), company form, industry (TOL 2008), address, website, other names, EU ID.


        Price: 0.005 USDC per successful call. Failed calls (4xx/5xx) are not charged.'
      parameters:
      - name: businessId
        in: path
        required: true
        description: Finnish business ID (Y-tunnus), e.g. 0112038-9 (mod-11 checked).
        schema:
          type: string
          pattern: ^\d{7}-?\d$
      - name: PAYMENT-SIGNATURE
        in: header
        required: false
        description: Base64-encoded x402 v2 PaymentPayload. Leave out to get the price.
        schema:
          type: string
      x-price:
        amount: '0.005'
        currency: USD
        asset: USDC
        atomic: '5000'
        network: eip155:8453
      responses:
        '200':
          description: Data. The PAYMENT-RESPONSE header holds the settlement receipt (base64 JSON).
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            PAYMENT-RESPONSE:
              schema:
                type: string
            X-Data-Fetched-At:
              schema:
                type: string
                format: date-time
            X-Data-Stale:
              schema:
                type: string
                enum:
                - 'true'
                - 'false'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data: {}
                  page:
                    type: object
                  meta:
                    type: object
        '400':
          description: Invalid input. Not charged; no payment is asked for.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Payment required. The PAYMENT-REQUIRED header (base64 JSON, x402 v2) lists what to pay. Sign it with an x402 client and resend the request with the PAYMENT-SIGNATURE header. The body repeats the requirements, plus `error` when a payment was rejected.
          headers:
            PAYMENT-REQUIRED:
              schema:
                type: string
              description: Base64-encoded PaymentRequired (x402 v2).
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentRequired'
        '404':
          description: Not found. Not charged.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method not allowed.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The same payment is being processed by another request. Retry with the same header.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limited. Not charged. See Retry-After.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error. Not charged.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: A data source answered with an error. Not charged; retry.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Upstream data source, facilitator or settlement unavailable. Not charged; retry.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Fi
    servers:
    - url: https://veldora.no
  /v1/fi/companies:
    get:
      operationId: fiCompanySearch
      summary: Search Finnish companies
      description: 'Search Finnish companies from the PRH trade register by name (current and former names), town or city, company form, industry code (TOL 2008) and postcode. Give at least one filter. Up to 100 hits per page.


        Price: 0.01 USDC per successful call. Failed calls (4xx/5xx) are not charged.'
      parameters:
      - name: q
        in: query
        required: false
        description: Name, or part of it.
        schema:
          type: string
          minLength: 2
          maxLength: 100
      - name: municipality
        in: query
        required: false
        description: Town or city name, e.g. Helsinki.
        schema:
          type: string
          minLength: 2
          maxLength: 100
      - name: company_form
        in: query
        required: false
        description: Company form code, e.g. OY, OYJ, KY, OK, SÄÄ.
        schema:
          type: string
          enum:
          - AOY
          - ASH
          - ASY
          - AY
          - AYH
          - ETS
          - ETY
          - SCE
          - SCP
          - HY
          - KOY
          - KVJ
          - KVY
          - KY
          - OK
          - OP
          - OY
          - OYJ
          - SE
          - SL
          - SP
          - SÄÄ
          - TYH
          - VOJ
          - VOY
          - VY
          - VALTLL
      - name: industry
        in: query
        required: false
        description: TOL 2008 industry code or prefix, e.g. 62 or 62010.
        schema:
          type: string
          pattern: ^\d{2,5}$
      - name: postcode
        in: query
        required: false
        description: 5-digit postcode, e.g. 00100.
        schema:
          type: string
          pattern: ^\d{5}$
      - name: page
        in: query
        required: false
        description: Zero-based page.
        schema:
          type: integer
          minimum: 0
          default: 0
      - name: PAYMENT-SIGNATURE
        in: header
        required: false
        description: Base64-encoded x402 v2 PaymentPayload. Leave out to get the price.
        schema:
          type: string
      x-price:
        amount: '0.01'
        currency: USD
        asset: USDC
        atomic: '10000'
        network: eip155:8453
      responses:
        '200':
          description: Data. The PAYMENT-RESPONSE header holds the settlement receipt (base64 JSON).
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            PAYMENT-RESPONSE:
              schema:
                type: string
            X-Data-Fetched-At:
              schema:
                type: string
                format: date-time
            X-Data-Stale:
              schema:
                type: string
                enum:
                - 'true'
                - 'false'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data: {}
                  page:
                    type: object
                  meta:
                    type: object
        '400':
          description: Invalid input. Not charged; no payment is asked for.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Payment required. The PAYMENT-REQUIRED header (base64 JSON, x402 v2) lists what to pay. Sign it with an x402 client and resend the request with the PAYMENT-SIGNATURE header. The body repeats the requirements, plus `error` when a payment was rejected.
          headers:
            PAYMENT-REQUIRED:
              schema:
                type: string
              description: Base64-encoded PaymentRequired (x402 v2).
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentRequired'
        '404':
          description: Not found. Not charged.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method not allowed.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The same payment is being processed by another request. Retry with the same header.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limited. Not charged. See Retry-After.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error. Not charged.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: A data source answered with an error. Not charged; retry.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Upstream data source, facilitator or settlement unavailable. Not charged; retry.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Fi
    servers:
    - url: https://veldora.no
components:
  headers:
    RateLimit-Limit:
      description: Requests allowed per window.
      schema:
        type: integer
    RateLimit:
      description: Remaining quota and seconds to reset, structured (draft-ietf-httpapi-ratelimit-headers), e.g. "per-ip";r=119;t=60.
      schema:
        type: string
    Retry-After:
      description: Seconds to wait before retrying.
      schema:
        type: integer
    RateLimit-Reset:
      description: Seconds until the window resets.
      schema:
        type: integer
    RateLimit-Remaining:
      description: Requests left in the current window.
      schema:
        type: integer
    RateLimit-Policy:
      description: 'Quota policy: 120 requests per 60 seconds per IP, e.g. "per-ip";q=120;w=60.'
      schema:
        type: string
  schemas:
    Error:
      type: object
      description: Every error from the API has this shape. Branch on `error.code`; `retryable` says whether the same request can succeed later.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Machine-readable error code.
              examples:
              - invalid_orgnr
              - invalid_id
              - invalid_parameter
              - unknown_parameter
              - missing_filter
              - paging_limit
              - enk_name_search
              - not_found
              - method_not_allowed
              - rate_limited
              - payment_in_progress
              - settlement_pending
              - payments_unavailable
              - facilitator_unavailable
              - data_unavailable
              - upstream_unavailable
              - temporarily_unavailable
              - internal_error
            message:
              type: string
              description: What went wrong and what to do next, in English.
            retryable:
              type: boolean
              description: 'True for 429, 502, 503 and 504: try again later with the same request.'
            docs:
              type: string
              format: uri
              description: Link to the error reference.
          required:
          - code
          - message
          - retryable
          - docs
          additionalProperties: true
      required:
      - error
    PaymentRequired:
      type: object
      description: x402 v2 PaymentRequired. The same object is base64-encoded in the PAYMENT-REQUIRED header.
      properties:
        x402Version:
          type: integer
          const: 2
        error:
          type: string
          description: Why a sent payment was refused (absent on the first 402).
        resource:
          type: object
          properties:
            url:
              type: string
              format: uri
            description:
              type: string
            mimeType:
              type: string
        accepts:
          type: array
          items:
            type: object
            properties:
              scheme:
                type: string
                const: exact
              network:
                type: string
                description: CAIP-2 chain id, e.g. eip155:8453.
              amount:
                type: string
                description: Price in USDC atomic units (6 decimals).
              asset:
                type: string
                description: USDC contract address.
              payTo:
                type: string
              maxTimeoutSeconds:
                type: integer
              extra:
                type: object
            required:
            - scheme
            - network
            - amount
            - asset
            - payTo
        extensions:
          type: object
      required:
      - x402Version
      - accepts
externalDocs:
  description: Docs, pricing and examples
  url: https://veldora.no/docs
x-refined-from:
- veldora-no-openapi.json
- veldora-no-original.json
x-mcp:
  url: https://veldora.no/mcp
  transport: streamable-http