nvNeuralVerge
Corporate registry

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

Ways to get this data

Three approaches teams use today, and where each one runs into trouble.

ApproachWhat it takesCostTrade-off
LBR / RCS directlyOpen the company on LBR / RCS and page through the listUsually free, sometimes per-documentA different interface, language and data shape for every country you add
Collecting it yourselfBuild and host a crawler per register, then keep each one aliveInfrastructure and maintenanceRegisters change their pages without warning, and nobody is on the hook when yours breaks
NeuralVergeOne request, the same shape as every other source in the catalog$1 per 1,000, misses not billedCovers Luxembourg — other countries are separate sources with the same request format
Response

What you get back

Every field in the example response below.

FieldTypeDescription
session_idstringId of this run, for tracing.
kindstringSource type of the response.
companystringThe identifier you sent.
company_idstringThe identifier as the register uses it.
max_itemsnumberThe cap you set on returned records.
start_pagenumberResults page the listing started from.
partialbooleanWhether the result set is incomplete.
humanstringReadable summary with the number of results.
total_pointsnumberPoints charged: one per returned record.
machine.total_itemsnumberRecords returned in this batch.
machine.first_itemobjectThe first returned record, same shape as one entry of items.
machine.items[]arrayThe returned records.
machine.total_foundnumberMatches the register reports for the search; null when it does not report one.
machine.page_countnumberResult pages read.
machine.blockedbooleanWhether the register refused the request.
machine.proxy_traffic_bytesnumberSize of the data transferred for the run, in bytes.
machine.items[].registration_numberstringEmpty string in the sample; the company is identified by the company field.
machine.items[].statusnullNull for publications.
machine.items[].addressnullNull for publications.
machine.items[].company_typenullNull for publications.
machine.items[].incorporation_datenullNull for publications.
machine.items[].idstringPublication id.
machine.items[].publication_numberstringRESA publication number.
machine.items[].datestringPublication date (YYYY-MM-DD).
machine.items[].typestringPublication type, e.g. Annual accounts.
machine.items[].namestringSame as type.
machine.items[].descriptionstringPublication description.
machine.items[].details[]arrayDetail lines, e.g. the accounting exercise; empty when there are none.
machine.items[].consultstringHow the publication is consulted, e.g. By mention.
machine.items[].urlstringLink to the entry on the register.
Response

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
}
Integration

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}'
Use cases

What teams use it for

Where this field shows up in an actual workflow.

Track annual accounts

See when accounts were published and for which exercise.

Monitor corporate events

Watch for new publications on a Luxembourg entity.

Due-diligence timeline

Build a dated list of what a company has published.

Compliance checks

Check that expected publications appear on schedule.

Coverage & limits

Coverage, freshness and limits

What this source covers, how fresh it is, and where it stops.

Coverage

Luxembourg — entities on LBR / RCS.

Freshness

Read at request time, so the answer reflects the register as it stands when you ask.

Handling

LBR / RCS is a public register. Every response carries the source URL it was read from and a session id you can trace.

What it will not do
  • —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.
FAQ

Questions, answered

Yes.

Related

Related sources

Try luxembourg company filings on your own data

One request format across every source in the catalog.

Get started