NL Monitoring

📡 NL Monitoring API

💻 Purpose of the API

The NL Monitoring API allows you to track changes in the profiles of Dutch organizations and branches over time.

Instead of repeatedly polling the NL Organizations API to detect what changed, you can set up monitoring lists that automatically capture change events for the entities and data fields you care about.
You can use this API to:

  • Create named monitoring lists to group the entities you want to watch
  • Add items (organizations or branches) to a list, specifying which event types and data collections to track
  • Retrieve updates — change events generated by the system when monitored data fields are modified, created, or deleted
  • Manage lists and items (get, delete) for ongoing monitoring workflows

The API is ideal for compliance monitoring, regulatory change tracking, KYC/KYB continuous due diligence, portfolio surveillance, and any workflow that needs to react to changes in Dutch organization data.


🤔 How to use?

📌 Overview of the Flow

  1. Create a Monitoring List
    Start by calling
    POST /nl/organizations/monitoring/v1/lists
    to create a named container that will hold the entities you want to monitor.

  2. Add Items to the List
    Once you have a list_id, call:
    POST /nl/organizations/monitoring/v1/lists/{list_id}/items
    to add one or more organizations or branches. For each item you specify:

    • The entity ID and type (organization or branch)
    • The event type to watch (change)
    • The collections (data fields) to monitor
  3. Poll for Updates (List Level)
    Periodically call:
    GET /nl/organizations/monitoring/v1/lists/{list_id}/updates
    with a date filter to retrieve all change events across every item in the list.

  4. Poll for Updates (Item Level)
    For a more targeted view, call:
    GET /nl/organizations/monitoring/v1/items/{item_id}/updates
    to get change events for a single monitored entity.

  5. Manage Lists and Items
    Use the GET and DELETE endpoints to inspect or clean up your monitoring configuration at any time.

🌀 Flow Behavior

  • If no updates occurred in the requested time range, the API returns an empty data: [] array — this is normal and not an error.
  • All list and item endpoints support pagination via page[number] and page[size].
  • Item responses include the parent list in the included section (JSON:API side-loading).
  • Update responses include the related organization in the included section with its Trade Register identifier and a link to the NL Organizations Profile API.
  • All responses follow JSON:API conventions for consistency.

🔢 Versioning

Current version prefix:
/nl/organizations/monitoring/v1/

Future versions will follow /v2/, /v3/, etc.


🌐 Base URL

https://api.company.info


🔑 Authentication

All requests must be authenticated using one of the following methods:

MethodHeaderDescription
API KeyX-API-KEY: <your-api-key>Your unique API key. Validated against the Organization Management API.
Bearer TokenAuthorization: Bearer <your-token>A valid bearer token issued by the authentication service.
💡

You only need to provide one of these headers per request. If both are present, the bearer token takes precedence.


🧩 Core Concepts

Before diving into the endpoints it helps to understand the domain model:

ConceptDescription
ListA named container that groups monitoring items together. Each customer can have up to 100 lists.
ItemA specific entity (organization or branch) to monitor within a list. Each item defines the entity, the event type to watch, and the collections to track.
UpdateA change event generated by the system when a monitored collection on a watched entity is modified, created, or deleted. Updates are only visible for changes that occurred after the item was placed on a list.

📚 All Endpoints

Below is a complete list of API endpoints.

#MethodEndpointDescription
1POST/v1/listsCreate a new monitoring list
2GET/v1/listsGet all lists for the customer
3GET/v1/lists/{list_id}Get a specific list
4DELETE/v1/lists/{list_id}Delete a list and all its items
5POST/v1/lists/{list_id}/itemsAdd items to a list
6GET/v1/lists/{list_id}/itemsGet all items in a list
7GET/v1/items/{item_id}Get a specific item
8DELETE/v1/items/{item_id}Delete an item
9GET/v1/lists/{list_id}/updatesGet change updates for all items in a list
10GET/v1/items/{item_id}/updatesGet change updates for a specific item

All endpoint paths are relative to /nl/organizations/monitoring.

❗ These endpoints incur usage-based charges.


1. 📝 Create a List

POST /nl/organizations/monitoring/v1/lists

Create a new monitoring list.

Description

Creates a named container for organizing the entities you want to monitor. The list name must be alphanumeric (no special characters) and at most 50 characters long.


