Automating Polish UBO Checks: How to Query CRBR Without an Official API
Source: Dev.to
Automating Polish UBO Checks: How to Query CRBR Without an Official API
If you build AML/KYC pipelines for European markets, you’ve probably hit this wall: Poland’s Central Register of Beneficial Owners (CRBR) has no public API – no REST endpoint, no SOAP service, not even an FTP dump.
Yet Polish law requires obligated institutions (banks, fintechs, law firms, crypto exchanges) to verify beneficial owners for every business relationship. With the EU’s 6th Anti‑Money‑Laundering Directive (AMLD‑6) tightening UBO verification requirements across all member states, manual look‑ups don’t scale.
Below is a practical guide to automating CRBR queries programmatically.
What is CRBR?
CRBR (Centralny Rejestr Beneficjentów Rzeczywistych) is operated by Poland’s Ministry of Finance at . It holds structured UBO data for Polish‑registered entities:
| Data field | Description |
|---|---|
| Beneficial owner names | Natural persons with > 25 % ownership or control |
| Citizenship & country of residence | – |
| Nature of control | Direct shareholding, indirect control, senior management |
| Ownership percentage range | – |
| Company identifiers | NIP, KRS number, legal form |
| Declaration compliance status | – |
The registry covers:
- General partnerships
- Limited partnerships
- Limited joint‑stock partnerships
- Joint‑stock companies
- Limited liability companies
Civil‑law partnerships and sole proprietorships are exempt.
Filing is mandatory within 7 days of company registration; penalties can reach 1 M PLN (~ 220 k EUR).
The “Manual” Portal Experience
The official portal lets you search by NIP (Polish tax ID) or KRS number:
- Open the search page.
- Solve a CAPTCHA.
- Receive a single result.
For a one‑off due‑diligence check this is fine.
For a fintech onboarding 50 businesses per day → ~2 hours of manual work.
For a bank reviewing 5 000 corporate accounts quarterly → a whole team dedicated to CRBR look‑ups.
Under AMLD‑6, institutions must continuously update UBO data, not just at onboarding.
Existing Commercial Option: MGBI
MGBI is Poland’s dominant legal‑information provider. Their subscription gives you access to CRBR plus other registries (KRS, KRZ, MSiG).
- Pros: Official data, no need to maintain scrapers.
- Cons: Flat monthly fee regardless of query volume.
- 20 UBO checks/month → overpaying.
- 5 000 checks/month → subscription tiers become expensive quickly.
Building Your Own Scraper (Technical Overview)
CRBR’s web portal uses standard HTTP with session management (CSRF tokens, ASP.NET viewstate). A scraper can:
- GET the search page → extract CSRF/verification token.
- POST a search request with NIP/KRS.
- Parse the resulting HTML table for UBO data.
Challenges
- CAPTCHA (must be solved or bypassed).
- Anti‑automation measures.
- The Ministry may change the portal structure without notice → ongoing maintenance cost.
Ready‑Made Solution: CRBR Beneficial Owners Scraper (Apify Store)
Apify offers a maintained, API‑accessible wrapper around the CRBR portal.
Pricing
| Plan | Cost |
|---|---|
| Free | $0.03 per result |
| GOLD+ | $0.02 per result |
| Actor start fee | $0.025 per run |
Example:
- 100 UBO checks → $3.00 – $3.25
- 1 000 checks → $20 – $30
No subscription, no minimum.
Input Format (JSON)
{
"searchQueries": [
{ "nip": "5252002340" },
{ "krs": "0000016702" }
],
"proxyConfiguration": { "useApifyProxy": false }
}
Sample Output (single company)
{
"query": { "nip": "5252002340" },
"company": {
"name": "EXAMPLE SP Z O O",
"nip": "5252002340",
"krs": "0000016702",
"legalForm": "SP Z O O",
"declarationStatus": "Zgloszono"
},
"beneficialOwners": [
{
"fullName": "JAN KOWALSKI",
"citizenship": "Polska",
"residenceCountry": "Polska",
"controlNature": "Wlasciciel bezposredni",
"ownershipPercentage": "Powyzej 50%",
"isAlsoSeniorManagement": false
}
]
}
Integration via Apify API (Python example)
import requests, time
APIFY_TOKEN = "your-token-here"
ACTOR_ID = "wOcPC7vYzfCkB62pG"
# 1️⃣ Start a run
resp = requests.post(
f"https://api.apify.com/v2/acts/{ACTOR_ID}/runs",
params={"token": APIFY_TOKEN},
json={
"searchQueries": [
{"nip": "5252002340"},
{"nip": "5272520115"}
]
}
)
run_id = resp.json()["data"]["id"]
# 2️⃣ Poll for completion
while True:
status = requests.get(
f"https://api.apify.com/v2/acts/{ACTOR_ID}/runs/{run_id}",
params={"token": APIFY_TOKEN}
).json()["data"]["status"]
if status == "SUCCEEDED":
break
time.sleep(5)
# 3️⃣ Fetch results
results = requests.get(
f"https://api.apify.com/v2/acts/{ACTOR_ID}/runs/{run_id}/dataset/items",
params={"token": APIFY_TOKEN}
).json()
# 4️⃣ Print owners
for r in results:
for bo in r.get("beneficialOwners", []):
print(f"{r['company']['name']}: {bo['fullName']} ({bo['controlNature']})")
Comparison: Manual Portal vs. MGBI vs. Apify Actor
| Feature | Manual Portal | MGBI | Apify CRBR Actor |
|---|---|---|---|
| Cost | Free (time cost) | 200‑500 PLN / mo | $0.03 / result |
| Scale | 1 at a time | Bulk (subscription) | API‑driven, any volume |
| Integration | None | Limited | REST API, webhooks, datasets |
| UBO detail | Full | Full | Full |
| Maintenance | None (but manual) | Vendor‑managed | Actor‑maintained (updates automatically) |
Real‑World Use Cases
| Scenario | How Automation Helps |
|---|---|
| Fintech KYC pipeline | A Warsaw‑based payment institution queries CRBR by NIP during onboarding. UBO data feeds directly into the risk‑scoring model – zero manual steps. |
| Periodic review automation | A bank runs batch CRBR checks quarterly on its entire corporate portfolio. Any change in UBO structure triggers a review workflow, eliminating analyst‑heavy manual re‑checks. |
| Cross‑border due diligence | An international M&A advisory pulls CRBR data for Polish acquisition targets, verifying self‑reported ownership structures. |
Important Caveat
Under AMLD‑5/6, institutions cannot rely solely on beneficial‑ownership registers.
CRBR shows registered UBOs, but:
- The register may be outdated or incomplete.
- Beneficial owners can hide behind complex corporate structures not captured by the register.
- Additional sources (company filings, shareholder agreements, third‑party data) are required to achieve a reasonable level of certainty.
By leveraging the Apify CRBR actor, you can turn a previously manual, time‑consuming process into a scalable, API‑driven component of your AML/KYC stack.
Key Observations
- Registration gaps – not all entities file on time.
- Complex multi‑tier ownership structures may obscure true UBOs.
- CRBR data reflects declarations, not verified facts.
Recommended Approach
- Use CRBR automation to feed into – not replace – your broader risk‑based KYC workflow.
- Corroborate register data with client‑provided information and flag discrepancies.
Why CRBR Matters for AML/KYC
Poland’s CRBR is an essential data source for any AML/KYC pipeline covering Polish entities.
The lack of an official API is a real obstacle – but not an insurmountable one.
Options for Access
| Option | Cost Model | Considerations |
|---|---|---|
| Build your own scraper | Engineering cost (up‑front) | Full control, higher initial effort |
| Subscribe to MGBI | Fixed monthly cost | Predictable expense, ongoing subscription |
| Pay‑per‑result automation | Variable cost (per query) | Scales with usage, low upfront cost |
Decision Guidance
- Most compliance teams: start with pay‑per‑result, measure actual query volume for 2‑3 months, then evaluate whether a subscription becomes more cost‑effective.
About the CRBR Beneficial Owners Scraper
- Part of the European Business Data Suite (14 actors covering Polish, Spanish, Austrian, and French government registries).
- All actors are pay‑per‑result with no subscription required.