Luxembourg Company Publications (RESA) API and MCP — Annual Accounts and Notices
Send an RCS number and get the company's RESA publications as a list, newest first: publication number, date, type, description, details and how the publication is consulted. Set max_items to take only the latest.
- You send
- a Luxembourg RCS number
- You get back
- the RESA publications of the company, newest first: publication number, date, type, details and consult mode
- Coverage
- Luxembourg — entities on LBR / RCS.
- Price
- 1 point per returned record — $1 per 1,000
- Billed per record actually returned, capped by max_items. A request that returns nothing costs nothing.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| LBR / RCS directly | Open the company on LBR / RCS and page through the list | Usually free, sometimes per-document | A different interface, language and data shape for every country you add |
| Collecting it yourself | Build and host a crawler per register, then keep each one alive | Infrastructure and maintenance | Registers change their pages without warning, and nobody is on the hook when yours breaks |
| NeuralVerge | One request, the same shape as every other source in the catalog | $1 per 1,000, misses not billed | Covers Luxembourg — other countries are separate sources with the same request format |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
session_id | string | Id of this run, for tracing. |
kind | string | Source type of the response. |
company | string | The identifier you sent. |
company_id | string | The identifier as the register uses it. |
max_items | number | The cap you set on returned records. |
start_page | number | Results page the listing started from. |
partial | boolean | Whether the result set is incomplete. |
human | string | Readable summary with the number of results. |
total_points | number | Points charged: one per returned record. |
machine.total_items | number | Records returned in this batch. |
machine.first_item | object | The first returned record, same shape as one entry of items. |
machine.items[] | array | The returned records. |
machine.total_found | number | Matches the register reports for the search; null when it does not report one. |
machine.page_count | number | Result pages read. |
machine.blocked | boolean | Whether the register refused the request. |
machine.proxy_traffic_bytes | number | Size of the data transferred for the run, in bytes. |
machine.items[].registration_number | string | Empty string in the sample; the company is identified by the company field. |
machine.items[].status | null | Null for publications. |
machine.items[].address | null | Null for publications. |
machine.items[].company_type | null | Null for publications. |
machine.items[].incorporation_date | null | Null for publications. |
machine.items[].id | string | Publication id. |
machine.items[].publication_number | string | RESA publication number. |
machine.items[].date | string | Publication date (YYYY-MM-DD). |
machine.items[].type | string | Publication type, e.g. Annual accounts. |
machine.items[].name | string | Same as type. |
machine.items[].description | string | Publication description. |
machine.items[].details[] | array | Detail lines, e.g. the accounting exercise; empty when there are none. |
machine.items[].consult | string | How the publication is consulted, e.g. By mention. |
machine.items[].url | string | Link to the entry on the register. |
Example response
A real response, as returned.
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "lu_company_filings",
"company": "B82454",
"company_id": "B82454",
"max_items": 2,
"start_page": 1,
"partial": false,
"human": "# Luxembourg — LBR / RCS — company publications\n\n- **Company:** B82454\n- **Results:** 2 of 112 found\n- **Proxy traffic:** 253.4 KB",
"machine": {
"total_items": 2,
"first_item": {
"registration_number": "",
"status": null,
"address": null,
"company_type": null,
"incorporation_date": null,
"id": "RESA_2026_145.585",
"publication_number": "RESA_2026_145.585",
"date": "2026-07-06",
"type": "Annual accounts",
"name": "Annual accounts",
"description": "Annual accounts — Exercise from 01/01/2025 to 31/12/2025",
"details": [
"Exercise from 01/01/2025 to 31/12/2025"
],
"consult": "By mention",
"url": "https://www.lbr.lu/mjrcs-web-front/consult-company/B82454?tab=publications#RESA_2026_145.585"
},
"items": [
{
"registration_number": "",
"status": null,
"address": null,
"company_type": null,
"incorporation_date": null,
"id": "RESA_2026_145.585",
"publication_number": "RESA_2026_145.585",
"date": "2026-07-06",
"type": "Annual accounts",
"name": "Annual accounts",
"description": "Annual accounts — Exercise from 01/01/2025 to 31/12/2025",
"details": [
"Exercise from 01/01/2025 to 31/12/2025"
],
"consult": "By mention",
"url": "https://www.lbr.lu/mjrcs-web-front/consult-company/B82454?tab=publications#RESA_2026_145.585"
},
{
"registration_number": "",
"status": null,
"address": null,
"company_type": null,
"incorporation_date": null,
"id": "RESA_2026_141.1347",
"publication_number": "RESA_2026_141.1347",
"date": "2026-07-01",
"type": "Report or consolidated report on payments to governments",
"name": "Report or consolidated report on payments to governments",
"description": "Report or consolidated report on payments to governments",
"details": [],
"consult": "By mention",
"url": "https://www.lbr.lu/mjrcs-web-front/consult-company/B82454?tab=publications#RESA_2026_141.1347"
}
],
"total_found": 112,
"page_count": 1,
"blocked": false,
"proxy_traffic_bytes": 259470
},
"total_points": 2
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
Results come back in the same envelope as every other source: a session id, a readable summary, the structured result and the points charged.
curl -X POST https://api.neuralverge.ai/functions/v1/run-lu-company-filings \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"company":"B82454","max_items":2}'What teams use it for
Where this field shows up in an actual workflow.
See when accounts were published and for which exercise.
Watch for new publications on a Luxembourg entity.
Build a dated list of what a company has published.
Check that expected publications appear on schedule.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Luxembourg — entities on LBR / RCS.
Read at request time, so the answer reflects the register as it stands when you ask.
LBR / RCS is a public register. Every response carries the source URL it was read from and a session id you can trace.
- —You get publication entries and details, not the parsed contents of each document.
- —The 'consult' value says how a publication is accessed; some are by mention only.
- —Several fields inherited from the company shape (status, address) are null for publications.
Questions, answered
Yes.
Related sources
Try luxembourg company filings on your own data
One request format across every source in the catalog.