⁉️ Request Parameters

Headers

NameTypeDescription
X-API-KEYstringYour API key. Required if Authorization is not provided.
AuthorizationstringBearer token (Bearer <token>). Required if X-API-KEY is not provided.
Content-TypestringRequired. application/json

Request Body

FieldTypeRequiredDescription
data.typestringYesMust be "lists".
data.attributes.namestringYesName of the list. Alphanumeric, max 50 chars.

Example Request

curl -X POST "https://api.company.info/nl/organizations/monitoring/v1/lists" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "data": {
          "type": "lists",
          "attributes": {
            "name": "MyMonitoringList"
          }
        }
      }'

Example Response

{
  "data": {
    "id": "01HX6V58G64VJHWRDEJF0YKZ85",
    "type": "lists",
    "attributes": {
      "name": "MyMonitoringList",
      "createdAt": "2024-05-15T13:25:43+02:00"
    },
    "links": {
      "self": "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85"
    }
  }
}

Response Fields — data

FieldTypeDescription
idstringUnique identifier (ULID) for the list.
typestringAlways "lists".
attributes.namestringThe name you provided.
attributes.createdAtstringISO 8601 timestamp of when the list was created.
links.selfstringCanonical URL to retrieve this list.

⚠️ Limitations

  • Maximum 100 lists per customer.
  • List name must be alphanumeric and at most 50 characters.

2. 📋 Get All Lists

GET /nl/organizations/monitoring/v1/lists

Retrieve all monitoring lists belonging to the authenticated customer.

Description

Returns a paginated array of all your monitoring lists.


⁉️ Request Parameters

Headers

NameTypeDescription
X-API-KEYstringYour API key. Required if Authorization is not provided.
AuthorizationstringBearer token (Bearer <token>). Required if X-API-KEY is not provided.

Query Parameters

ParameterTypeDescription
page[number]integerPage number (default: 1).
page[size]integerRecords per page (default: 10, maximum: 20).

Example Request

curl -X GET "https://api.company.info/nl/organizations/monitoring/v1/lists" \
  -H "X-API-KEY: YOUR_API_KEY"

Example Response

{
  "data": [
    {
      "id": "01HX6V58G64VJHWRDEJF0YKZ85",
      "type": "lists",
      "attributes": {
        "name": "MyMonitoringList",
        "createdAt": "2024-05-15T13:25:43+02:00"
      },
      "links": {
        "self": "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85"
      }
    }
  ],
  "links": {
    "first": "...?page[number]=1&page[size]=10",
    "last": "...?page[number]=1&page[size]=10",
    "self": "...?page[number]=1&page[size]=10"
  },
  "meta": {
    "totalResults": 1,
    "totalPages": 1
  }
}

3. 📄 Get a Single List

GET /nl/organizations/monitoring/v1/lists/{list_id}

Retrieve a single monitoring list by its ID.

Description

Returns the details of the specified list.


⁉️ Request Parameters

Path

NameTypeRequiredDescription
list_idstringYesThe ID of the list.

Headers

NameTypeDescription
X-API-KEYstringYour API key. Required if Authorization is not provided.
AuthorizationstringBearer token (Bearer <token>). Required if X-API-KEY is not provided.

Example Request

curl -X GET "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85" \
  -H "X-API-KEY: YOUR_API_KEY"

Example Response

{
  "data": {
    "id": "01HX6V58G64VJHWRDEJF0YKZ85",
    "type": "lists",
    "attributes": {
      "name": "MyMonitoringList",
      "createdAt": "2024-05-15T13:25:43+02:00"
    },
    "links": {
      "self": "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85"
    }
  }
}

4. 🗑️ Delete a List

DELETE /nl/organizations/monitoring/v1/lists/{list_id}

Delete a monitoring list and all items associated with it.

Description

Permanently removes the specified list. All items within the list are also deleted. This action cannot be undone.


⁉️ Request Parameters

Path

NameTypeRequiredDescription
list_idstringYesThe ID of the list.

Headers

NameTypeDescription
X-API-KEYstringYour API key. Required if Authorization is not provided.
AuthorizationstringBearer token (Bearer <token>). Required if X-API-KEY is not provided.

Example Request

curl -X DELETE "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85" \
  -H "X-API-KEY: YOUR_API_KEY"

Example Response

