Bundesanzeiger Scraper
Pricing
from $1.89 / 1,000 publications
Bundesanzeiger Scraper
Scrape Bundesanzeiger, Germany's Federal Gazette: annual financial statements, company and shareholder notices, court and insolvency notices and capital market filings with company, city, title, date and fiscal year. Export JSON, CSV or Excel.
Pricing
from $1.89 / 1,000 publications
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Bundesanzeiger Scraper
Bundesanzeiger Scraper searches the Bundesanzeiger, Germany's Federal Gazette, and exports every matching publication: annual financial statements and other financial reports, company and shareholder notices, court and insolvency notices, capital market filings and official announcements.
| Search by company name, register number or keyword, filter by area, one of 62 categories and publication date, and get one clean record per publication: company, city, area, title, publication date, fiscal year start and end, notes on supplements, the subsidiaries exempted by a group report, court case numbers, ISINs and BAnz references. Up to 100 results per request, sorted newest first. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor or any other LLM to start using this Actor.
Use the Apify Actor "parsebird/bundesanzeiger-scraper" (Bundesanzeiger Scraper) to search Germany's Federal Gazette bundesanzeiger.de and get its publications as structured data. Call it with the apify-client package: Python `ApifyClient("<APIFY_TOKEN>").actor("parsebird/bundesanzeiger-scraper").call(run_input={...})`, or JavaScript `new ApifyClient({ token }).actor('parsebird/bundesanzeiger-scraper').call({...})`, then read items from the run's default dataset. Inputs (all optional): query (string: company name, register number such as "HRB 719915", court, place or keyword), area ("" all areas default, "22" Rechnungslegung/Finanzberichte = financial reports, "6" Gesellschaftsbekanntmachungen = company announcements, "5" Gerichtlicher Teil = judicial notices, "7" Kapitalmarkt = capital market, "1" Amtlicher Teil = official part, "2" Nichtamtlicher Teil, "8" Verschiedene Bekanntmachungen), category (string id of a subcategory that replaces area, e.g. "67" annual financial statements, "69" half-yearly reports, "63" §264 HGB exemptions, "1" AG/SE notices, "3" GmbH/UG notices, "59" insolvency proceedings, "58" voting rights notifications, "57" managers' transactions, "56" inside information), companyNameMustMatch (bool, default false: keep only publications whose company name contains every word of query), dateFrom and dateTo (string "YYYY-MM-DD" or "DD.MM.YYYY", publication date range), sortBy ("newest" default, "oldest", "name", "relevance"), maxItems (int, default 10), proxyConfiguration (object, default no proxy). Each item has entity_name, entity_city, publication_area, publication_area_code, publication_title, publication_date (DD.MM.YYYY), publication_date_iso, fiscal_year_start, fiscal_year_end, notes (array, e.g. "Ergänzung der Veröffentlichung vom 06.05.2022"), details (array of extra lines shown in the result list), case_number (court notices), isins (capital market), banz_reference (e.g. "BAnz AT 30.10.2026 B7"), document_date, exempted_subsidiaries (array of {name, city}), exempted_subsidiaries_count, search_query, search_rank, total_results, scraped_at. The Actor doesn't return the full text or financial figures of a publication: Bundesanzeiger shows the text only after a CAPTCHA. Pricing: pay per publication saved. API docs: https://apify.com/parsebird/bundesanzeiger-scraper/api. Get a token at https://console.apify.com/settings/integrations.
What is Bundesanzeiger Scraper?
Bundesanzeiger Scraper turns the search of the Bundesanzeiger into a clean dataset in JSON, CSV or Excel. The Bundesanzeiger (Federal Gazette) is where German companies, courts and federal authorities publish legally required notices, and it lists millions of publications: on November 1, 2026 its financial reports area alone reported more than 12 million.
Type a company name such as SAP SE, a register number such as HRB 719915, or any keyword, choose an area or category, and the Actor returns every matching publication with its company, city, area, title, publication date and fiscal year, plus the list of subsidiaries exempted from publishing their own accounts, court case numbers, fund ISINs and BAnz references.
It works as a Bundesanzeiger API alternative. The Bundesanzeiger has no public API and its search pages only live for a 30-minute session, so Bundesanzeiger Scraper runs the search for you and hands over the result list as data.
To try it, open the Input tab and click Start. The prefill searches SAP SE in the financial reports area and returns 10 publications.
What can Bundesanzeiger Scraper do?
- 🔎 Search like on bundesanzeiger.de: company name, register number (HRB, HRA), court, place or any keyword, across all areas or one area.
- 🗂️ 62 categories: annual financial statements, half-yearly and quarterly reports, §264 HGB exemptions, AG, GmbH, KG and cooperative notices, insolvency proceedings, public summons, voting rights notifications, managers' transactions, inside information, fund reports, tenders and more.
- 📅 Date range and sorting: limit the search to a publication period and sort newest first, oldest first, by name or in Bundesanzeiger's own order.
- 🏢 Company name filter: drop related companies that Bundesanzeiger also returns, such as subsidiaries or funds holding the company's shares, and pay only for the publications you keep.
- 📑 Fiscal years and group exemptions: the fiscal year start and end are read from report titles, and each group report comes with the subsidiaries it exempts from publishing their own accounts (§§ 264 (3), 264b HGB).
- ⚖️ Court, fund and official notices: case numbers from judicial notices, ISINs and fund names from capital market filings, and BAnz references and document dates from the official part.
- ⚙️ Built for automation: schedule runs to catch new notices about your customers or competitors, call the Actor through the Apify API, send results to Make, Zapier, n8n, Google Sheets, Slack and more, and export as JSON, CSV, Excel or HTML.
What data can you extract from the Bundesanzeiger?
| Field | Description |
|---|---|
entity_name, entity_city | Company or publisher (for court notices, the court) and its registered city |
publication_area, publication_area_code | Bundesanzeiger area in German, such as Rechnungslegung/Finanzberichte, and its code (22) |
publication_title | Title of the publication, such as Jahresabschluss zum Geschäftsjahr vom 01.01.2021 bis zum 31.12.2021 |
publication_date, publication_date_iso | Publication date as DD.MM.YYYY and YYYY-MM-DD |
fiscal_year_start, fiscal_year_end | Fiscal year read from the title of financial reports (DD.MM.YYYY) |
notes | Notes shown under the title, such as Ergänzung der Veröffentlichung vom 06.05.2022 or Ergänzt am 11.07.2022 |
details | Extra lines from the result list, such as case numbers, parties, fund names or the issuing authority |
case_number | Court file number of judicial notices, such as 2 N 252/94 |
isins | ISINs listed with capital market publications |
banz_reference, document_date | BAnz citation of official publications (BAnz AT 30.10.2026 B7) and the date of the document |
exempted_subsidiaries, exempted_subsidiaries_count | Subsidiaries (name and city) exempted by a group report from publishing their own accounts |
search_query, search_rank, total_results, scraped_at | Your search term, the position in the results, the total number of matches and the collection time |
Fields a publication doesn't have are null or an empty list.
How to scrape the Bundesanzeiger
- Open Bundesanzeiger Scraper on Apify Store and go to the Input tab.
- Type a Search term, such as a company name or register number, or leave it empty to list a whole area or category.
- Choose an Area, or a more specific Category such as annual financial statements or insolvency proceedings.
- Turn on Company name must contain the search term if you only want the company itself.
- Optionally set Published from and Published to, and Sort by.
- Set Max publications and click Start. When the run finishes, download the dataset as JSON, CSV, Excel or HTML, or read it with the dataset API.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | — | Company name, register number, court, place or keyword |
area | string | "" (all) | 22 financial reports, 6 company announcements, 5 judicial, 7 capital market, 1 official part, 2 non-official part, 8 miscellaneous |
category | string | — | Subcategory ID that replaces area, for example 67 annual financial statements, 59 insolvency proceedings, 3 GmbH announcements |
companyNameMustMatch | boolean | false | Keep only publications whose company name contains every word of query |
dateFrom, dateTo | string | — | Publication date range, YYYY-MM-DD or DD.MM.YYYY |
sortBy | string | newest | newest, oldest, name or relevance (Bundesanzeiger's order) |
maxItems | integer | 10 | Maximum publications to save |
proxyConfiguration | object | no proxy | Optional proxy. The Actor works without one |
Example: the annual reports of SAP SE itself, without its subsidiaries' filings:
{"query": "SAP SE","area": "22","companyNameMustMatch": true,"maxItems": 20}
Example: insolvency notices published in September and October 2026:
{"category": "59","dateFrom": "2026-09-01","dateTo": "2026-10-31","maxItems": 100}
Output example
A group report of SAP SE (the subsidiary list is shortened here), an insolvency notice and an investment fund report:
[{"entity_name": "SAP SE","entity_city": "Walldorf","publication_area": "Rechnungslegung/Finanzberichte","publication_area_code": "22","publication_title": "Jahres- und Konzernabschluss zum Geschäftsjahr vom 01.01.2021 bis zum 31.12.2021","publication_date": "11.07.2022","publication_date_iso": "2022-07-11","fiscal_year_start": "01.01.2021","fiscal_year_end": "31.12.2021","notes": ["Ergänzung der Veröffentlichung vom 06.05.2022"],"details": [],"case_number": null,"isins": [],"banz_reference": null,"document_date": null,"exempted_subsidiaries": [{"name": "Concur (Germany) GmbH", "city": "Frankfurt am Main"},{"name": "SAP Deutschland SE & Co. KG", "city": "Walldorf"}],"exempted_subsidiaries_count": 11,"search_query": "SAP SE","search_rank": 5,"total_results": 132,"scraped_at": "2026-11-01T11:42:28.996Z"},{"entity_name": "Amtsgericht Dessau-Roßlau","entity_city": null,"publication_area": "Gerichtlicher Teil","publication_area_code": "5","publication_title": "Anzeige der Masseunzulänglichkeit","publication_date": "30.09.2026","publication_date_iso": "2026-09-30","details": ["2 N 252/94", "Guß- und Maschinenbau Jessen GmbH / Jessen / Elster"],"case_number": "2 N 252/94","search_rank": 1,"total_results": 7},{"entity_name": "Allianz Global Investors GmbH","entity_city": "Frankfurt am Main","publication_area": "Kapitalmarkt","publication_area_code": "7","publication_title": "Jahresbericht 30. Juni 2026","publication_date": "30.10.2026","publication_date_iso": "2026-10-30","fiscal_year_end": "30.06.2026","details": ["Fondak I20 (EUR);Fondak A20 (EUR);Fondak A (EUR);Fondak I (EUR);Fondak P (EUR)","DE000A2ATB32; DE000A2ATB40; DE0008471012; DE000A0MJRM3; DE000A0MJRL5"],"isins": ["DE000A2ATB32", "DE000A2ATB40", "DE0008471012", "DE000A0MJRM3", "DE000A0MJRL5"],"search_rank": 2,"total_results": 58279}]
The second and third records are shortened to their non-empty fields.
Use Bundesanzeiger Scraper from Python or JavaScript
Install the client with pip install apify-client or npm install apify-client, and get your API token from Apify Console.
Python
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("parsebird/bundesanzeiger-scraper").call(run_input={"query": "BMW AG","category": "67", # annual financial statements"maxItems": 50,})for pub in client.dataset(run["defaultDatasetId"]).iterate_items():print(pub["entity_name"], pub["fiscal_year_end"], pub["publication_date"], pub["publication_title"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<APIFY_TOKEN>' });const run = await client.actor('parsebird/bundesanzeiger-scraper').call({category: '3', // GmbH and UG announcementsdateFrom: '2026-10-01',dateTo: '2026-10-31',maxItems: 500,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.filter((p) => p.publication_title === 'Liquidation').forEach((p) => console.log(p.entity_name, p.entity_city, p.publication_date));
Use cases
- KYC and due diligence: list every notice a company has published, from annual reports and capital changes to mergers, liquidations and shareholder meetings.
- Credit and risk monitoring: schedule daily searches of insolvency proceedings or liquidation notices and send new ones to Slack or email through integrations.
- Lead generation: find newly founded, merging or liquidating GmbHs and AGs in a date range.
- Financial report tracking: see which fiscal years a company has published, when, and which subsidiaries its group report covers.
- Capital market research: collect voting rights notifications, managers' transactions, inside information and fund reports with their ISINs.
- Legal research: pull public summons, court decisions and service notices with their case numbers.
How much does it cost to scrape the Bundesanzeiger?
Bundesanzeiger Scraper uses pay-per-event pricing: you pay for each publication saved to the dataset. Compute and proxy costs are included in the event price, so they aren't billed separately.
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
| Publication scraped | $2.49 / 1,000 | $2.29 / 1,000 | $2.09 / 1,000 | $1.89 / 1,000 |
At Free plan prices, 10 publications cost about $0.025 and 1,000 cost $2.49. With Company name must contain the search term on, publications that don't match aren't charged. To control spending, set Max publications. The run also stops when it reaches the maximum cost per run you set in Apify Console.
Is it legal to scrape the Bundesanzeiger?
Bundesanzeiger Scraper only reads the public search results of bundesanzeiger.de, which anyone can see without an account. It doesn't log in, doesn't solve CAPTCHAs and doesn't open the full text of publications. Some publications name private persons, for example court notices or company officers. If you store or use that data, you're responsible for complying with the GDPR and with any conditions the publisher, Bundesanzeiger Verlag, sets for reusing its content (see its imprint). Consult a lawyer if you're unsure. For more background, read Apify's article Is web scraping legal?
Other company data scrapers from ParseBird
| Actor | What it does |
|---|---|
| Northdata Scraper | Company and people lookups on North Data: register identity, address, risk flags, financials and officers |
| Gelbe Seiten Scraper | German business listings with addresses, phones, ratings and opening hours |
| FirmenABC.at Scraper | Austrian company data with Firmenbuchnummer, managers and balance-sheet figures |
| Zefix.ch Scraper | Swiss commercial register: UID, legal form, seat, address and purpose |
| KvK Handelsregister Scraper | Dutch company register by name, keyword or KvK number |
| UK Companies House Scraper | Filter 5M+ UK companies by SIC code, status, location and incorporation date |
| Dun & Bradstreet Scraper | Firmographics from Dun & Bradstreet's business directory |
FAQ
Do I need a Bundesanzeiger account? No. The Actor uses the same free search that anyone can use on bundesanzeiger.de.
Does it return revenue, assets, equity or employee numbers? No. Those figures are in the text of each annual report, and the Bundesanzeiger shows that text only after you solve a CAPTCHA for every single publication. Bundesanzeiger Scraper doesn't get around CAPTCHAs, so it returns the data shown in the search results. For financial figures of German companies, try Northdata Scraper.
Why are the newest annual financial statements from fiscal year 2021? Since the DiRUG reform, annual financial statements for fiscal years starting after December 31, 2021 are filed with the Unternehmensregister instead of the Bundesanzeiger. The Bundesanzeiger still publishes late filings for earlier years (in October 2026 they were for fiscal years up to 2021) and other financial reports, such as half-yearly reports under the WpHG and the accounts of health insurance funds.
Why do I get companies other than the one I searched for?
The search matches words, not exact names. A search for SAP SE also finds SAP's subsidiaries and other companies whose names contain "SE". Outside the financial reports area, Bundesanzeiger also searches the text of publications, so a company name finds fund reports that hold its shares. Turn on Company name must contain the search term to keep only publications whose company name contains every word you typed. The Actor then checks up to 50,000 search results per run; for very broad searches, add an area, category or date range.
Is there a link to each publication?
No. The Bundesanzeiger has no permanent links: its search pages and documents only work inside a session that expires after 30 minutes. To open a publication, search for the company on bundesanzeiger.de and match publication_title and publication_date. For official publications, banz_reference is the citation used to refer to them.
How far back does it go? As far as the Bundesanzeiger's search: the oldest results we saw were from 2005. Use Sort by: Oldest first or a date range to reach older publications.
How fast is it? The Actor reads 100 results per request. In our tests, 250 court notices took about 10 seconds.
Do I need a proxy? No. The Actor runs without a proxy by default. If the Bundesanzeiger starts refusing requests, add an Apify proxy in the Advanced section.
Can I run it on a schedule or from my own code? Yes. Use Apify schedules for daily or weekly runs, the Apify API or the Python and JavaScript clients shown above, and integrations to send results to Google Sheets, Slack, Make, Zapier or n8n.
Something doesn't work or a field is missing. What should I do? Open an issue on the Actor's Issues tab with your input and run ID, and we'll look into it.