Changes

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.

get/api/v1/changes

Request

  • Base URL: https://www.apier.no
  • URL: https://www.apier.no/api/v1/changes
  • Auth: HTTP bearer

Query parameters

source'brreg' | 'altinn' | 'digdir' | 'norges_bank' | 'nav' | 'skatteetaten'

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).

entity_typestring

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).

entity_idstring

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).

change_type'created' | 'updated' | 'deleted'

Filter by change type.

fromstring date-time

Inclusive lower bound on detected_at, RFC 3339 with timezone.

tostring date-time

Inclusive upper bound on detected_at, RFC 3339 with timezone.

limitinteger

Page size. Defaults to 50, max 500.

cursorstring

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.

successtrue required

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.