204 No Content — the list and all its items have been deleted.


5. ➕ Add Items to a List

POST /nl/organizations/monitoring/v1/lists/{list_id}/items

Add one or more monitoring items (organizations or branches) to a list.

Description

Items define what to watch, which event type to listen for, and which collections (data fields) to track. You can add multiple items in a single request.


⁉️ Request Parameters

Path

NameTypeRequiredDescription
list_idstringYesThe ID of the list to add items to.

Headers

NameTypeDescription
X-API-KEYstringYour API key. Required if Authorization is not provided.
AuthorizationstringBearer token (Bearer <token>). Required if X-API-KEY is not provided.
Content-TypestringRequired. application/json

Request Body

The body must contain a data array. Each element requires:

FieldTypeRequiredDescription
typestringYesMust be "items".
attributes.entity.idstringYesTrade Register ID — 8-digit KVK number (organization) or 12-digit branch number.
attributes.entity.typestringYes"organization" or "branch".
attributes.eventTypestringYesEvent type to watch: "change".
attributes.collectionsstring[]YesArray of collection names to monitor (see Supported Collections below).

Example Request

curl -X POST "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85/items" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "data": [
          {
            "type": "items",
            "attributes": {
              "entity": {
                "id": "33302047",
                "type": "organization"
              },
              "eventType": "change",
              "collections": ["name", "activities", "address"]
            }
          },
          {
            "type": "items",
            "attributes": {
              "entity": {
                "id": "000012345678",
                "type": "branch"
              },
              "eventType": "change",
              "collections": ["name", "contact"]
            }
          }
        ]
      }'

Example Response

{
  "data": [
    {
      "id": "01HX71K7DSM0JA59XJZ07MQG2W",
      "type": "items",
      "attributes": {
        "entity": {
          "id": "33302047",
          "type": "organization"
        },
        "eventType": "change",
        "collections": ["name", "activities", "address"],
        "createdAt": "2024-05-15T13:30:12+02:00"
      },
      "relationships": {
        "list": {
          "data": {
            "type": "lists",
            "id": "01HX6V58G64VJHWRDEJF0YKZ85"
          }
        }
      },
      "links": {
        "self": "https://api.company.info/nl/organizations/monitoring/v1/items/01HX71K7DSM0JA59XJZ07MQG2W"
      }
    },
    {
      "id": "01HX71K7DSM0JA59XJZ07MQG2X",
      "type": "items",
      "attributes": {
        "entity": {
          "id": "000012345678",
          "type": "branch"
        },
        "eventType": "change",
        "collections": ["name", "contact"],
        "createdAt": "2024-05-15T13:30:12+02:00"
      },
      "relationships": {
        "list": {
          "data": {
            "type": "lists",
            "id": "01HX6V58G64VJHWRDEJF0YKZ85"
          }
        }
      },
      "links": {
        "self": "https://api.company.info/nl/organizations/monitoring/v1/items/01HX71K7DSM0JA59XJZ07MQG2X"
      }
    }
  ],
  "included": [
    {
      "id": "01HX6V58G64VJHWRDEJF0YKZ85",
      "type": "lists",
      "attributes": {
        "name": "MyMonitoringList",
        "createdAt": "2024-05-15T13:25:43+02:00"
      },
      "links": {
        "self": "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85"
      }
    }
  ]
}

Response Fields — data[]

FieldTypeDescription
idstringUnique identifier (ULID) for the item.
typestringAlways "items".
attributes.entity.idstringThe entity's Trade Register ID.
attributes.entity.typestring"organization" or "branch".
attributes.eventTypestringThe event type being monitored.
attributes.collectionsstring[]The list of collections being monitored.
attributes.createdAtstringISO 8601 timestamp of when the item was created.
relationships.list.data.typestringAlways "lists".
relationships.list.data.idstringThe ID of the parent list.
links.selfstringCanonical URL to retrieve this item.

Response Fields — included[]

The parent list is side-loaded in the included array following JSON:API conventions.

⚠️ Limitations

  • Maximum 1000 items per single request.
  • Entity ID must be an 8-digit number (organization) or 12-digit number (branch).
  • Collections must be valid for the entity type (see Supported Collections below).

6. 📋 Get All Items in a List

GET /nl/organizations/monitoring/v1/lists/{list_id}/items

