惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
博客园 - 【当耐特】
量子位
博客园 - 叶小钗
有赞技术团队
有赞技术团队
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
博客园 - 司徒正美
爱范儿
爱范儿
美团技术团队
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
罗磊的独立博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
I
InfoQ
D
DataBreaches.Net
宝玉的分享
宝玉的分享

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Mapping Polish company structures: querying KRS direct vi...
OpenRegistry · 2026-05-25 · via DEV Community
Cover image for Mapping Polish company structures: querying KRS direct via API

OpenRegistry

Cross-border subsidiary tracing on a Polish logistics target highlighted the systemic delay built into global corporate data aggregators. The legacy paid databases listed the Warsaw parent company as active but showed zero ownership modifications for over eighteen months. In reality, the Krajowy Rejestr Sądowy (KRS) had recorded a significant capital increase and registered a pledge on outstanding shares in mid-March. Relying on cached aggregator datasets almost mispriced our M&A diligence window because we missed the newly introduced collateral.

Poland’s KRS operates on a strict, transactional legal basis. Unlike jurisdictions where updates filter through slowly, Polish corporate events are only legally binding once they are entered into the court register. Relying on scraped data dumps is a substantial risk during pre-acquisition checks. Using a direct, live link to the KRS is the only way to avoid acting on stale disclosures.

KRS API Data Models

When you pull a profile using the Krajowy Rejestr Sądowy, the JSON structure reflects the precise legal anatomy of Polish entities. The raw jurisdiction_data block is divided into explicit sections reflecting the official court record. The standard registry payload exposes several critical details:

  • NIP and REGON identifiers: These are the national tax identification and statistical numbers. Polish entities cannot operate without them, and they serve as absolute anchors for cross-checking tax history.
  • Capital structure details: The registry outputs exact nominal values, including wysokoscKapitaluZakladowego (the share capital amount) and its currency. It also tracks the total number of issued shares.
  • The division registry type: Polish entities fall under either Register "P" (przedsiębiorcy for commercial businesses) or Register "S" (stowarzyszenia for associations, foundations, and public health entities).
  • Direct and proxy representation: The reprezentacja section lists the board members alongside their official roles and their specific representation rules (sposob_reprezentacji), which dictate exactly who must sign to bind the company.
  • Historical court identifiers: The wydzial fields indicate which district court holds the physical files. This is invaluable if you need to dispatch a local agent to retrieve paper records.

Polish Registry Boundaries

While the commercial registry is highly transparent about board members and historical company changes, it does not function as an all-encompassing compliance database. Poland has strict operational boundaries:

  1. UBO Gating: Ultimate Beneficial Owner (UBO) information is housed in the Centralny Rejestr Beneficjentów Rzeczywistych (CRBR). Following the CJEU C-601/20 ruling on privacy, this data is kept separate from the open-access KRS company profile APIs. You will not find direct beneficial ownership charts embedded within the standard company profile.
  2. Financial Filings PDFs: While the registry tracks whether financial statements have been submitted, the raw XML or PDF copies of these statements reside in the separate Repozytorium Dokumentów Finansowych (RDF). The commercial registry provides metadata about the filing, but accessing the documents themselves requires target-specific paths.
  3. Sanctions list status: The KRS does not offer domestic sanctions checks. You will need to query the Ministry of Interior and Administration (MSWiA) list separately to screen for designated entities.

Querying KRS Programmatically Using MCP

To bypass stale aggregator tables, you can issue real-time tool calls directly to the court register. This raw, live access runs without intermediate caching, delivering the exact records held by the Ministry of Justice.

To locate a Polish target, run a localized search command using the official identifier format:

{
  "name": "search_companies",
  "arguments": {
    "q": "Zabka Polska",
    "jurisdiction": "PL"
  }
}

Once you have the ten-digit KRS number, you can query the direct court file. This step extracts the active administrative structure, board of directors, and official legal address:

{
  "name": "get_company_profile",
  "arguments": {
    "company_id": "0000414000",
    "jurisdiction": "PL"
  }
}

This tool call hits Poland's live court register database. The response returns the original nested Polish registry attributes inside the jurisdiction_data key, giving your automated agents the raw, unparsed material required to verify signing authorities and actual share values.

Corporate Status Verification

In-house corporate development demands direct-from-source precision. When constructing a cross-border corporate structure, discovering a silent partner or an undisclosed court-appointed administrator too late can scuttle a transaction entirely. Incorporating the live Polish register into your automation helps clear regulatory hurdles before drafting the term sheet. Integrating the open-source registry server into your workflow ensures your compliance engine works with the exact legal state registered in Warsaw, rather than a weeks-old copy.

To run zero-signup testing across any of the 27 supported jurisdictions, configure your AI development client with the open registry server endpoint at openregistry.sophymarine.com.