
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Search the official German company register (handelsregister.de) by name, keyword or register number. Get register number, court, status, legal form, address, officers with birth dates, representation rules, purpose, capital and name history.
Search the official German company register (handelsregister.de, the common register portal of all 16 federal states) and get one clean record per company: register number, court, status, legal form, business address, officers with roles and birth dates, representation rules, business purpose, share capital and name history. Search by company name or keyword, or look up exact register numbers like München HRB 42243. No login, no account, one simple price per company.
München HRB 42243 in Register numbers.| Field | What it does |
|---|---|
searchQueries | Company names or keywords, one search per line |
registerIds | Exact register entries: court + type + number, e.g. München HRB 42243, Berlin (Charlottenburg) HRB 1234 B |
maxItems | Total companies to save (0 = no limit) |
keywordMatch | all words, any word, or the exact company name |
registerType | HRA, HRB, GnR, PR, VR or GsR |
registerCourt / registerNumber | Court (e.g. München, Wurzburg works too) and number for a precise lookup |
legalForm | GmbH, UG, AG, KG, OHG, eG, e.V., e.K., GbR, SE, KGaA, PartG, Stiftung or the German name |
states, city, street | Location filters on the portal |
postalCode | Postal code or its first digits, checked against the registered address (needs structured data) |
includeDeleted | Also return deleted (gelöscht) entries |
similarSounding | Also match names that sound like the keywords |
fetchStructuredData | Load the SI document per company (on by default) |
includeRawXml | Attach the raw XJustiz XML |
splitBroadSearches | Go past the portal's 100-hit cap (on by default) |
{
"searchQueries": ["Bäckerei"],
"city": "Hamburg",
"registerType": "HRB",
"registerIds": ["München HRB 42243"],
"maxItems": 50
}
One row per register entry. The Officers view lists one row per officer.
| Field | Description |
|---|---|
companyName, legalName | Name in the search results and in the structured document |
registerId, registerCourt, registerType, registerNumber | Register key, e.g. Amtsgericht München HRB 42243 |
status, statusRaw | active or deleted (deleted or closed register sheet), and the portal's wording |
state, seat | Federal state and registered seat |
legalForm | Legal form, e.g. Gesellschaft mit beschränkter Haftung (GmbH) |
address | street, houseNumber, postalCode, city, country |
officers[] | role, firstName, lastName, fullName, birthDate, city, organisationName, representation |
representationRules | General rule for who may represent the company |
businessPurpose | Object of the company |
shareCapital | amount and currency |
lastEntryDate, entryCount, articlesDate, articlesLastAmended | Register and articles dates |
history[] | Former names and seats in order |
availableDocuments | Documents the portal offers (AD, CD, HD, DK, UT, VÖ, SI) |
structuredDataMissing | true when there is no structured document: the portal did not deliver it, or the entry has none (closed or deleted entries) |
searchQuery, scrapedAt | What found the company, and when |
Example (shape from a real run; company and people are fictional):
{
"type": "company-registration",
"companyName": "Muster Backstube GmbH",
"registerId": "Amtsgericht Hamburg HRB 123456",
"registerCourt": "Amtsgericht Hamburg",
"registerType": "HRB",
"registerNumber": "123456",
"state": "Hamburg",
"seat": "Hamburg",
"status": "active",
"statusRaw": "aktuell",
"history": [{ "position": 1, "name": "Muster Brot GmbH", "seat": "Hamburg" }],
"availableDocuments": ["AD", "CD", "DK", "UT", "VÖ", "SI"],
"legalName": "Muster Backstube GmbH",
"legalForm": "Gesellschaft mit beschränkter Haftung (GmbH)",
"address": { "street": "Musterstraße", "houseNumber": "12", "postalCode": "20095", "city": "Hamburg", "country": null },
"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": "Erika",
"lastName": "Musterfrau",
"fullName": "Erika Musterfrau",
"birthDate": "1980-05-17",
"city": "Hamburg",
"organisationName": null,
"representation": "einzelvertretungsberechtigt; mit der Befugnis, im Namen der Gesellschaft mit sich im eigenen Namen oder als Vertreter eines Dritten Rechtsgeschäfte abzuschließen"
}
],
"businessPurpose": "Herstellung und Vertrieb von Backwaren sowie der Betrieb von Cafés.",
"shareCapital": { "amount": 25000.0, "currency": "EUR" },
"lastEntryDate": "2024-03-11",
"entryCount": 4,
"articlesDate": "2019-07-02",
"articlesLastAmended": "2023-11-20",
"registerCourtOfficial": "Amtsgericht Hamburg",
"searchQuery": "Bäckerei",
"scrapedAt": "2026-10-21T08:41:12.512Z"
}
You pay $6.50 per 1,000 companies ($0.0065 per company), with the structured register data included. There is no start fee. Platform usage (compute and proxy traffic) is billed separately and is small: a run with 10 companies and full structured data used under $0.01 in our tests.
Example: 1,000 companies ≈ $6.50 plus usage.
Is it legal? The register portal is public and free to use without registration; the actor reads only public pages and documents. Register data includes personal data (names, birth dates and cities of officers). You are responsible for using it in line with the GDPR and the portal's terms of use.
Do I need a login or a proxy? No login. The default datacenter proxy works; you can switch to residential proxies in the Proxy section.
How many companies can I get? The portal returns up to 100 companies per search. With Split broad searches on, the actor repeats a capped search per federal state, register court, register type and legal form; in our test a common word returned 10,000 unique companies. Very broad words can still hit the cap in a single state and register type; the status message names those searches.
How long does a big run take? The portal delivers structured documents slowly. In our tests a run loaded about 20 to 30 companies with full structured data per minute (300 companies took about 11 minutes with 10 parallel sessions). List-only runs are much faster: 10,000 companies took about 5 minutes. The default run timeout is 4 hours.
Why is a field empty?
Fields come from the register itself. Small entities often have no share capital or purpose in the structured data, older entries can lack a street address, and some state register systems are sometimes unable to deliver documents. Those companies are saved with structuredDataMissing: true and the search data.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start them over the API and fetch the dataset as JSON, CSV or Excel.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalCompany names or keywords
One search per line, e.g. Siemens or Bäckerei. Words are matched in the company name (see Keyword matching). The portal returns at most 100 companies per search; broad searches are split automatically (see Split broad searches).
registerIdsarrayOptionalRegister numbers
Look up exact register entries: court plus register type and number, one per line, e.g. München HRB 42243 or Berlin (Charlottenburg) HRB 1234 B. Deleted entries are included.
maxItemsintegerOptionaldefault 10Maximum companies
Stop after this many companies in total across all searches. 0 means no limit.
Narrow keyword searches. Filters also apply to searches without keywords.
keywordMatchenumOptionaldefault "all"Keyword matching
How the words of one search combine: all words, at least one word, or the exact company name.
registerTypeenumOptionalRegister type
HRA (sole traders, partnerships), HRB (GmbH, AG), GnR (cooperatives), PR (professional partnerships), VR (associations), GsR (civil-law partnerships). Empty means all registers.
registerCourtstringOptionalRegister court
Local court (Amtsgericht) that keeps the register, e.g. München, Hamburg or Berlin (Charlottenburg). Case, umlauts (Wurzburg) and word order do not matter. A name that fits several courts (Frankfurt) stops the run with the options.
registerNumberstringOptionalRegister number
Register number, e.g. 42243. Use it with a register court (and type) for a precise lookup.
legalFormstringOptionalLegal form
GmbH, UG, AG, KG, OHG, eG, e.V., e.K., GbR, SE, KGaA, PartG, Stiftung, or the full German name such as Gesellschaft mit beschränkter Haftung.
statesarrayOptionalFederal states
Only companies registered in these federal states. Empty means all of Germany.
citystringOptionalCity
City of the company's seat, e.g. Hamburg.
postalCodestringOptionalPostal code
Postal code or its first digits, e.g. 22767 or 227. Checked against the registered business address in the structured register data (needs Structured register data on); companies without a matching address are left out and not charged.
streetstringOptionalStreet
Street of the company address.
includeDeletedbooleanOptionaldefault falseInclude deleted entries
Also return companies whose register entry was deleted (gelöscht).
similarSoundingbooleanOptionaldefault falseSimilar-sounding names
Also match names that sound like your keywords (the portal's phonetic search).
fetchStructuredDatabooleanOptionaldefault trueStructured register data
Load the official structured register content (SI document) for every company: address, officers with roles and birth dates, representation rules, business purpose, share capital, legal form. Turn off for a faster list with name, court, number, seat, status and history only.
includeRawXmlbooleanOptionaldefault falseRaw XJustiz XML
Attach the raw SI document (XJustiz XML) to each company. Makes the dataset much larger.
splitBroadSearchesbooleanOptionaldefault trueSplit broad searches
When a search hits the portal's 100-company cap and you asked for more, search again per federal state, register court, register type and legal form to collect the rest.
maxConcurrencyintegerOptionaldefault 5Parallel sessions
How many portal sessions work at once. Higher is faster; the portal is a public service, so keep it moderate.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for the register portal.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| companyName | string | null | Company name as shown in the search results |
| registerId | string | null | Court, register type and number, e.g. Amtsgericht München HRB 42243 |
| registerCourt | string | null | Register court (Amtsgericht) |
| registerType | string | null | HRA, HRB, GnR, PR, VR or GsR |
| registerNumber | string | null | Register number |
| state | string | null | Federal state |
| seat | string | null | Registered seat (town) |
| status | string | null | active or deleted |
| statusRaw | string | null | Status as shown on the portal |
| history | array | null | Former names and seats |
| availableDocuments | array | null | Documents the portal offers for the entry (AD, CD, HD, DK, UT, VÖ, SI) |
| legalName | string | null | Name in the structured register content |
| legalForm | string | null | Legal form |
| address | object | null | Business address: street, houseNumber, postalCode, city, country |
| representationRules | string | null | General representation rule |
| officers | array | null | Managing directors, board members, authorised signatories, partners: role, name, birth date, city, representation |
| businessPurpose | string | null | Object of the company (Unternehmensgegenstand) |
| shareCapital | object | null | Share capital: amount and currency |
| lastEntryDate | string | null | Date of the latest register entry |
| entryCount | number | null | Number of register entries |
| articlesDate | string | null | Date of the articles of association |
| articlesLastAmended | string | null | Date the articles were last amended |
| registerCourtOfficial | string | null | Register court named in the structured document |
| structuredDataMissing | boolean | null | True when there is no structured document (not delivered by the portal, or none for closed/deleted entries) |
| siXml | string | null | Raw XJustiz SI document (only with Raw XJustiz XML on) |
| searchQuery | string | null | Search or register number that found the company |
| scrapedAt | string | null | Time of scraping (UTC) |
| type | string | null | Record type |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Company | One company record saved to the dataset, structured register data included. | $0.0065 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('cornerledger/handelsregister-scraper').call({
"searchQueries": [
"Siemens"
],
"registerIds": [
"München HRB 42243"
],
"maxItems": 10,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run cornerledger/handelsregister-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=cornerledger/handelsregister-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Exact register entries such as Hamburg HRB 167611, with officers, address and capital.
Keyword search narrowed by city and register type, with structured register data.
Keyword search filtered by federal state and legal form.
Fast list without documents; broad searches are split past the portal's 100-hit cap.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.