Luxembourg Company Registry (LBR / RCS) API and MCP — Company Profile by RCS Number
Send an RCS number and get the company as structured JSON: name, status, legal form, registration date, address broken into street, postal code and city, trade names, NACE code with description, and the EUID.
- You send
- a Luxembourg RCS number, or the link to the company page
- You get back
- status, legal form, registration and deletion date, address, trade names, NACE code and EUID
- Coverage
- Luxembourg — entities on LBR / RCS.
- Price
- 5 pts — $5 per 1,000
- Charged only when the record resolves. A lookup that finds nothing is not billed.
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 LBR / RCS and read the record | 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 | $5 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. |
human | string | Readable summary of the record. |
total_points | number | Points charged for the run. |
machine.company.registration_number | string | RCS number. |
machine.company.name | string | Company name. |
machine.company.status | string | Status, e.g. Active. |
machine.company.address | string | Registered address. |
machine.company.url | string | Link to the company page on the register. |
machine.company.company_type | string | Legal form. |
machine.company.incorporation_date | string | Registration date (YYYY-MM-DD). |
machine.company.deletion_date | null | Empty in the sample because the company is active; expect a date for deleted (radiée) companies. |
machine.company.status_badge | null | Empty in the sample. |
machine.company.street | string | Street. |
machine.company.postal_code | string | Postal code. |
machine.company.city | string | City. |
machine.company.trade_names[] | array | Trade names. |
machine.company.trade_name_abbreviations[] | array | Trade-name abbreviations; empty in the sample. |
machine.company.nace_code | string | NACE activity code. |
machine.company.nace_description | string | NACE description. |
machine.company.euid | string | European unique identifier. |
machine.company.beneficial_owners | null | Empty in the sample. |
machine.company.filings | null | Empty in the sample; see Luxembourg company filings for publications. |
machine.blocked | boolean | Whether the register refused the request. |
machine.pages_opened | number | Register pages read for the run. |
machine.proxy_traffic_bytes | number | Size of the data transferred for the run, in bytes. |
Example response
A real response, as returned.
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "lu_company",
"company": "B82454",
"company_id": "B82454",
"human": "# Luxembourg — LBR / RCS — company\n\n- **Number:** B82454\n- **Pages opened:** 1\n- **Proxy traffic:** 69.5 KB\n- **Name:** ArcelorMittal\n- **Status:** Active\n- **Type:** Société anonyme\n- **Registered:** 2001-06-21\n- **Address:** 24, Boulevard d'Avranches, 1160 Luxembourg",
"machine": {
"company": {
"registration_number": "B82454",
"name": "ArcelorMittal",
"status": "Active",
"address": "24, Boulevard d'Avranches, 1160 Luxembourg",
"url": "https://www.lbr.lu/mjrcs-web-front/consult-company/B82454",
"company_type": "Société anonyme",
"incorporation_date": "2001-06-21",
"deletion_date": null,
"status_badge": null,
"street": "24, Boulevard d'Avranches",
"postal_code": "1160",
"city": "Luxembourg",
"trade_names": [
"ArcelorMittal"
],
"trade_name_abbreviations": [],
"nace_code": "70.100",
"nace_description": "Activities of head offices",
"euid": "LURCSL.B82454",
"beneficial_owners": null,
"filings": null
},
"blocked": false,
"pages_opened": 1,
"proxy_traffic_bytes": 71204
},
"total_points": 5
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
One company per request. Pass the registration number or the link to the record on the register.
curl -X POST https://api.neuralverge.ai/functions/v1/run-lu-companies \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"company":"B82454"}'What teams use it for
Where this field shows up in an actual workflow.
Confirm status and legal form, and see whether a company has been struck off or is in bankruptcy.
Use the EUID to match the same company across European registers.
Check legal form and NACE code of Luxembourg holding and head-office entities.
Fill address, legal form and registration date from an RCS number.
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.
- —Beneficial owners and filings are null in this record.
- —Use Luxembourg company filings for the RESA publications of a company.
- —Address parts are returned only when the register shows them.
Questions, answered
The RCS number, such as B82454, or the link to the company page.
Related sources
Try luxembourg company on your own data
One request format across every source in the catalog.