Company data REST API.
One shape, six markets.
A typed JSON REST API for every listed and private company across the US, Sweden, Norway, Finland, the UK, and Denmark. Profiles, financials, ownership, news, and a cross-company event stream from one OpenAPI-described surface. Drop-in React components ship alongside, tree-shakeable from @regna-verkt/ui.
One request shape, curl, TypeScript, Python.
A profile lookup against Spotify AB's Swedish org number. Same endpoint, same response, three transports plus the literal JSON the server returns.
$ curl https://regnaverkt.com/api/v1/se/companies/5567037485 \ -H "Authorization: Bearer rk_live_..."
const r = await fetch("https://regnaverkt.com/api/v1/se/companies/5567037485", { headers: { "Authorization": `Bearer ${process.env.REGNA_KEY}` } }); const c = await r.json(); c.name; // "Spotify AB" c.country; // "SE" c.is_listed; // false (the Swedish operating entity is private)
import os, requests r = requests.get( "https://regnaverkt.com/api/v1/se/companies/5567037485", headers={"Authorization": f"Bearer {os.environ['REGNA_KEY']}"}, ) c = r.json() c["name"] # "Spotify AB" c["country"] # "SE" c["is_listed"] # False
{ "id": "regna:SE:5567037485", "org_number": "5567037485", "name": "Spotify AB", "country": "SE", "sni_code": "63120", "sni_label": "Webportaler", "municipality": "Stockholm", "county": "Stockholm", "registered_date": "2006-09-20", "status": "active", "is_listed": false, "latest_revenue": 175000000000, "latest_currency": "SEK", "latest_year": 2024 }
Endpoints, one shape per market.
Each path returns the same typed JSON regardless of jurisdiction. Pass a 10-digit Swedish or Norwegian org number, a Finnish business ID, a UK Companies House number, or a US-prefixed SEC CIK and the response shape stays identical.
GET /api/v1/companies/{org_number}
Profile lookup. Name, sector, registered date, status, listed flag, latest reported revenue.
GET /api/v1/companies?country=SE&q=...
Search by name, industry, region, or company size. Cursor-paginated.
GET /api/v1/companies/{org_number}/financials
Annual and quarterly financials. Revenue, operating result, equity, employees.
GET /api/v1/companies/{org_number}/ownership
Shareholder structure with ownership percentages, reconciled across filings.
GET /api/v1/companies/{company_id}/events
Per-company event stream: filings, ownership crossings, status changes, and news. Cursor-paginated.
GET /api/v1/events?since=... (planned)
Cross-company event stream. Tracked in #222. Until it ships, fan out per-company calls or subscribe to webhooks.
The full surface, including request parameters and every response field, is in the developer docs.
Drop-in React components, tree-shakeable.
For frontend integrations, the same data ships as pre-wired React components in @regna-verkt/ui. Per-component imports keep the bundle lean, so a single <CompanyCard /> on a marketing page does not pull the chart library or the chat client. Pass a publishable key and a company id and the component fetches its own data.
// app.tsx import { CompanyCard } from '@regna-verkt/ui' import { FinancialsTable } from '@regna-verkt/ui' import { KeyStats } from '@regna-verkt/ui' <CompanyCard companyId="5567037485" publishableKey={key} /> <FinancialsTable companyId="5567037485" publishableKey={key} years={5} /> <KeyStats companyId="5567037485" publishableKey={key} />
Compact company summary - name, org number, industry, key metrics.
Multi-year financials table - revenue, operating result, equity, year-over-year delta.
Market cap, P/E, P/B, dividend yield, beta, 52-week range for listed issuers.
Shareholder pie chart and top-N list, reconciled from filings.
Chronological press releases and corporate events, deduped across sources.
Upcoming and past corporate events - earnings, dividends, AGM, splits.
Bearer auth, OpenAPI, Postman.
Bearer token in every request
A single header authenticates every call. Keys live in your dashboard; the rk_live_ prefix is the secret server-side variant. rk_public_ publishable keys are domain-bound for browser use.
Authorization: Bearer rk_live_...
Generate clients in any language
The full surface is described in OpenAPI 3.1. Hand it to openapi-typescript, datamodel-code-generator, or any OpenAPI client generator.
Importable collection
Auto-generated Postman / Insomnia / Bruno collection with example payloads. Tracked in #223. For now, import the OpenAPI spec above directly.
Predictable monthly quota
From 1,200 req/month on Basic up to 400,000 req/month on Business. Soft per-second burst limits keep noisy neighbours from tripping the quota.
See the pricing comparison →Ready to integrate?
Get started with a Basic plan from $9/mo. No card required for the 14-day trial.