Handelsregister.de [$8💰] German Company Registry avatar

Handelsregister.de [$8💰] German Company Registry

Pricing

from $8.00 / 1,000 company records

Go to Apify Store
Handelsregister.de [$8💰] German Company Registry

Handelsregister.de [$8💰] German Company Registry

Scrape the official German company register (handelsregister.de) — register number, court, status, legal form, registered address, officers with roles & birth dates, representation rules, and name history. Precise lookups or keyword search with filters. JSON or CSV out.

Pricing

from $8.00 / 1,000 company records

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

Handelsregister Scraper — German Company Registry (handelsregister.de)

Search the official German company register and get clean, structured company records — register number, court, legal form, registered address, officers with roles and birth dates, representation rules, and the full name history. One row per company, straight from the primary source German authorities maintain.

How it works

How the Handelsregister Scraper works

✨ Why use this scraper?

  • Primary-source data — reads the official Registerportal of the German federal states, not a third-party aggregator with stale copies.
  • Structured officers — every record can include Geschäftsführer, Prokuristen, Vorstände and liquidators with role, full name, birth date, and city, parsed from the official XJustiz "SI" document.
  • All six registers — HRA, HRB, GnR, PR, VR, and GsR, including deleted (gelöscht) entries for due-diligence work.
  • Register history included — former company names and former seats, numbered in order, for tracing renames and relocations.
  • Precise or broad — look up one exact register number at one court, or fan out multiple keyword queries with legal-form, city, postal-code, and federal-state filters in a single run.
  • KYC/KYB-ready shape — one JSON row per company with a stable registerId (court + type + number), the natural key German compliance workflows expect.

🎯 Use cases

WhoWhat they do with it
KYC / compliance teamsVerify counterparties against the official register: status, officers, representation rules
B2B lead-gen & sales opsBuild German company lists by city, legal form, or industry keyword — with decision-maker names
Credit & risk analystsTrack register status and officer changes for portfolios of German counterparties
Law firms & insolvency practitionersPull register facts and name history without clicking through the portal case by case
Data & investigative journalistsTrace networks of officers and renamed entities across register courts
M&A / market researchersMap subsidiaries and legal-entity structures of German groups

📥 Supported inputs

InputExampleWhat it does
searchQueries["Siemens", "Bäckerei München"]One portal search per entry (each capped at 100 results by the portal)
keywordMatchall / any / exactHow the words inside one query combine
registerType + registerNumber + registerCourtHRB + 230633 + MünchenPrecise single-company lookup
legalFormGesellschaft mit beschränkter HaftungFilter by legal form
postalCode / city / states80331 / Hamburg / ["Bayern"]Geographic narrowing
includeDeletedtrueAlso return deleted register entries

Not supported: document downloads other than the structured SI record (AD/CD/HD PDF printouts and the DK document list are not fetched), and bulk full-register dumps — the portal caps every search at 100 results, so coverage comes from running several narrower queries.

🔄 How it works

  1. Opens a session on the official Registerportal (handelsregister.de) and walks its stateful search flow.
  2. Submits your advanced search — keywords plus any register-type, court, legal-form, and location filters.
  3. Parses the result table: company name, register court, HRA/HRB/GnR/PR/VR/GsR number, seat, state, status, and name history.
  4. Downloads the official SI document (structured XJustiz XML) per company and extracts address, officers, and representation rules — toggle with fetchStructuredData.
  5. Pushes one deduplicated row per company across all your queries, ready as JSON, CSV, or Excel.

⚙️ Input parameters

FieldTypeDefaultDescription
searchQueriesarray["Siemens"]Company-name keywords; one portal search per entry
keywordMatchstringallall words, any word, or exact company name
registerTypestring(all)HRA, HRB, GnR, PR, VR, or GsR
registerNumberstringExact register number
registerCourtstringAmtsgericht name, e.g. München, Charlottenburg (Berlin)
legalFormstringLegal-form label, e.g. Aktiengesellschaft
postalCode / city / streetstringSeat address filters
statesarrayFederal states, e.g. ["Bayern", "Hessen"]
includeDeletedbooleanfalseInclude deleted (gelöscht) entries
fetchStructuredDatabooleantrueDownload + parse the SI record (address, officers, representation)
includeRawXmlbooleanfalseAttach the raw XJustiz XML to each row
maxItemsinteger1000Hard cap on company rows
maxConcurrencyinteger3Parallel portal sessions (one per query)
proxyobjectApify autoDatacenter proxies are sufficient — no anti-bot wall

📊 Output overview

Each dataset row describes one register entry: the search-table facts (name, court, register number, status, history) plus — when fetchStructuredData is on — the parsed official SI record (registered address, officers with roles and birth dates, representation rules, legal form). Fields the register doesn't expose for an entity stay null.

📦 Output sample

