Directors

Map connected companies via shared directors

Discover all companies connected to the target through shared board members.

This is the key differentiator of this API: starting from one company, you can see every other company that shares at least one current director, revealing hidden governance links and corporate group structures.

  • connections - each connected company with the list of shared director names
  • connection_strength - number of shared directors (higher = stronger link)
  • truncated - true if depth=2 traversal hit the 30-company cap (see below)
  • Results are sorted by connection strength (strongest first)

Only genuine board directors contribute to connections - corporate secretaries (e.g. a company secretarial provider shared by thousands of client companies) are excluded, so a shared corporate-secretary provider never creates a phantom "connection" between otherwise unrelated companies.

Depth 1 (default): direct connections only - companies sharing a director with the target. Depth 2: also traverses each connected company's directors to find second-degree connections. This reveals wider networks but is upstream-intensive on cold cache.

Data is cached for 30 days (cache key includes depth). If the Companies House API is down, stale cached data is returned with cached: true.

Plan gating: depth=2 requires a Pro or Enterprise plan (403 for Free/Web). depth=1 is available on all plans.

Example: /v1/company/00445790/network?depth=1 shows companies connected to Tesco PLC.


Upstream usage: This is the most upstream-intensive endpoint.

  • Depth 1 (cold cache): same as /directors - ~N+2 upstream calls, where N is the number of directors. A 10-director company uses ~12 calls; a 50-director company uses ~52 calls. After first fetch, cached for 30 days at no cost.

  • Depth 2 (cold cache): traverses each connected company's directors as well. To protect service quality for all customers, traversal is capped at 30 connected companies per request. Typical upstream cost: 50–200 calls. If the cap is hit, the response includes truncated: true and truncated_at: 30 - this means more connections exist but were not explored.

Practical guidance: Depth=2 on cold cache is slow by design. On a warm cache (after the first request), depth=2 is instant and free. If you need depth=2 across many companies, call /directors for each first to warm the cache, then request the network.

At high volume, querying more than ~8 different companies per minute at depth=1 or more than 2–3 different companies per 5 minutes at depth=2 on cold cache will cause responses to slow while upstream capacity recovers.

get/v1/company/{company_number}/network

Request

  • Base URL: https://api.registrum.co.uk
  • URL: https://api.registrum.co.uk/v1/company/{company_number}/network
  • Auth: API key in header X-API-Key

Path parameters

company_numberstring required

The Companies House company number. 8 alphanumeric characters (e.g., 00445790 for Tesco PLC). Numeric-only numbers are automatically zero-padded.

Example:00445790

Query parameters

depthinteger

Network traversal depth. 1 = companies sharing directors with the target (default). 2 = also includes companies connected to those companies (slower, more results).

Example:1

Response

Network map returned successfully, sorted by connection strength

statusstring

'success' or 'error'

cachedboolean

True if this response was served from cache rather than fetched live

cache_age_secondsinteger nullable

How many seconds ago this data was fetched from Companies House (null if not cached)

fetched_atstring nullable

ISO 8601 instant (UTC) when this data was actually fetched from Companies House. Use this, not cache_age_seconds, to show a user when the data was last checked: an age is measured at the moment this response was produced, so anything that caches the response downstream will overstate freshness by however long it held it. This instant does not drift. Null when unknown - render nothing rather than a guessed date.

data_sourcestring

'live' - fetched from Companies House right now; 'cached' - served from local cache (data is recent, no upstream call needed); 'cached_rate_conserved' - served from cache because the CH API budget is above 70% utilisation; data may be up to 30 days old in this state

credits_usedinteger

Number of API credits consumed by this request

credits_remaininginteger nullable

API credits remaining this month (null in dev mode)

Example response

{
  "cache_age_seconds": 3421,
  "cached": true,
  "credits_remaining": 487,
  "credits_used": 1,
  "data": {
    "company_age_years": 78,
    "company_name": "TESCO PLC",
    "company_number": "00445790",
    "company_status": "active",
    "company_type": "plc"
  },
  "data_source": "cached",
  "status": "success"
}

Changes

No recorded changes to this operation across all 1 revision of this API.