Automating Polish UBO Checks: How to Query CRBR Without an Official API

Published: (April 28, 2026 at 07:36 AM EDT)
6 min read
Source: Dev.to

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 fieldDescription
Beneficial owner namesNatural persons with > 25 % ownership or control
Citizenship & country of residence
Nature of controlDirect shareholding, indirect control, senior management
Ownership percentage range
Company identifiersNIP, 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:

  1. Open the search page.
  2. Solve a CAPTCHA.
  3. 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:

  1. GET the search page → extract CSRF/verification token.
  2. POST a search request with NIP/KRS.
  3. 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

PlanCost
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

FeatureManual PortalMGBIApify CRBR Actor
CostFree (time cost)200‑500 PLN / mo$0.03 / result
Scale1 at a timeBulk (subscription)API‑driven, any volume
IntegrationNoneLimitedREST API, webhooks, datasets
UBO detailFullFullFull
MaintenanceNone (but manual)Vendor‑managedActor‑maintained (updates automatically)

Real‑World Use Cases

ScenarioHow Automation Helps
Fintech KYC pipelineA Warsaw‑based payment institution queries CRBR by NIP during onboarding. UBO data feeds directly into the risk‑scoring model – zero manual steps.
Periodic review automationA 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 diligenceAn 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.
  • 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

OptionCost ModelConsiderations
Build your own scraperEngineering cost (up‑front)Full control, higher initial effort
Subscribe to MGBIFixed monthly costPredictable expense, ongoing subscription
Pay‑per‑result automationVariable 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.
0 views
Back to Blog

Related posts

Read more »