Retrieve all monitoring items belonging to a specific list.

Description

Returns a paginated array of all items in the specified list, with the parent list side-loaded in included.


⁉️ Request Parameters

Path

NameTypeRequiredDescription
list_idstringYesThe ID of the list.

Headers

NameTypeDescription
X-API-KEYstringYour API key. Required if Authorization is not provided.
AuthorizationstringBearer token (Bearer <token>). Required if X-API-KEY is not provided.

Query Parameters

ParameterTypeDescription
page[number]integerPage number (default: 1).
page[size]integerRecords per page (default: 10, maximum: 20).

Example Request

curl -X GET "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85/items" \
  -H "X-API-KEY: YOUR_API_KEY"

Example Response

{
  "data": [
    {
      "id": "01HX71K7DSM0JA59XJZ07MQG2W",
      "type": "items",
      "attributes": {
        "entity": {
          "id": "33302047",
          "type": "organization"
        },
        "eventType": "change",
        "collections": ["name", "activities", "address"],
        "createdAt": "2024-05-15T13:30:12+02:00"
      },
      "relationships": {
        "list": {
          "data": {
            "type": "lists",
            "id": "01HX6V58G64VJHWRDEJF0YKZ85"
          }
        }
      },
      "links": {
        "self": "https://api.company.info/nl/organizations/monitoring/v1/items/01HX71K7DSM0JA59XJZ07MQG2W"
      }
    }
  ],
  "included": [
    {
      "id": "01HX6V58G64VJHWRDEJF0YKZ85",
      "type": "lists",
      "attributes": {
        "name": "MyMonitoringList",
        "createdAt": "2024-05-15T13:25:43+02:00"
      },
      "links": {
        "self": "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85"
      }
    }
  ],
  "links": {
    "first": "...?page[number]=1&page[size]=10",
    "last": "...?page[number]=1&page[size]=10",
    "self": "...?page[number]=1&page[size]=10"
  },
  "meta": {
    "totalResults": 1,
    "totalPages": 1
  }
}

7. 📄 Get a Single Item

GET /nl/organizations/monitoring/v1/items/{item_id}

Retrieve a single monitoring item by its ID.

Description

Returns the full details of the specified item, including its parent list in the included section.


⁉️ Request Parameters

Path

NameTypeRequiredDescription
item_idstringYesThe ID of the item.

Headers

NameTypeDescription
X-API-KEYstringYour API key. Required if Authorization is not provided.
AuthorizationstringBearer token (Bearer <token>). Required if X-API-KEY is not provided.

Example Request

curl -X GET "https://api.company.info/nl/organizations/monitoring/v1/items/01HX71K7DSM0JA59XJZ07MQG2W" \
  -H "X-API-KEY: YOUR_API_KEY"

Example Response

{
  "data": {
    "id": "01HX71K7DSM0JA59XJZ07MQG2W",
    "type": "items",
    "attributes": {
      "entity": {
        "id": "33302047",
        "type": "organization"
      },
      "eventType": "change",
      "collections": ["name", "activities", "address"],
      "createdAt": "2024-05-15T13:30:12+02:00"
    },
    "relationships": {
      "list": {
        "data": {
          "type": "lists",
          "id": "01HX6V58G64VJHWRDEJF0YKZ85"
        }
      }
    },
    "links": {
      "self": "https://api.company.info/nl/organizations/monitoring/v1/items/01HX71K7DSM0JA59XJZ07MQG2W"
    }
  },
  "included": [
    {
      "id": "01HX6V58G64VJHWRDEJF0YKZ85",
      "type": "lists",
      "attributes": {
        "name": "MyMonitoringList",
        "createdAt": "2024-05-15T13:25:43+02:00"
      },
      "links": {
        "self": "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85"
      }
    }
  ]
}

8. 🗑️ Delete an Item

DELETE /nl/organizations/monitoring/v1/items/{item_id}

Remove a single monitoring item.

Description

Permanently removes the specified item from its list. The entity will no longer be monitored. This action cannot be undone.


⁉️ Request Parameters

Path

NameTypeRequiredDescription
item_idstringYesThe ID of the item.

Headers

NameTypeDescription
X-API-KEYstringYour API key. Required if Authorization is not provided.
AuthorizationstringBearer token (Bearer <token>). Required if X-API-KEY is not provided.

Example Request

