# Changelog of Handelsregister Scraper: German Company Register (`enisbodlli/handelsregister-scraper`) Actor

- **URL**: https://apify.com/enisbodlli/handelsregister-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/enisbodlli/handelsregister-scraper.md

## Changelog

### 0.1 (2026-10-07)

- First build. Searches the "Normale Suche" of the official German register portal
  (handelsregister.de) by company name, keywords or register number and returns one row per company:
  registered name, legal form derived from the name, court, register type and number, full
  citation, federal state, seat, status, former names and the document types the portal offers.
- Filters: match mode (all words, any word, exact name), register type, register court, seat,
  closed entries. Up to 1,000 searches per run, 1 to 100 companies per search.
- Keeps the portal's limit of 60 retrievals an hour: every request is counted over a rolling hour
  (`maxRequestsPerHour`, default 55), the count is saved before each request so a restart keeps it,
  one session and one request at a time, at least 1.5 seconds between two requests. The run waits
  when the hour is full and says until when; `RUN_SUMMARY` reports the requests sent, the highest
  number in any hour and the seconds waited.
- Says at the start when the list needs more hours than the run's timeout allows.
- Company-level data only: sole traders (e.K., e.Kfm., e.Kfr., "Inh.", and every section A name that
  does not name a partnership: KG, OHG, EWIV or "GmbH & Co.") are left out and counted in
  `soleTradersSkipped`; the same test is applied to former names. No officers and no documents are
  retrieved.
- Charges the `company-record` event once per company found. A search without a match gets one row
  with `found: false` and no charge; a company returned by two searches of one run is charged once.
- A restarted or resurrected run continues where it stopped and repeats at most one search without
  storing or charging its rows twice.
- A refusal is final: HTTP 403, a 429 that stays, and a CAPTCHA, bot-wall or block page that answers
  200 stop the run after that one request. A page that breaks off before its end is asked for again
  and never stored as the whole answer.
- Starts no search with less than 20 seconds left before the run's timeout, so the summary is written
  and the searches left out are reported. Every repeated attempt and every reopened session is named
  in the log.