{
"type": "company-registration",
"companyName": "AREVA GmbH",
"registerId": "Amtsgericht Fürth HRB 7817",
"registerCourt": "Amtsgericht Fürth",
"registerType": "HRB",
"registerNumber": "7817",
"state": "Bayern",
"seat": "Erlangen",
"status": "active",
"statusRaw": "aktuell",
"history": [
{ "position": 1, "name": "Siemens Nuclear Power GmbH", "seat": "Erlangen" },
{ "position": 2, "name": "Framatome ANP GmbH", "seat": "Erlangen" },
{ "position": 3, "name": "AREVA NP GmbH", "seat": "Erlangen" }
],
"availableDocuments": ["AD", "CD", "HD", "UT", "VÖ", "SI"],
"legalName": "AREVA GmbH",
"legalForm": "Gesellschaft mit beschränkter Haftung (GmbH)",
"address": {
"street": "Paul-Gossen-Str.100",
"houseNumber": null,
"postalCode": "91052",
"city": "Erlangen",
"country": "Deutschland"
},
"representationRules": "Ist nur ein Geschäftsführer bestellt, so vertritt er die Gesellschaft allein. Sind mehrere Geschäftsführer bestellt, so wird die Gesellschaft durch zwei Geschäftsführer oder durch einen Geschäftsführer gemeinsam mit einem Prokuristen vertreten.",
"officers": [
{ "role": "Geschäftsführer(in)", "firstName": "Ulrich", "lastName": "Klapp", "fullName": "Ulrich Klapp", "birthDate": "1974-04-09", "city": "Erlangen", "organisationName": null },
{ "role": "Prokurist(in)", "firstName": "René", "lastName": "Schümer", "fullName": "René Schümer", "birthDate": "1967-05-29", "city": "Erlangen", "organisationName": null }
],
"registerCourtOfficial": "Amtsgericht Fürth",
"searchQuery": "Siemens",
"scrapedAt": "2026-07-16T21:30:12.000Z"
}

🗂 Key output fields

GroupFieldsNotes
IdentitycompanyName, legalName, registerId, registerType, registerNumber, registerCourtregisterId is the stable natural key
Status & locationstatus, statusRaw, seat, state, address.{street, houseNumber, postalCode, city, country}status is normalized to active / deleted
Peopleofficers[].{role, fullName, firstName, lastName, birthDate, city, organisationName}organisationName set when the officer is a company (e.g. general partner GmbH)
GovernancerepresentationRules, legalFormParsed from the official SI record
Historyhistory[].{position, name, seat}Former names and seats in chronological order
MetaavailableDocuments, searchQuery, scrapedAt, siXml (opt-in)availableDocuments lists what the portal offers per entry

❓ FAQ

Why do I get at most 100 results per query? That's a hard cap of the official portal itself, not the scraper. Split a broad name into narrower queries — add a registerType, a city, a legalForm, or per-state runs — and the actor deduplicates rows across queries automatically.

Where do the officer names come from? From the official SI ("Strukturierte Registerinhalte") document — the same structured XJustiz XML the justice administration publishes per register entry. It's fetched per company when fetchStructuredData is on (default).

Does it cover all of Germany? Yes. The Registerportal is the common portal of all federal states, so all ~150 register courts (Amtsgerichte) are searchable, and results span HRA, HRB, GnR, PR, VR, and GsR.

Can I get the AD/HD PDF printouts too? Not in this actor — it fetches the structured SI record, which contains the current register facts in machine-readable form. If you need the certified PDF printouts, open the entry on the portal directly.

Is the data current? Every run queries the live portal, so you see exactly what the register shows at that moment — including entries deleted or renamed yesterday.

Do I need residential proxies? No. The portal is a public government service without an anti-bot wall; default Apify datacenter proxies (or none) work. The actor paces its requests to stay polite.

💬 Support

Found an issue or missing a field? Open an issue on the actor's Issues tab in Apify Console — I usually respond within 24 hours.

🛠 Additional services

Need a custom pipeline on top of this data (officer-change monitoring, matching against your CRM, bulk enrichment with websites/emails), or a scraper for another registry? Reach out via the Issues tab.

🔎 Explore more scrapers

More actors from the same portfolio: Trustpilot, Clutch.co, G2, Idealista, Crunchbase — see the full list on the memo23 profile.


⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the German justice administration, the Registerportal der Länder (handelsregister.de), or any German federal state. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available register information — no authenticated endpoints or paid documents. Register data contains personal data (officer names and birth dates); users are responsible for ensuring their use complies with the portal's terms of use, applicable data-protection law (GDPR — in particular Art. 6(1) lawful-basis requirements for processing officer data), and any contractual obligations of their own organisation.


SEO Keywords

handelsregister scraper, handelsregister api, german company registry scraper, scrape handelsregister.de, german business register api, HRB lookup api, german company data extraction, registerportal scraper, german company officers data, geschäftsführer data api, german kyc data, kyb germany api, german company register export, amtsgericht register search, german trade register scraper, unternehmensregister alternative, north data alternative, german b2b leads, company register germany json, xjustiz parser