Search companies (AT + DE)
search_companiesBeispiel: „Welche aktiven GmbHs in Oberösterreich haben eine Bilanzsumme über 5 Mio. €?“
Find companies across the Austrian Firmenbuch and the German Handelsregister - START HERE for any company lookup. Read-only.
Parameters:
- filters (optional): every field optional, AND-combined. Shared core (both
countries): name (substring), query (MEANING-based hybrid search over the
registered purpose - both countries), status (active|inactive|all, default all),
legal_form, bundesland, city, postal_code (prefix; AT PLZ 4-digit, DE 5-digit),
near {place | postal_code, radius_km} (radius search, matches from EVERY queried
country within the radius - works across the border), nace_section (A-U; OENACE
== WZ == NACE Rev. 2, so one industry code filters both countries), gegenstand
(literal substring over the registered activity text), manager_name (person
search), company_ids (prefixed watchlist, e.g. ["AT:123456a",
"DE:D2601_HRB135076"], max 100), nace_division/group/class, founded_year_min/max,
and the balance-sheet screens size_gkl (AT W/K/M/G or DE kleinst/klein/mittel/
gross, translated per register), bilanzsumme_min/max, equity_ratio_min/max
(fraction, 0.35 = 35 %), has_guv, growth_profile - in Germany these match only
companies with a parsed Jahresabschluss (rollout per Bundesland, see
get_coverage; a notice states the scope). AT-only today (see describe_fields
capabilities): revenue/employees ranges, has_guv_latest, last_filing_year_min,
gf_age_min, event_signal/since/until. DE-only: registergericht, capital_min/max
(Stammkapital). Country aliases (geschaeftszweig, oenace_*, wz_section, fnrs,
stammkapital_*) are accepted.
- sort (optional): {field, descending}. AT fields: bilanzsumme (default), revenue,
equity_ratio, employees, last_filing_year, revenue_growth_1y/3y/5y, distance.
DE fields: name, register_nummer, capital, bilanzsumme, equity_ratio, revenue
(financial sorts rank the companies with figures first). A country that cannot
sort by the requested field returns its default order (reported in notices).
- page (default 1), page_size (default 25).
- after (optional): KEYSET paging for bulk extraction - single country only
(cursors are per register). Pass "" to start, then the country's next_after
from per_country.
- exact_count (optional, default false): force exact totals (costs a full scan).
- country (optional, default "all"): "AT" | "DE" | "all".
Returns {countries, total: {AT, DE, combined}, results, per_country, notices}.
``results`` are compact cards, each with ``country`` and the prefixed
``company_id``; with country="all" the list is AT block then DE block - each
country keeps its own ranking (no fake interleave). ``per_country`` carries each
register's own envelope (exact totals or lower bounds, applied_filters,
relaxations on zero hits, query_mode, next_after). A filter one country does not
support excludes that country and says so in ``notices`` - it is never silently
dropped; an unreachable backend appears in ``countries_unavailable`` instead of
failing the call. Never report a German company's financials as zero - the German
Jahresabschluss rollout is per Bundesland, so a company without figures has not
been processed yet or files none (see get_coverage and
financials.reporting_status in get_company_details).
For one company's full profile use get_company_details; for a downloadable list
use export_companies_csv; for dataset completeness use get_coverage.Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "search_companies"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| sort | No | ||
| after | No | ||
| country | No | all | |
| filters | No | ||
| page_size | No | ||
| exact_count | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||