Germany Handelsregister Scraper
Pricing
Pay per event
Germany Handelsregister Scraper
Search the official German Handelsregister and export company names, court, HRB/HRA number, seat, status, history, and document metadata.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract structured company-search results from the official German Handelsregister portal.
What does Germany Handelsregister Scraper do?
Germany Handelsregister Scraper searches the public Registerportal der Länder at handelsregister.de and turns visible result rows into clean dataset records.
It supports company-name keyword searches and exact register-number lookups for HRB, HRA, VR, GnR, PR, and GsR entries.
Who is it for?
- 🧾 KYB and AML teams checking German counterparties.
- 🏦 Credit-risk analysts screening company identifiers.
- 🕵️ Corporate-intelligence teams mapping register courts and historical names.
- 🤝 B2B sales operations teams validating legal company names.
- ⚖️ Legal and compliance researchers collecting repeatable public-register evidence.
Why use this scraper?
The Handelsregister web UI is built around JSF forms, sessions, and paginated result tables. This actor automates that flow and exports a dataset that can be filtered, joined, and imported into due-diligence systems.
What data can it extract?
| Field | Description |
|---|---|
| query | Company name, keyword, or register-number label searched |
| queryType | companyName or registerNumber |
| resultRank | Rank within the query |
| companyName | Company or register entry name |
| federalState | German federal state shown by the portal |
| registerCourt | Amtsgericht / register court |
| registerType | HRB, HRA, VR, GnR, PR, or GsR |
| registerNumber | Register number |
| formerCourtOrLocalCode | Additional legacy/local code when visible |
| seat | Company seat/location |
| status | Current/deleted status shown by the portal |
| historyNames | Historical names visible in the result row |
| historySeats | Historical seats visible in the result row |
| availableDocumentTypes | Public action codes such as AD, CD, HD, DK, UT, VÖ, SI |
| sourceUrl | Result page URL |
| retrievedAt | ISO timestamp |
How much does it cost to scrape Germany Handelsregister company data?
This actor uses pay-per-event pricing: a $0.005 start fee plus one charge for each saved company result. Current item pricing is tiered by Apify plan: FREE about $0.000188/item, BRONZE about $0.000163/item, SILVER about $0.000127/item, GOLD about $0.000098/item, PLATINUM about $0.000065/item, and DIAMOND about $0.000046/item.
Example cost estimates: a 10-result KYB lookup is about $0.0069 on FREE or $0.0066 on BRONZE; a 50-result monitoring batch is about $0.0144 on FREE or $0.0132 on BRONZE before any platform-level rounding or plan-specific billing display. The free Apify plan can run small checks, but larger due-diligence batches should set a clear maxResults limit and review the run estimate in Apify Console.
Input: company names
Use companyNames when you have names or keywords:
{"companyNames": ["Siemens", "Bosch"],"maxResults": 50}
Input: register numbers
Use registerNumbers when you know the register identifier:
{"registerNumbers": [{"registerType": "HRB","registerNumber": "174601","registerCourt": "München","queryLabel": "HRB 174601 München"}],"maxResults": 5}
Input options
companyNames— German company names or keywords.registerNumbers— exact register-number lookup objects.maxResults— maximum dataset records across all searches.exactCompanyName— use the portal's exact-name mode.searchSeat— optional seat/location filter.registerCourt— optional default register court.includeDeleted— include closed/deleted register sheets.resultsPerPage— requested portal page size.navigationDelayMs— advanced delay for slow JSF navigation.
Output example
{"query": "Siemens","queryType": "companyName","resultRank": 1,"companyName": "\"Siemens-Sportverein Wesel e. V.\"","federalState": "Nordrhein-Westfalen","registerCourt": "Amtsgericht Duisburg","registerType": "VR","registerNumber": "30227","seat": "Wesel","status": "aktuell","availableDocumentTypes": ["AD", "CD", "HD", "UT", "VÖ", "SI"],"sourceUrl": "https://www.handelsregister.de/rp_web/sucheErgebnisse/welcome.xhtml?cid=1","retrievedAt": "2026-07-08T05:14:56.562Z"}
How to run it
- Add one or more company names or register-number objects.
- Set
maxResultsto the number of rows you need. - Run the actor.
- Export the dataset as JSON, CSV, Excel, XML, RSS, or HTML.
Tips for better results
- Use exact register-number lookup when you already know the HRB/HRA number.
- Add
registerCourtto reduce ambiguous results. - Use
exactCompanyNamefor legal-name checks. - Keep
maxResultsconservative for first tests. - Increase
navigationDelayMsonly if the portal is slow.
What the document codes mean
The actor records public action-code availability as metadata:
- AD — Aktueller Abdruck
- CD — Chronologischer Abdruck
- HD — Historischer Abdruck
- DK — Dokumentenansicht
- UT — Unternehmensträger
- VÖ — Veröffentlichungen
- SI — Strukturierter Registerinhalt
Current scope
The v1 actor extracts the public search/result row data visible without login. It does not download register documents or printouts. Document download support can be added later if the free/public path is validated safely.
Integrations
Use the output dataset in:
- CRM enrichment pipelines.
- AML/KYB screening queues.
- Credit-risk research notebooks.
- Procurement due-diligence workflows.
- Data warehouses such as BigQuery, Snowflake, or PostgreSQL.
API usage: Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/germany-handelsregister-scraper').call({companyNames: ['Siemens'],maxResults: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage: Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/germany-handelsregister-scraper').call(run_input={'companyNames': ['Siemens'],'maxResults': 25,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage: cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~germany-handelsregister-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"companyNames":["Siemens"],"maxResults":25}'
MCP usage with Claude
Connect through Apify MCP using the actor-specific tools URL:
https://mcp.apify.com/?tools=automation-lab/germany-handelsregister-scraper
Claude Code setup example:
$claude mcp add apify-handelsregister --transport http "https://mcp.apify.com/?tools=automation-lab/germany-handelsregister-scraper"
Claude Desktop JSON configuration example:
{"mcpServers": {"apify-handelsregister": {"url": "https://mcp.apify.com/?tools=automation-lab/germany-handelsregister-scraper"}}}
Example prompts showing MCP usage:
- "Use the Germany Handelsregister scraper to find entries for Siemens and return HRB/HRA identifiers."
- "Run the Apify MCP germany-handelsregister-scraper tool for Bosch and give me court, register number, seat, and status."
- "Check this German company name with the Apify MCP tool and summarize court, number, seat, and status."
- "Export Handelsregister result rows for these KYB targets, then flag entries with deleted status."
Legality and ethical notes
This actor accesses publicly available Handelsregister pages. You are responsible for using the data lawfully, respecting applicable privacy and database rules, and avoiding abusive request volumes.
Reliability notes
The official portal uses JSF/PrimeFaces state. The actor keeps concurrency conservative and uses one browser session to reduce ViewState failures.
Troubleshooting: no results
Check spelling, try a broader keyword, remove the court filter, or disable exactCompanyName.
Troubleshooting: slow runs
The Handelsregister portal can be slow. Lower maxResults or increase navigationDelayMs if navigation is unstable.
Related scrapers
Changelog
0.1
Initial private build for Germany Handelsregister company result extraction.
FAQ
Does it download official register PDFs?
No. v1 records which public document actions are available but does not download AD/CD/HD/DK/UT/VÖ/SI files.
Can I search by HRB number?
Yes. Use registerNumbers with registerType, registerNumber, and optionally registerCourt.
Can I include deleted companies?
Yes. Set includeDeleted to true.
Is a login required?
No login is required for the public search-result metadata extracted by this actor.
Why are results capped?
The maxResults cap keeps runs predictable and helps control cost.
Support
If you need additional fields or document-download support, open an issue on the actor page with an example company and the fields you need.