Hoppa till innehåll
Menu and API reference

Guide

Integration patterns

How the API resources combine in common B2B flows.

1. Onboarding business customers

Let the customer enter their company registration number once. Then pull the registry fields automatically and check that the business is still active.

  • GET /companies/{id} gives name, address, status and tax registrations.
  • GET /companies/{id}/history shows reported insolvency proceedings and former names.
  • GET /companies/{id}/financials/latest gives the most recently reported size and equity ratio.

2. Selection and enrichment

Start with a narrow segment and only pull more data for the companies that genuinely matter.

  • GET /companies?county=…&sni=…&revenue_min=…&sort=revenue builds the base selection.
  • GET /companies/{id}/web adds the verified website and LinkedIn profile.
  • GET /companies/{id}/contact retrieves an email address when the plan has contact allowance left.
  • GET /companies/{id}/workplaces shows local presence and the head office.

Always respect advertising_block. The unique-companies limit is sized for targeted selections and ongoing integrations, not for copying the whole registry.

3. Monitoring a portfolio of companies

Combine insider trading and short positions with your own list of companies and instruments.

  • Poll GET /changes?dataset=insider_transactions&after=… at whatever interval suits your product.
  • Save the page cursor after a successful run and continue from there next time.
  • Build your own alerts for purchases using direction=buy and a meaningful min_value.
  • Use GET /market/insider-summary?days=30 for a quick net picture per company.
python
# Enkel bevakningsloop: hämta allt nytt sedan förra körningen.
cursor = load_saved_cursor()          # None första gången
params = {"dataset": "insider_transactions", "limit": 200}
if cursor:
    params["cursor"] = cursor
else:
    params["after"] = "2026-08-01"

while True:
    page = session.get(f"{BASE}/changes", params=params, timeout=30).json()
    handle(page["data"])
    if not page["has_more"]:
        break
    params = {"dataset": "insider_transactions", "limit": 200, "cursor": page["next_cursor"]}

save_cursor(page["next_cursor"])

4. Company and trademark monitoring

  • GET /changes?dataset=insolvency&after=… finds new insolvency observations.
  • GET /changes?dataset=new_companies&after=… surfaces newly registered companies as a running feed.
  • GET /trademarks/changes?kind=expiring&until=… finds marks approaching their expiry date.
  • GET /trademarks?query=… searches for marks resembling a name you are watching.

Recommendations for production

  • Cache stable registry data when the same company is read often. Twenty-four hours is a reasonable starting point.
  • Keep cache lifetimes short for market feeds, where the value is in the freshness.
  • Log X-Request-Id alongside your own correlation id for fast debugging.
  • Put /status in your monitoring so you can tell a source problem apart from a fault in your own integration.