Query the change archive
Returns paginated change events from the Apier change archive. Each row records a created/updated/deleted event detected during a periodic upstream poll (Brreg, Altinn, Norges Bank, NAV Aa-registeret, and Skatteetaten Tier 2 sub-results — MVA-register + Skatteoppgjør; the DigDir policy poller was retired without ever emitting a row, so digdir remains a valid but currently empty filter value). Use this endpoint to subscribe (via polling) to changes affecting your customers, audit historical mutations, or reconstruct what Apier saw at a given time. Rows are ordered detected_at DESC, id DESC (stable). Pagination is cursor-based — pass the next_cursor returned from each response as the cursor query param to fetch the next page. Cursors are HMAC-signed; tampered cursors return 400 CURSOR_INVALID. Date filters from/to are inclusive RFC 3339 timestamps. TRUTHFULNESS GATES: (1) each row carries a derived observation_kind separating first-time archive sightings (Apier's cache warming up) from real observed changes — not every row is a real-world change; (2) a query WITHOUT entity_id returns non-personal rows only — personal fields (board_members, signaturrett, prokura, innehaver) and whole-entity company snapshots are withheld and the response says so via personal_fields_withheld: true. Supply entity_id to read one organisation's full history including personal fields (the org-scoped read the filed GDPR legitimate-interest assessment covers; a cross-org bulk feed over role-holder names is deliberately not offered); (3) a known window of ~183k spurious /registration_date rows (2026-05-22 → 2026-07-26, a serialiser comparison artefact fixed at the source) is excluded at read time in every query mode.
Request
- Base URL: https://www.apier.no
- URL: https://www.apier.no/api/v1/changes
- Auth: HTTP bearer
Query parameters
Filter by upstream data source. Brreg = Brønnøysundregistrene (company data). Altinn = service schemas. DigDir = policy documents (poller retired; no rows were ever emitted, so this filter returns an empty set). Norges Bank = exchange + interest rates. NAV = Aa-registeret aggregates. Skatteetaten = MVA-register + Skatteoppgjør sub-result diffs (financial figures stripped at the publisher).
Filter by entity type within the source (e.g., 'company' for brreg, 'schema' for altinn, 'policy' for digdir, 'exchange_rate' for norges_bank, 'company_tier2' for nav).
Filter by specific entity id (e.g., org_number for brreg, schema_id for altinn). Supplying entity_id also switches the query into org-scoped mode: personal-field rows (board_members, signaturrett, prokura, innehaver) and whole-entity company snapshots are returned ONLY when this filter is present (see the operation description).
Filter by change type.
Inclusive lower bound on detected_at, RFC 3339 with timezone.
Inclusive upper bound on detected_at, RFC 3339 with timezone.
Page size. Defaults to 50, max 500.
Opaque pagination cursor from a previous response's next_cursor field. Pass it back as-is. Cursors are HMAC-signed; rotating CHANGES_CURSOR_SECRET invalidates outstanding cursors.
Response
Page of change events with cursor for the next page if more rows exist.
Example response
{
"_meta": {
"rulebook_version": "v1.0.0",
"source": "apier.no",
"data_source": "Brønnøysund Enhetsregisteret + Apier Universal Rulebook",
"schema_version": "1.0.0",
"legal_basis": "NLOD — public registry reuse",
"response_timestamp": "2026-04-24T12:00:00.000Z",
"response_hash": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"source_snapshot_id": "brreg-2026-04-24T02:00:00.000Z",
"cost_nok": 0.5,
"wallet_remaining_nok": 9.5,
"spend_cap_remaining_nok": 12.5
}
}Changes
No recorded changes to this operation across all 1 revision of this API.