Germany Company Registry & Financials Scraper (Handelsregister) avatar

Germany Company Registry & Financials Scraper (Handelsregister)

Pricing

from $12.75 / 1,000 results

Go to Apify Store
Germany Company Registry & Financials Scraper (Handelsregister)

Germany Company Registry & Financials Scraper (Handelsregister)

Scrape German companies from the Handelsregister: register court and number (HRB/HRA), legal form, status, registered office, share capital, business purpose, former names, published document availability including annual financial statements, and officers (managing directors /...

Pricing

from $12.75 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

19 days ago

Last modified

Share

Germany Company Registry & Financials Scraper (Handelsregister)

Germany Company Registry & Financials Scraper (Handelsregister)

Here is one real result, with every field the actor returns (the officers array is trimmed with a note; each entry in the real record combines the officer name, role and registered city):

{
"name": "Alber & Bayer GmbH & Co KG",
"registerId": "HRA 400066",
"registerCourt": "Amtsgericht Stuttgart",
"registerType": "HRA",
"registerNumber": "400066",
"state": "Baden-Württemberg",
"city": "Albstadt",
"status": "aktuell",
"legalForm": "Kommanditgesellschaft (KG)",
"capitalAmount": null,
"capitalCurrency": null,
"streetAddress": "Wiesenstraße 86",
"postalCode": "72461",
"addressCity": "Albstadt",
"purpose": null,
"representationRule": "Ist nur ein Liquidator bestellt, vertritt er allein. Sind mehrere Liquidatoren bestellt, vertreten sie gemeinsam.",
"officersCount": 5,
"managingDirectors": "Ferdinand Metzger",
"topOfficerName": "Ferdinand Metzger",
"topOfficerRole": "Prokurist(in)",
"officers": ["... 5 officer entries, each combining name, role and registered city (trimmed) ..."],
"formerNames": ["Alber & Bayer K.-G."],
"availableDocuments": ["AD", "CD", "HD", "DK", "UT", "VÖ", "SI"],
"hasPublishedFinancialStatements": true,
"financialStatementsNote": "Annual financial statements (Jahresabschluss) are on file for this company and are published as documents in the German company register / Bundesanzeiger.",
"searchTerm": "Bayer",
"aiCompanySummary": "Alber & Bayer GmbH & Co KG is a limited partnership based in Albstadt, Baden-Württemberg. The company is currently active and is managed by Ferdinand Metzger, with a total of five officers. It has published financial statements and was formerly known as Alber & Bayer K.-G.",
"aiRiskLevel": "none",
"aiRiskFlags": [],
"aiRiskRationale": "The company is currently active, has published financial statements, and does not show any signs of liquidation or insolvency.",
"aiIndustry": "Textile Manufacturing",
"aiSector": "Manufacturing",
"aiIndustryTags": ["textiles", "clothing", "fabric production"],
"source": "Handelsregister (German Company Register)",
"observedAt": "2026-08-14T07:56:54.991Z"
}

The most complete German company register scraper available. It returns every field the Handelsregister exposes per company, from register court and number, legal form, status and registered office to share capital, business purpose, former names, published document availability (including annual financial statements) and the full list of officers, plus optional AI KYB enrichment, and gives you filters for name, register type, state and city to target exactly the companies you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches the German company register (Handelsregister) for each name or keyword you pass, applies the register type, state and city filters, and writes one normalized record per company to the run's dataset. When enrichOfficers is on (default), each company's structured register extract is fetched to add legal form, share capital, registered address, business purpose, representation rule and the full list of officers (managing directors, board members, authorised signatories). Each record also reports whether annual financial statements are on file. Missing source values are returned as null, and optional AI add-ons (English KYB summary, risk flags, industry classification) run per company when enabled on a paid plan.

Data covers companies registered across Germany. The Handelsregister is bot protected, so the actor runs over Apify RESIDENTIAL proxy in Germany.

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 3 companies matching Bayer, enriched with officers and all AI add-ons.

{
"companyNames": ["Bayer"],
"maxCompanies": 3,
"matchMode": "all",
"enrichOfficers": true,
"withAiCompanySummary": true,
"withAiRiskFlags": true,
"withAiIndustry": true
}

Pass several names in companyNames to cover them in one run. companyNames is required. maxCompanies defaults to 10.

Input reference

FieldTypeRequiredDefaultDescription
companyNamesstring[]yes["Siemens Energy"]Company names or keywords to search. One run searches every term.
matchModeenumnoallHow keywords match: all (contains all), any (at least one), exact (exact name).
registerTypeenumno(all)Restrict to one register: HRB (corporations), HRA (partnerships/sole traders), GnR, PR, VR, GsR.
statesstring[]no(all)Limit to German federal states, for example Bayern, Berlin.
citystringno(none)Limit to companies whose registered office is in this city.
includeDeletedbooleannofalseAlso return companies struck off the register (gelöscht).
enrichOfficersbooleannotrueFetch each company's register extract to add legal form, capital, address, purpose and officers. Recommended.
maxCompaniesintegerno10Maximum companies to return across all search terms.
withAiCompanySummarybooleannofalsePaid add-on. Adds aiCompanySummary. Charged only on usable output. Requires a paid Apify plan.
withAiRiskFlagsbooleannofalsePaid add-on. Adds aiRiskLevel, aiRiskFlags, aiRiskRationale. Charged only on usable output. Requires a paid plan.
withAiIndustrybooleannofalsePaid add-on. Adds aiIndustry, aiSector, aiIndustryTags. Charged only on usable output. Requires a paid plan.

Filters combine with logical AND. Empty filters are ignored.

Output reference

One dataset item per company. Types: string, integer, boolean, string[], or null when the source value is absent.

FieldTypeDescription
namestringCompany name.
registerIdstringFull register identifier (type plus number).
registerCourtstringRegister court (Amtsgericht).
registerTypestringRegister type (HRB, HRA, and so on).
registerNumberstringRegister number.
statestringFederal state.
citystringRegistered office city (from search listing).
statusstringRegister status, for example aktuell, or deleted.
legalFormstringLegal form, for example GmbH, AG, KG, or null.
capitalAmountnumberShare capital amount (from extract), or null.
capitalCurrencystringShare capital currency, or null.
streetAddressstringRegistered street address, or null.
postalCodestringRegistered postal code, or null.
addressCitystringRegistered office city (from extract), or null.
purposestringBusiness purpose (Gegenstand), or null.
representationRulestringRepresentation rule text, or null.
officersCountintegerNumber of officers found.
managingDirectorsstringManaging directors, or null.
topOfficerNamestringName of the primary officer, or null.
topOfficerRolestringRole of the primary officer, or null.
officersstring[]Officer entries, each combining name, role and registered city.
formerNamesstring[]Previous company names, empty array when none.
availableDocumentsstring[]Document types on file (for example AD, CD, HD, DK, UT, , SI).
hasPublishedFinancialStatementsbooleantrue when annual financial statements are on file.
financialStatementsNotestringPlain-English note about financial statement availability.
searchTermstringThe search term this record came from.
aiCompanySummarystringAI English KYB profile. null unless withAiCompanySummary produced output.
aiRiskLevelstringAI risk level. null unless withAiRiskFlags produced output.
aiRiskFlagsstring[]AI red-flag phrases. null/empty unless withAiRiskFlags produced output.
aiRiskRationalestringAI risk rationale. null unless withAiRiskFlags produced output.
aiIndustrystringAI industry label. null unless withAiIndustry produced output.
aiSectorstringAI sector. null unless withAiIndustry produced output.
aiIndustryTagsstring[]AI keyword tags. null unless withAiIndustry produced output.
sourcestringAlways Handelsregister (German Company Register).
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringOn a failed run, a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"companyNames": ["Bayer"], "maxCompanies": 3, "enrichOfficers": true, "withAiCompanySummary": true, "withAiRiskFlags": true, "withAiIndustry": true}). The officers array is trimmed with an explicit note; all values are real:

