registercheckby openlaw group
API referenceRegister events

List register events across all companies

GET
/events

Changes the register courts entered for any company, newest register day first. Each item is the same company_event that GET /companies/{company_id}/events lists for one company, with the company named in company. A company's first entry, its registration, is not listed here: new companies are GET /formations.

Events, not entries. One register entry can carry several events: an entry that removes one managing director and appoints another is two company.officer.* events with the same register_entry_number.

Order. Newest register day first, fully specified and stable: effective_date descending, then created_at descending, then id descending. Ties never reorder between pages.

Window. The list covers the last 180 days of register days. An effective_date[gte] older than that answers 400 validation_failed. Without any effective_date[*] or created_at[*] bound, the list covers the last 30 days.

Completeness. Register days before 2026-09-10 are incomplete.

Polling. About 7 % of entries reach Registercheck one or more days after their register day and sort into the middle of the list, so do not poll on effective_date or page from the top with ending_before: both miss events. Poll on created_at, the moment an event became available here, or available again:

  1. GET /events?created_at[gte]=<T minus 10 minutes>&limit=100, paging with starting_after until has_more is false;
  2. keep the latest version of each id: an id you already have is an update;
  3. set T to the largest created_at you received.

Republication. When the register rewrites an entry (its type, day, entry number or the entry before it changes), its event is served again under the same id with the new values and a new created_at. An event that no longer stands for a change (it now restates an earlier entry, or its day left the window) is no longer served, and GET /events/{event_id} answers 404 for it.

Delivery is at-least-once: the 10-minute overlap re-reads events you already have, which is what deduplicating by id is for. An event whose company or person is restricted after you listed it is no longer served; a cursor naming it answers 400 validation_failed, and the recipe above recovers from that.

Costs 10 credits per page.

Authorization

bearerAuth
AuthorizationBearer <token>

Your API key, sent as Authorization: Bearer rc_live_….

In: header

Query Parameters

type?array<>

Only events of these types. Repeat the parameter for several.

Itemsitems <= 30
officer_role?array<>

Only company.officer.* events concerning officers in these roles. Repeat the parameter for several.

Itemsitems <= 10
effective_date[gte]?string

First register day to include. Without any effective_date[*] or created_at[*] bound, the list covers the last 30 days; with any of them it covers the whole 180-day window. Older than 180 days answers 400 validation_failed.

Match^[0-9]{4}-[0-9]{2}-[0-9]{2}$
Formatdate
effective_date[lte]?string

Last register day to include.

Match^[0-9]{4}-[0-9]{2}-[0-9]{2}$
Formatdate
created_at[gte]?string

Only events that became available through this API at or after this instant. Poll on this.

Match^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?Z$
Formatdate-time
created_at[lte]?string

Only events that became available through this API at or before this instant.

Match^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?Z$
Formatdate-time
legal_form?array<>

Only companies of these legal forms. Repeat the parameter for several (legal_form=gmbh&legal_form=ug).

Itemsitems <= 40
state?array<>

Only companies in these federal states, as ISO 3166-2 codes (DE-BY). Repeat the parameter for several.

Itemsitems <= 16
registered_office?array<>

Only companies with these registered offices (Sitz). Exact match, ignoring case and umlaut spelling (Muenchen matches München). Repeat the parameter for several.

Itemsitems <= 50
register_court?string

Only companies registered at this court: its code (D2601), its name (Amtsgericht München) or its seat (München), as POST /monitors accepts it.

Length1 <= length <= 100
capital[gte]?string

Minimum registered capital in EUR, as a decimal (25000 or 25000.00). Companies without EUR capital are excluded when either capital bound is set.

Match^(0|[1-9][0-9]{0,11})(\.[0-9]{1,2})?$
capital[lte]?string

Maximum registered capital in EUR, as a decimal.

Match^(0|[1-9][0-9]{0,11})(\.[0-9]{1,2})?$
q?string

Words that must all appear, ignoring case and umlaut spelling, in the company name, the registered office, the court, the register number or the entry's own text. Not matched against people's names.

Length2 <= length <= 100
limit?integer

Page size.

Range1 <= value <= 100
Default20
starting_after?string

Return the page after the object with this id. Cannot be combined with ending_before.

Formatuuid
ending_before?string

Return the page before the object with this id. Cannot be combined with starting_after.

Formatuuid

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://api.registercheck.de/v1/events" \  -H "Authorization: Bearer $REGISTERCHECK_API_KEY"
{  "object": "list",  "has_more": true,  "data": [    {      "id": "2c4e6a8b-1d3f-4a5c-9e7b-0f1a2b3c4d5e",      "object": "company_event",      "company_id": "3f1c2a9e-5b7d-4c8a-9e21-6d4f0b8a1c55",      "company": {        "object": "company",        "id": "3f1c2a9e-5b7d-4c8a-9e21-6d4f0b8a1c55",        "name": "Beispiel Analytics GmbH"      },      "type": "company.registered_office.changed",      "effective_date": "2026-09-21",      "register_entry_number": 7,      "officer_role": null,      "previous": "München",      "current": "Augsburg",      "officers": [],      "created_at": "2026-09-21T10:14:02Z"    },    {      "id": "5b7d9f1a-3c5e-4b7d-8f9a-1b2c3d4e5f60",      "object": "company_event",      "company_id": "9d4c1a2b-7e6f-4a5b-8c3d-2e1f0a9b8c02",      "company": {        "object": "company",        "id": "9d4c1a2b-7e6f-4a5b-8c3d-2e1f0a9b8c02",        "name": "Beispiel Bau Holding GmbH"      },      "type": "company.officer.appointed",      "effective_date": "2026-09-21",      "register_entry_number": 4,      "officer_role": "managing_director",      "previous": null,      "current": null,      "officers": [        {          "type": "person",          "name": {            "full": "Erika Mustermann",            "first": "Erika",            "last": "Mustermann",            "birth_name": null,            "titles": []          },          "birth_date": "1980-05-21",          "city": "Ulm",          "country": null,          "person": null,          "match_confidence": null        }      ],      "created_at": "2026-09-21T09:58:40Z"    }  ]}