German Company Data
Look up German company identity and registration details, including court, legal form, status, address and directors where available.
Example
{
"company_name": "SAP SE"
} The fields it answers with are listed under Output fields.
Inputs
| Field | Type | Required | What it is |
|---|---|---|---|
court | string | No | Registergericht (German commercial court). Required when providing 'hrb_number'. Example: "Amtsgericht Landsberg a. Lech". |
company_id | string | No | OpenRegister canonical id, e.g. "DE-HRB-F1103-267645". Preferred when known — skips name resolution and consumes one fewer API call. |
hrb_number | string | No | Handelsregister number (e.g. "HRB 2001"). When provided, 'court' is also required — HRB/HRA numbers are per-court and not globally unique. |
company_name | string | No | Company name for fuzzy search via /v1/autocomplete/company. |
Output fields
How reliably each field appears in a successful answer.
| Field | Type | Appears |
|---|---|---|
lei | string or null | Sometimes (present only for some inputs) |
court | string or null | Always (present in every successful answer) |
status | one of active, terminated, unknown | Always (present in every successful answer) |
capital | object or null | Usually (present for most inputs) |
directors | array | Usually (present for most inputs) |
is_active | boolean or null | Always (present in every successful answer) |
company_id | string | Always (present in every successful answer) |
legal_form | string or null | Usually (present for most inputs) |
company_name | string or null | Always (present in every successful answer) |
country_code | string | Always (present in every successful answer) |
register_type | string or null | Always (present in every successful answer) |
terminated_at | string or null | Sometimes (present only for some inputs) |
industry_codes | array | Usually (present for most inputs) |
incorporated_at | string or null | Usually (present for most inputs) |
registered_address | object or null | Usually (present for most inputs) |
registration_number | string or null | Always (present in every successful answer) |
business_description | string or null | Usually (present for most inputs) |
How to call it
The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.
# Needs an API key. max_price_cents caps what this call may cost.
curl -X POST https://api.strale.io/v1/do \
-H "Authorization: Bearer $STRALE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"capability_slug": "german-company-data",
"inputs": {
"company_name": "SAP SE"
},
"max_price_cents": 20
}' {
"tool": "strale_execute",
"arguments": {
"slug": "german-company-data",
"inputs": {
"company_name": "SAP SE"
},
"max_price_cents": 20
}
} import { Strale } from "straleio";
const strale = new Strale({ apiKey: process.env.STRALE_API_KEY! });
const result = await strale.do({
capability_slug: "german-company-data",
inputs: {
"company_name": "SAP SE"
},
max_price_cents: 20,
}); import os
from straleio import Strale, DoRequest
strale = Strale(api_key=os.environ["STRALE_API_KEY"])
result = strale.do(DoRequest(
capability_slug="german-company-data",
inputs={
"company_name": "SAP SE",
},
max_price_cents=20,
)) # No account. The first request answers 402 with the price in USDC;
# an x402 client pays it from your wallet and repeats the request.
curl -i 'https://api.strale.io/x402/v2/german-company-data?company_name=SAP+SE' Limitations
Provider credits and rate limits affect availability
OpenRegister allows 500 credits per rolling 30 days on the configured plan; a name lookup normally uses 11 credits and a `company_id` lookup 10. HTTP 402 indicates exhausted credits and HTTP 429 a short-term rate limit; the tool can be paused until usable credits are restored.
What to do instead: Use `company_id` when known and reuse results within the permitted refresh window to avoid repeated lookups.
UBO data not covered
Beneficial ownership from the German Transparenzregister is not included.
What to do instead: Request beneficial-ownership information directly from the Transparenzregister with authorised access.
Stored registry data can be up to four weeks old
Company records are refreshed at least every four weeks, with daily updates for financials and new incorporations. The tool does not request a live Handelsregister refresh.
What to do instead: For same-day filings, check Handelsregister directly; `provenance.fetched_at` records retrieval time rather than the original filing time.
HRB/HRA numbers require court (Registergericht)
HRB and HRA numbers are unique only within their registration court, so the same number can identify different companies. Both `hrb_number` and `court` are required for a number lookup.
What to do instead: Prefer 'company_id' (OpenRegister canonical, e.g. "DE-HRB-F1103-267645") when known — it skips the autocomplete step and consumes one fewer Free-tier credit.
Bundled checks that include it
- KYB Essentials — Germany €1.50
- KYB Complete — Germany €2.50
- Invoice Verify — Germany €2.50
Related tools
- Australian Company Data €0.05
- Austrian Company Data €0.05
- Belgian Company Data €0.05
- Brazilian Company Data €0.05
- Canadian Company Data €0.80
- Company News €0.05