curl -X DELETE "https://api.company.info/nl/organizations/monitoring/v1/items/01HX71K7DSM0JA59XJZ07MQG2W" \
  -H "X-API-KEY: YOUR_API_KEY"

Example Response

204 No Content — the item has been deleted.


9. 🔔 Get Updates for a List

GET /nl/organizations/monitoring/v1/lists/{list_id}/updates

Retrieve change events for all items in a list.

Description

Returns a paginated array of updates (change events) that occurred on any monitored entity within the specified list during the given time range. Updates include the entity that changed, the event type, the collection that was modified, and when the change was published.

⚠️

Updates are only visible for changes that occurred after the

item was placed on a list. Historical changes before the item was added will not appear.


⁉️ Request Parameters

Path

NameTypeRequiredDescription
list_idstringYesThe ID of the list.

Headers

NameTypeDescription
X-API-KEYstringYour API key. Required if Authorization is not provided.
AuthorizationstringBearer token (Bearer <token>). Required if X-API-KEY is not provided.

Query Parameters

ParameterTypeRequiredDescription
filter[date][from]stringYesStart of the update window (RFC 3339 format). Cannot be in the future.
filter[date][to]stringNoEnd of the update window (RFC 3339). Must be after from and not in the future.
filter[eventType]stringNoFilter by event type: change.
filter[entity][id]stringNoFilter by a specific entity ID (8-digit or 12-digit).
filter[collections]stringNoComma-separated list of collection names to filter by.
page[number]integerNoPage number (default: 1).
page[size]integerNoRecords per page (default: 100, maximum: 200).

Example Request

curl -X GET "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85/updates?filter[date][from]=2024-05-15T00:00:00Z&filter[eventType]=change" \
  -H "X-API-KEY: YOUR_API_KEY"

Example Response

{
  "data": [
    {
      "id": "01HQ8DJJAZW067WSTRM6M7EWB2",
      "type": "updates",
      "attributes": {
        "entity": {
          "id": "33302047",
          "type": "organization"
        },
        "eventType": "change",
        "collection": "name",
        "publishedAt": "2024-05-16T09:12:33+02:00"
      },
      "relationships": {
        "organization": {
          "data": {
            "type": "organizations",
            "id": "33302047"
          }
        }
      }
    }
  ],
  "included": [
    {
      "type": "organizations",
      "id": "33302047",
      "attributes": {
        "identifiers": {
          "tradeRegister": {
            "system": "tradeRegister",
            "value": "33302047"
          }
        }
      },
      "links": {
        "self": "https://api.company.info/v1/organizations/33302047"
      }
    }
  ],
  "links": {
    "first": "...?page[number]=1&page[size]=100",
    "last": "...?page[number]=1&page[size]=100",
    "self": "...?page[number]=1&page[size]=100"
  },
  "meta": {
    "totalResults": 1,
    "totalPages": 1
  }
}

Response Fields — data[]

FieldTypeDescription
idstringUnique identifier for the update event.
typestringAlways "updates".
attributes.entity.idstringThe Trade Register ID of the entity that changed.
attributes.entity.typestring"organization" or "branch".
attributes.eventTypestringThe type of event ("change").
attributes.collectionstringThe specific collection that was modified.
attributes.publishedAtstringISO 8601 timestamp of when the change was published.
relationships.organization.data.typestringAlways "organizations".
relationships.organization.data.idstringThe organization ID related to this update.

Response Fields — included[]

The related organization is side-loaded with its Trade Register identifier and a self-link pointing to the NL Organizations Profile API.

⚠️ Constraints

  • The filter[date][from] parameter is required.
  • The maximum time range between from and to is 1 year (8766 hours).
  • The from date cannot be in the future.
  • The to date must be after the from date and cannot be in the future.

10. 🔔 Get Updates for an Item

GET /nl/organizations/monitoring/v1/items/{item_id}/updates

Retrieve change events for a single monitored item.

Description

Same as list-level updates, but scoped to a single item. Useful when you want to inspect changes for one specific entity without retrieving the full list.

⚠️

Updates are only visible for changes that occurred after the

item was placed on a list. Historical changes before the item was added will not appear.


⁉️ Request Parameters

Path

NameTypeRequiredDescription
item_idstringYesThe ID of the item.

Headers

