---
title: "Get filing history (cached)"
method: GET
path: "/filings/company/{number}"
tags: ["Filings"]
---

# Get filing history (cached)

`GET /filings/company/{number}`

## Request

- Base URL: `https://api.companystack.co.uk`
- URL: `https://api.companystack.co.uk/filings/company/{number}`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

Filing history for a company — fetches from Companies House and caches locally. Returns from cache if fresh (< 24h).

## Path parameters

- `number` string, required

## Query parameters

- `category` 'accounts' | 'annual-return' | 'confirmation-statement' | 'incorporation' | 'officers' | 'mortgage' | 'resolution' | 'capital'
- `limit` integer
- `offset` integer

## Response `200`

Filing history items

- FilingList
  - `company_number` string, required
  - `total_count` integer
  - `items_returned` integer
  - `category_filter` string
  - `limit` integer
  - `offset` integer
  - `items` Filing[], required
    - `transaction_id` string, nullable
    - `category` string, nullable
    - `subcategory` string, nullable
    - `description` string, nullable
    - `filing_date` string, date, nullable
    - `action_date` string, date, nullable
    - `barcode` string, nullable
    - `paper_filed` boolean, nullable
    - `pages` integer, nullable
  - `_source` 'cache' | 'companies_house'
  - `_cached_at` string, nullable

## Other responses

- `401`: API key missing, malformed or revoked
- `403`: The key's plan does not include this endpoint (`code: plan_upgrade_required`, with `upgrade_url`), the key may not call it, or the key is beyond the plan's key limit after a downgrade (`code: key_limit_exceeded`: the newest keys are paused until keys are deleted or the plan upgraded)
- `404`: No filings found
- `429`: Per-minute or per-day limit reached (`code: rate_limited`, `window: minute|day`). Wait `Retry-After` seconds; when both windows are full the day is reported. A refused request does not count against either limit. A bulk lookup (`POST /company/bulk`) counts each company number in it as one request, so one that is more than you have left is refused whole, and the body adds `requested` and `fits`.

---

[API](https://skmtc.dev/companystack/apis/companystack-api.md) · [All operations](https://skmtc.dev/companystack/apis/companystack-api/llms.txt) · [OpenAPI document](https://skmtc.dev/companystack/apis/companystack-api/revisions/8f3234237d2d?raw)