{
"name": "Alber & Bayer GmbH & Co KG",
"registerId": "HRA 400066",
"registerCourt": "Amtsgericht Stuttgart",
"registerType": "HRA",
"registerNumber": "400066",
"state": "Baden-Württemberg",
"city": "Albstadt",
"status": "aktuell",
"legalForm": "Kommanditgesellschaft (KG)",
"streetAddress": "Wiesenstraße 86",
"postalCode": "72461",
"addressCity": "Albstadt",
"officersCount": 5,
"managingDirectors": "Ferdinand Metzger",
"topOfficerName": "Ferdinand Metzger",
"topOfficerRole": "Prokurist(in)",
"officers": ["... 5 officer entries, each combining name, role and registered city (trimmed) ..."],
"formerNames": ["Alber & Bayer K.-G."],
"availableDocuments": ["AD", "CD", "HD", "DK", "UT", "VÖ", "SI"],
"hasPublishedFinancialStatements": true,
"searchTerm": "Bayer",
"aiCompanySummary": "Alber & Bayer GmbH & Co KG is a limited partnership based in Albstadt, Baden-Württemberg. The company is currently active and is managed by Ferdinand Metzger, with a total of five officers...",
"aiRiskLevel": "none",
"aiRiskFlags": [],
"aiIndustry": "Textile Manufacturing",
"aiSector": "Manufacturing",
"aiIndustryTags": ["textiles", "clothing", "fabric production"],
"source": "Handelsregister (German Company Register)",
"observedAt": "2026-08-14T07:56:54.991Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~germany-company-financials-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"companyNames":["Siemens Energy"],"registerType":"HRB","maxCompanies":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~germany-company-financials-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"companyNames":["BioNTech"],"states":["Rheinland-Pfalz"],"enrichOfficers":true,"maxCompanies":100}'

Apify CLI:

apify call scrapers_lat/germany-company-financials-scraper \
--input '{"companyNames":["BSH Hausgeräte"],"matchMode":"exact"}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per company record returned (result event). See the pricing tab for the current per-result price.
  • Optional AI add-ons (ai_company_summary, ai_risk_flags, ai_industry) are billed separately and only when they produce usable output, and only on paid Apify plans.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run. Upgrade for higher maxCompanies.

FAQ and troubleshooting

A run returned 0 records. Why? No companies matched the name and register/state/city filters. Loosen matchMode to any, remove a filter, or check the spelling. Zero-result runs are not charged.

Does it return actual financial figures? It reports whether annual financial statements (Jahresabschluss) are on file (hasPublishedFinancialStatements) and which document types are available. The full statements are published as documents in the register / Bundesanzeiger; this actor returns the structured register data and document availability, not the parsed figures.

Why is capitalAmount or purpose null? Not every register extract exposes share capital or a business purpose (partnerships often omit capital). Missing source values are returned as null, never invented.

How do I get officers and address? Keep enrichOfficers on (default). Officers, legal form, capital, address and purpose come from each company's structured register extract.

Do the AI fields cost extra? Yes. They are opt-in paid add-ons, billed only when they return usable output, and disabled on free Apify plans.

Is this an official Handelsregister tool? No. This actor is independent and has no affiliation with the German company register. It reads only data that is publicly available. Use it in accordance with the source's terms of service.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with the German company register (Handelsregister). Accesses only publicly available data. Use in accordance with the source's terms of service.