NameTypeDescription
X-API-KEYstringYour API key. Required if Authorization is not provided.
AuthorizationstringBearer token (Bearer <token>). Required if X-API-KEY is not provided.

Query Parameters

ParameterTypeRequiredDescription
filter[date][from]stringYesStart of the update window (RFC 3339 format). Cannot be in the future.
filter[date][to]stringNoEnd of the update window (RFC 3339). Must be after from and not in the future.
filter[eventType]stringNoFilter by event type: change.
filter[entity][id]stringNoFilter by a specific entity ID.
filter[collections]stringNoComma-separated list of collection names to filter by.
page[number]integerNoPage number (default: 1).
page[size]integerNoRecords per page (default: 100, maximum: 200).

Example Request

curl -X GET "https://api.company.info/nl/organizations/monitoring/v1/items/01HX71K7DSM0JA59XJZ07MQG2W/updates?filter[date][from]=2024-05-15T00:00:00Z" \
  -H "X-API-KEY: YOUR_API_KEY"

Example Response

{
  "data": [
    {
      "id": "01HQ8DJJAZW067WSTRM6M7EWB3",
      "type": "updates",
      "attributes": {
        "entity": {
          "id": "33302047",
          "type": "organization"
        },
        "eventType": "change",
        "collection": "activities",
        "publishedAt": "2024-05-16T14:45:00+02:00"
      },
      "relationships": {
        "organization": {
          "data": {
            "type": "organizations",
            "id": "33302047"
          }
        }
      }
    }
  ],
  "included": [
    {
      "type": "organizations",
      "id": "33302047",
      "attributes": {
        "identifiers": {
          "tradeRegister": {
            "system": "tradeRegister",
            "value": "33302047"
          }
        }
      },
      "links": {
        "self": "https://api.company.info/v1/organizations/33302047"
      }
    }
  ],
  "links": {
    "first": "...?page[number]=1&page[size]=100",
    "last": "...?page[number]=1&page[size]=100",
    "self": "...?page[number]=1&page[size]=100"
  },
  "meta": {
    "totalResults": 1,
    "totalPages": 1
  }
}

⚠️ Constraints

  • The filter[date][from] parameter is required.
  • The maximum time range between from and to is 1 year (8766 hours).
  • The from date cannot be in the future.
  • The to date must be after the from date and cannot be in the future.

📦 Supported Collections

Collections define which data fields of an entity you want to monitor for changes. The available collections depend on the entity type.

Organization Collections

CollectionDescription
activitiesBusiness activities (SBI codes)
addressVisiting address
authorized-capitalAuthorized capital
contactContact details
contributed-capitalContributed capital
correspondence-addressCorrespondence address
dissolution-and-liquidationDissolution and liquidation events
insolvency-publicationsInsolvency publication records
insolvency-statusInsolvency status
issued-capitalIssued capital
legal-formLegal form
lifecycleLifecycle status
main-branchMain branch data
main-branch--activitiesMain branch activities
main-branch--addressMain branch address
main-branch--contactMain branch contact
main-branch--correspondence-addressMain branch correspondence address
main-branch--lifecycleMain branch lifecycle
main-branch--nameMain branch name
main-branch--personnelMain branch number of employees
main-branch--trade-namesMain branch trade names
nameOrganization name
rsinRSIN number
statutory-seatStatutory seat
extension--activities--company-infoExtended activities data (Company.info source)
extension--activities--trade-registerExtended activities data (Trade Register source)
extension--activity-summaryActivity description summary
extension--contact-personContact person data
extension--financialsFinancial data
extension--managementManagement data
extension--number-of-branchesNumber of branches
extension--ownership-structureOwnership structure
extension--size-indicatorsSize indicators
internal--combined-name-changeCombined name change tracking
internal--dissolution-and-liquidationInternal dissolution and liquidation tracking

Branch Collections

CollectionDescription
activitiesBusiness activities (SBI codes)
addressVisiting address
branch-transferBranch transfer data
contactContact details
correspondence-addressCorrespondence address
lifecycleLifecycle status
main-branchMain branch data
nameBranch name
personnelNumber of employees
trade-namesTrade names
extension--transfersTransfer data

🔢 Pagination

The API uses JSON:API-style pagination with meta and links objects.

Request Parameters

ParameterTypeDescription
page[number]integerThe page number you want to retrieve (1-based, default: 1).
page[size]integerHow many records per page.

