Search companies (AT + DE)
search_companiesFind 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). AT-only today (see describe_fields
capabilities): nace_division/group, size_gkl, bilanzsumme/revenue/equity_ratio/
employees ranges, growth_profile, has_guv(_latest), last_filing_year_min,
founded_year_min/max, 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. 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 - DE
financial data is not covered yet (see get_coverage).
For one company's full profile use get_company_details; for a downloadable list
use export_companies_csv; for dataset completeness use get_coverage.
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 | |||