- Developer newsUpdates to the API
- IntroductionAbout the Companies V2 API
- Company searchSearch for a company by name or number
- Global searchSearch for a company globally
- Lite ProfileBasic company verification details
- Enhanced ProfileCompany profiles with representatives and shareholders
- Filing searchOrder registry extracts and filings
- About testingInformation about the Kyckr V2 test environment
- Supported jurisdictionsJurisdictions and regional codes
Luxembourg Enhanced Profile – Shareholder Data Improvements
Overview
Luxembourg Enhanced Profiles now include much richer shareholder data. We've moved from the European Business Register (EBR) network to a direct integration with the Luxembourg Business Register (LBR).
You'll get structured data directly from the LBR's French Trade Registry Extract (Extrait du registre de commerce français), with more detail and better structure for Luxembourg companies.
Key improvements
Fully fielded shareholder data
Before, you only got shareholders listed as generic "Partner" references with no ownership details. Now you get complete shareholding information:
- Share counts – Exact number of shares held by each shareholder
- Ownership percentages – Calculated ownership stakes for each shareholder
- Share class details – Complete information about different share classes (parts sociales)
- Shareholder details – Full corporate information including registration numbers and structured addresses
Before (EBR integration)
Shareholders appeared only as corporate representatives with role "Partner":
{
"data": {
"representatives": {
"corporations": [
{
"isActive": true,
"name": "EXAMPLE HOLDINGS S.à r.l.",
"registeredAddress": {
"buildingName": "123 Example Street",
"fullAddress": "123 Example Street"
},
"role": {
"original": "Partner"
},
"type": "Corporation"
},
{
"isActive": true,
"name": "EXAMPLE INVESTMENTS S.A.S.",
"registeredAddress": {
"buildingName": "456 Sample Road",
"fullAddress": "456 Sample Road"
},
"role": {
"original": "Partner"
},
"type": "Corporation"
}
]
}
}
}After (LBR direct integration)
Shareholders now appear with complete ownership information in the capital array:
{
"data": {
"capital": [
{
"classCode": "parts sociales de classe A",
"classDescription": "parts sociales de classe A",
"description": "parts sociales de classe A",
"quantity": 10000000,
"type": "parts sociales de classe A",
"shareholdings": [
{
"count": 4249440,
"percentage": "42.49",
"shareholders": {
"corporations": [
{
"name": "EXAMPLE HOLDINGS S.à r.l.",
"registrationNumber": "B123456",
"type": "Corporation",
"address": {
"city": "Luxembourg",
"country": "Luxembourg",
"fullAddress": "123, Example Street, Luxembourg, 1234, Luxembourg",
"postcode": "1234",
"rawAddressLines": [
"123",
"Example Street",
"Luxembourg",
"1234",
"Luxembourg"
],
"streetName": "Example Street",
"streetNumber": "123"
}
}
]
}
},
{
"count": 5750560,
"percentage": "57.51",
"shareholders": {
"corporations": [
{
"name": "EXAMPLE INVESTMENTS S.A.S.",
"registrationNumber": "789123456",
"type": "Corporation",
"address": {
"city": "Paris",
"country": "France",
"fullAddress": "456, Sample Road, Paris, 75001, France",
"postcode": "75001",
"rawAddressLines": [
"456",
"Sample Road",
"Paris",
"75001",
"France"
],
"streetName": "Sample Road",
"streetNumber": "456"
}
}
]
}
}
]
}
]
}
}Multiple share classes
Many Luxembourg companies have multiple share classes. You'll see complete information for each one:
{
"data": {
"capital": [
{
"classCode": "parts sociales de classe A",
"classDescription": "parts sociales de classe A",
"quantity": 10000000,
"shareholdings": [ /* ... */ ]
},
{
"classCode": "parts sociales de classe B",
"classDescription": "parts sociales de classe B",
"quantity": 10000000,
"shareholdings": [ /* ... */ ]
},
{
"classCode": "parts sociales de classe C",
"classDescription": "parts sociales de classe C",
"quantity": 10000000,
"shareholdings": [ /* ... */ ]
}
]
}
}Ownership percentage calculation
The percentage field represents ownership within that specific share class only.
Important: In V2, percentages are calculated per share class, not across all share classes combined. This differs from V1 where the percentage represents total ownership across all classes.
For example:
- Class A has 10,000,000 shares total
- Shareholder 1 holds 4,249,440 Class A shares
- Calculated percentage for Class A:
4,249,440 / 10,000,000 = 42.49%
If the same shareholder also holds shares in Class B and Class C, each shareholding will have its own percentage calculated relative to that specific share class total.
Rich shareholder metadata
The LBR has exceptionally detailed shareholder data. We analyzed a sample of over 8,000 corporate shareholders from Luxembourg companies and found:
- Luxembourg shareholders: 100% include registration numbers
- Cayman Islands shareholders: 93% include registration numbers
- United States shareholders: 99% include registration numbers
- United Kingdom shareholders: 100% include registration numbers
You get registration numbers, registration authorities, and foreign legal forms for shareholders across 69 countries. This makes Luxembourg Enhanced Profiles great for ownership analysis and corporate structure investigations—you can trace shareholders across jurisdictions using reliable identifiers.
Future enhancement: We're working on normalizing country names and foreign registration authorities to include ISO country codes alongside registration numbers. This will make it easier to search for foreign shareholders across Kyckr's global network.
Shareholding data availability
Variable capital companies: Some Luxembourg companies have variable capital structures. For these, the shareholdings details may be empty.
Joint shareholders: Sometimes all shareholders hold shares jointly rather than individually. When this happens, you'll see all the shareholders listed in a single shareholdings item without specific share counts or percentages—the registry doesn't document the exact distribution among joint shareholders.
Activity data now included
Luxembourg Enhanced Profiles now include economic activity information with NACE classification codes:
{
"data": {
"activities": [
{
"code": "64.202",
"description": "Sociétés de participation financière (Soparfi)",
"type": "Primary"
}
],
"activityDeclarations": [
{
"declaration": "La société a pour objet la prise de participations, sous quelque forme que ce soit...",
"declarationDescription": "Objet social",
"language": "fr"
}
]
}
}This helps you quickly identify the company's business sector and classification.
The activityDeclarations array contains the full text of the company's business purpose (objet social) as stated in the Luxembourg Trade Register extract. The declaration field contains the complete French text describing what the company is authorized to do, while declarationDescription indicates which section of the registry document it comes from (e.g., "Objet social").
Company status derivation
Important: The Luxembourg Business Register doesn't provide an explicit company status field in their extracts. We derive the status by analyzing negative information in the registry documents:
- active – Default status when no negative indicators are present (96% of companies)
- distressed – Bankruptcy declaration (faillite) information is present in the extract
- in_liquidation – Voluntary liquidation information is present in the extract
- deregistered – The document is a deregistration certificate
The status field represents our interpretation of the company's state based on structured data from the French Trade Registry Extract (Extrait du registre de commerce français).
Active company (no negative information):
{
"data": {
"status": {
"original": "active"
}
}
}Company in bankruptcy:
{
"data": {
"status": {
"original": "distressed"
}
}
}This lets you quickly assess a company's state without parsing the underlying bankruptcy or liquidation sections.
Additional changes
Address structure improvements
Addresses now have more granular structure with separated components. This makes it easier to work with individual address fields:
New fields:
rawAddressLines– Array of address components as they appear in the registrystreetNumber– Building/street numberstreetName– Street namecity– City namecountry– Country namepostcode– Postal codeisoCode– ISO country code
Before:
{
"fullAddress": "123 Example Street, Luxembourg, 1234, Luxembourg",
"buildingName": "123 Example Street",
"type": "Address of the local main office"
}After:
{
"fullAddress": "123, Example Street, Luxembourg, 1234, Luxembourg",
"type": "registered",
"isoCode": "lu",
"rawAddressLines": [
"123",
"Example Street",
"Luxembourg",
"1234",
"Luxembourg"
],
"streetNumber": "123",
"streetName": "Example Street",
"city": "Luxembourg",
"country": "Luxembourg",
"postcode": "1234"
}Representative role terminology
Representative roles now use French terminology from the LBR:
Changes:
"Administrator / Manager"→"Administrateur"(Manager)"Everyday management responsible"→"Gérant délégué à la gestion journalière"(Delegate manager for daily management)"Partner"→ Now appears in capital shareholdings structure instead
Registration authority
The registration authority name has been updated to reflect the direct LBR integration:
Before:
{
"registrationAuthority": "Registre de Commerce et des sociétés"
}After:
{
"registrationAuthority": "Luxembourg Business Register"
}Date field changes
The foundationDate field has been replaced with incorporationDate to align with the data available from the LBR:
Before:
{
"data": {
"foundationDate": {
"normalized": "2016-06-02",
"original": "2016-06-02"
}
}
}After:
{
"data": {
"incorporationDate": {
"normalized": "2016-06-02",
"original": "2016-06-02"
}
}
}Example request
# Enhanced Profile for Luxembourg company (V2)
curl -X GET "https://api.kyckr.com/v2/companies/LU|QjEyMzQ1Ng==/enhanced" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"