Default and maximum values differ by resource type:

ResourceDefault page[size]Maximum page[size]
Lists & Items1020
Updates100200

Response Fields

"meta": {
  "totalResults": 50,
  "totalPages": 5
},
"links": {
  "first": "...?page[number]=1&page[size]=10",
  "last": "...?page[number]=5&page[size]=10",
  "self": "...?page[number]=2&page[size]=10",
  "next": "...?page[number]=3&page[size]=10",
  "prev": "...?page[number]=1&page[size]=10"
}
  • Use links.next until it no longer appears or until you have all records.
  • Use totalResults and totalPages to build progress indicators or pagination controls in your UI.

🔄 Typical Polling Workflow

Here is a recommended workflow for continuously monitoring changes:

  1. Create a list (Endpoint 1) — do this once.
  2. Add items (Endpoint 5) — add the organizations/branches you want to watch, specifying collections and event type.
  3. Poll for updates (Endpoint 9) — periodically call the list updates endpoint with filter[date][from] set to your last poll time.
  4. Process updates — for each update, use the entity.id and collection fields to determine what changed, then fetch the latest data from the NL Organizations Profile API.
  5. Repeat — adjust filter[date][from] to the timestamp of your last successful poll.

Example Polling Call (Daily)

curl -X GET "https://api.company.info/nl/organizations/monitoring/v1/lists/01HX6V58G64VJHWRDEJF0YKZ85/updates?filter[date][from]=2024-05-15T00:00:00Z&filter[date][to]=2024-05-16T00:00:00Z&page[size]=200" \
  -H "X-API-KEY: YOUR_API_KEY"

⚠️ Rate Limiting / Other Limitations

ConstraintLimit
Lists per customer100
Items per single POST request1000
List name length50 characters (alphanumeric)
Update date rangeMaximum 1 year (8766 hours)
Entity ID (organization)8-digit number
Entity ID (branch)12-digit number
❗️

Some environments may enforce additional rate limits per API key.


⚠️ Possible errors / unexpected behavior

Below is a table with the most common HTTP error responses.

StatusErrorDescriptionHow to solve
400Bad RequestValidation error (invalid entity ID, collection, date range, exceeded limits)Validate parameter names and formats. Check that entity IDs are 8 or 12 digits and collections are valid for the entity type.
401UnauthorizedMissing or invalid credentialsEnsure X-API-KEY or Authorization: Bearer <token> is present, not expired, and has sufficient permissions.
403ForbiddenInsufficient permissions for the operationCheck that your API key is authorized for the Monitoring API.
404Not FoundList or item not foundConfirm the list_id / item_id exists and belongs to your customer account.
500Internal Server ErrorUnexpected server errorRetry the request after some time. If it persists, contact support with X-Correlation-Id.

Example Error Response

{
  "errors": [
    {
      "status": "400",
      "code": "validation",
      "title": "Bad Request",
      "detail": "invalid entity ID"
    }
  ]
}

🛠️ Try it yourself!

Ready to try it out? Head over to our API reference where you can easily test the API yourself.

From there, you can:

  • Explore endpoints
  • Play with example requests and responses
  • See schemas and parameter details
  • Use your own API key to test real responses

🔤 Glossary

TermDefinition
ListA named container grouping monitoring items together. Each customer can have up to 100 lists.
ItemA specific entity (organization or branch) being monitored within a list, along with its event type and collections.
UpdateA change event generated when a monitored collection on a watched entity is modified. Only visible for changes after the item was placed on a list.
CollectionA category of data fields on an entity (e.g., name, activities, address). Collections define what is being tracked.
Event TypeThe kind of change being monitored: change (data modification).
Trade Register IDOfficial identifier issued by the Dutch Chamber of Commerce (KvK). 8 digits for organizations, 12 digits for branches.
ULIDUniversally Unique Lexicographically Sortable Identifier — used for list and item IDs.
JSON:APIA specification for building APIs in JSON with consistent structure for data, included, meta, links, and errors.
PollingThe practice of periodically calling the updates endpoint to check for new changes.
Side-loadingJSON:API convention of including related resources in the included array to reduce the need for additional requests.
RFC 3339A date/time format standard (e.g., 2024-05-15T00:00:00Z) used for all date parameters in this API.