TL;DR
- BDO (Baza danych o produktach i opakowaniach oraz o gospodarce odpadami) is Poland's official waste management registry with 674,000+ registered entities
- Every company that produces, transports, or processes waste in Poland must be registered
- The portal is a React SPA with no public API
- I built an Apify actor that searches the registry and returns structured JSON for $0.03 per entity
Why Poland's BDO Waste Registry Matters
BDO is Poland's central database for tracking the entire lifecycle of waste - from generation through transport to final processing or disposal. The registry was established under the Act on Waste (ustawa o odpadach) and is administered by the Marshal Offices of each voivodeship (province).
Registration in BDO is mandatory for a broad range of businesses: manufacturers generating industrial waste, waste transport companies, recycling and processing facilities, importers of products subject to packaging regulations, and companies introducing packaged goods to the Polish market. As of 2026, the registry contains over 674,000 entities - making it one of the largest environmental compliance databases in Central Europe.
The practical impact is significant. Companies that hire unregistered waste transporters or processors face fines ranging from 1,000 to 1,000,000 PLN under Polish environmental law. For organizations managing waste across multiple sites or working with dozens of contractors, verifying BDO registration status is a routine compliance requirement.
Why the BDO Portal Has No Public API
The BDO portal at rejestr-bdo.mos.gov.pl is built as a React single-page application. The frontend communicates with backend services through internal API calls, but these endpoints are undocumented, require session tokens, and use dynamic request patterns that change between deployments.
This architecture creates specific challenges for automation:
- No stable REST API endpoints to call directly
- Session-based authentication with CSRF protection
- Dynamic JavaScript rendering means simple HTTP requests return empty shells
- One search at a time with no bulk export functionality
- No documented data format or schema for programmatic consumption
For environmental compliance teams verifying dozens of contractors, auditors checking corporate groups, or waste management companies monitoring their market - manual verification through the portal does not scale.
BDO Entity Data: What You Get
The scraper returns structured JSON for each registered entity with the following fields:
- name - registered company name
- bdoNumber - unique BDO registration number
- nip - Polish tax identification number (NIP)
- regon - statistical identification number (REGON)
- province - voivodeship where the entity is registered
- registrationDate - when the entity was added to BDO
- status - current registration status (active, suspended, deleted)
- wasteActivities - types of waste management permits held
You can search by company name, NIP, REGON, or BDO number. The actor handles the React SPA session management, pagination, and data extraction automatically.
How to Use the BDO Waste Registry Scraper
Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("minute_contest/bdo-waste-registry-scraper").call(
run_input={
"query": "Remondis",
"maxResults": 50
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
for entity in items:
print(f"{entity.get('name')} | BDO: {entity.get('bdoNumber')}")
print(f" NIP: {entity.get('nip')} | Province: {entity.get('province')}")
JavaScript (Node.js)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('minute_contest/bdo-waste-registry-scraper').call({
query: 'Remondis',
maxResults: 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const entity of items) {
console.log(`${entity.name} | BDO: ${entity.bdoNumber}`);
console.log(` NIP: ${entity.nip}`);
}
Real-World Use Case: Contractor Compliance Audit
A manufacturing company operates 5 production facilities across Poland, each generating hazardous and non-hazardous industrial waste. They work with 40+ waste management contractors - transporters, recyclers, and landfill operators. Their environmental compliance team needs to verify quarterly that every contractor holds a valid, active BDO registration.
Using the scraper, they build a simple script that takes their contractor list (NIP numbers from their ERP system), queries BDO for each one, and flags any contractor whose registration status is not active. The script runs as a scheduled Apify task every quarter, exporting results to a CSV that the compliance team reviews. Previously, an analyst spent two full days each quarter manually checking the portal. With the scraper, the entire audit completes unattended in under 30 minutes.
Who Needs the BDO Waste Registry Scraper
- Environmental compliance teams - verify that waste contractors hold valid BDO registrations
- Waste management companies - monitor competitors, track new market entrants, and validate subcontractors
- Auditors - check environmental compliance across corporate groups and supply chains
- Manufacturing companies - verify entire networks of waste handlers before signing contracts
- Municipal authorities - monitor registered waste operators in their jurisdiction
- ESG reporting teams - document waste management compliance for sustainability reports
Pricing
| Method | Cost |
|---|---|
| Manual search on BDO portal | Free (one at a time) |
| This actor | ~$3 per 100 entities |
Free $5 Apify credits on signup = ~160 entity lookups at no cost.
FAQ
What types of companies must register in BDO?
Any company in Poland that generates waste (beyond standard household-type office waste), transports waste, collects or processes waste, imports products with packaging obligations, or introduces packaged goods to the market must hold an active BDO registration. This covers manufacturers, logistics companies, recyclers, and most importers.
Can I verify a specific company by NIP or BDO number?
Yes. The actor supports search by company name, NIP (tax ID), REGON (statistical number), or BDO registration number. Searching by NIP is the most reliable method for exact matching, since company names may vary in formatting across registrations.
How does the scraper handle the BDO React SPA?
The actor uses a headless browser to navigate the React application, manage session tokens, and extract data from the rendered DOM. This approach handles the dynamic JavaScript rendering and session management that makes direct HTTP scraping impossible on the BDO portal.
Try it: apify.com/minute_contest/bdo-waste-registry-scraper
This is part of the Polish Business Data APIs series covering programmatic access to Polish government registries.
Top comments (0)