<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Matías Maquieira</title>
    <description>The latest articles on DEV Community by Matías Maquieira (@matiasmaquieira).</description>
    <link>https://dev.to/matiasmaquieira</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4143049%2F5210a7b3-a814-45fe-8722-3e38a6fa7024.png</url>
      <title>DEV Community: Matías Maquieira</title>
      <link>https://dev.to/matiasmaquieira</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/matiasmaquieira"/>
    <language>en</language>
    <item>
      <title>How to Query the Polish KRS Company Register via API (2026 Guide)</title>
      <dc:creator>Matías Maquieira</dc:creator>
      <pubDate>Fri, 25 Sep 2026 14:52:44 +0000</pubDate>
      <link>https://dev.to/matiasmaquieira/how-to-query-the-polish-krs-company-register-via-api-2026-guide-98m</link>
      <guid>https://dev.to/matiasmaquieira/how-to-query-the-polish-krs-company-register-via-api-2026-guide-98m</guid>
      <description>&lt;h1&gt;
  
  
  How to Query the Polish KRS Company Register via API (2026 Guide)
&lt;/h1&gt;

&lt;p&gt;You can query Poland's KRS company register with one REST call: send a company name, a 10-digit KRS number, a NIP or a REGON and get back the legal entity's name, NIP (tax ID), REGON, legal form, PKD activity code, registered address, share capital and registration date as JSON. No court-portal scraping, no captcha. Below is a runnable request, the exact response shape as returned today, and an honest rundown of what is and is not in the data.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;By Matías Maquieira, Founder of &lt;a href="https://www.prometiam.com" rel="noopener noreferrer"&gt;Prometiam&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the KRS?
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;KRS&lt;/strong&gt; (&lt;em&gt;Krajowy Rejestr Sądowy&lt;/em&gt;, National Court Register) is Poland's official register of legal entities: limited companies (sp. z o.o.), joint-stock companies (S.A.), partnerships, foundations and associations. It is maintained by the Ministry of Justice and is the authoritative answer to "does this Polish company legally exist, and what are its statutory details". Sole traders are &lt;strong&gt;not&lt;/strong&gt; in the KRS; they live in a separate register, CEIDG.&lt;/p&gt;

&lt;h2&gt;
  
  
  Query it in one call
&lt;/h2&gt;

&lt;p&gt;You need a key. The free plan is a 14-day trial with 1,000 calls and no card, and a key takes about a minute at &lt;a href="https://www.prometiam.com/signup" rel="noopener noreferrer"&gt;prometiam.com/signup&lt;/a&gt;. Then search by name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.prometiam.com/functions/v1/risk-api/companies/search?country=PL&amp;amp;name=ORLEN"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$PROMETIAM_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or look a company up directly by its KRS number (10 digits, zero-padded):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.prometiam.com/functions/v1/risk-api/companies/search?country=PL&amp;amp;company_number=0000028860"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$PROMETIAM_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the response, as returned on 9 September 2026:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;28860&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"company_number"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0000028860"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"nip"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"7740001454"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"regon"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"61018820100000"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"company_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ORLEN SPÓŁKA AKCYJNA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"legal_form"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SPÓŁKA AKCYJNA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"province"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MAZOWIECKIE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"city"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PŁOCK"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"address"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CHEMIKÓW 7, 09-411 PŁOCK"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"postal_code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"09-411"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"active"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"capital_amount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1451177561.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"capital_currency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PLN"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"founding_date"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2001-07-19"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PL"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"pagination"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"count"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"has_more"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"next_cursor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"meta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"attribution"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Source: Krajowy Rejestr Sądowy (KRS), Ministry of Justice, Poland."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"coverage_note"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Poland is company-level (KRS active legal entities). Directors, insolvency (KRZ) and beneficial ownership (CRBR) are not yet included; sole traders (CEIDG) are separate."&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that the &lt;code&gt;meta&lt;/code&gt; block states the scope on every call. The same thing in Python, standard library only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="n"&gt;BASE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.prometiam.com/functions/v1/risk-api&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;HEAD&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;PROMETIAM_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;search_krs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;qs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlencode&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;country&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/companies/search?&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;qs&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;HEAD&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;search_krs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ORLEN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company_number&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;nip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To pull the full record for one entity, follow up with the detail endpoint using the numeric &lt;code&gt;id&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.prometiam.com/functions/v1/risk-api/companies/28860?country=PL"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$PROMETIAM_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The detail adds &lt;code&gt;voivodeship&lt;/code&gt;, the PKD code in &lt;code&gt;activity_code&lt;/code&gt; (&lt;code&gt;19.20.Z&lt;/code&gt; for ORLEN), the registered address split into parts, and the dates the record was first and last seen in the register.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get back
&lt;/h2&gt;

&lt;p&gt;For every KRS entity the API returns the &lt;strong&gt;company-level&lt;/strong&gt; fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;, the full registered legal name&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KRS number&lt;/strong&gt; (&lt;code&gt;company_number&lt;/code&gt;), the 10-digit court register id&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NIP&lt;/strong&gt;, the tax identification number most KYB checks key on&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;REGON&lt;/strong&gt;, the national statistics number&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legal form&lt;/strong&gt;, for example &lt;em&gt;spółka akcyjna&lt;/em&gt; or &lt;em&gt;spółka z ograniczoną odpowiedzialnością&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PKD code&lt;/strong&gt;, Poland's activity classification (the NACE equivalent), on the detail record&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Registered address&lt;/strong&gt;, city, postal code and voivodeship&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share capital&lt;/strong&gt; in PLN&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Registration date&lt;/strong&gt; and &lt;strong&gt;status&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The honest caveat, and the API says it on every response: this is &lt;strong&gt;company-level data only&lt;/strong&gt;. Board members, KRZ insolvency proceedings and CRBR beneficial ownership are not exposed yet. If your KYB flow needs the management board or a UBO chain, you still need a supplementary source for that field. Better to know that before you integrate than to discover a &lt;code&gt;null&lt;/code&gt; in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoring Polish counterparties
&lt;/h2&gt;

&lt;p&gt;Poland is one of the three countries with monitoring. &lt;code&gt;POST /monitor&lt;/code&gt; with the company's &lt;code&gt;id&lt;/code&gt; subscribes it, and you receive a signed webhook when its status changes, so a dissolution or a name change reaches you without a daily poll.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters now
&lt;/h2&gt;

&lt;p&gt;The EU's Anti-Money Laundering Regulation applies from 10 July 2027 and harmonises customer due diligence across the Union, including verification of legal entities against official registers. Teams onboarding Polish counterparties today are building the checks they will be audited on then. A programmatic way to confirm that a counterparty exists, is active and matches the NIP on the invoice is the first of those checks, and the one most often still done by hand against the court portal.&lt;/p&gt;

&lt;h2&gt;
  
  
  How this compares to the alternatives
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scraping the KRS portal.&lt;/strong&gt; The official portal is built for one-off human lookups. Scraping it means brittle HTML parsing, session handling and rate-limit roulette, and it breaks whenever the markup changes. A typed JSON API removes that maintenance surface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free per-entity lookup tools.&lt;/strong&gt; Fine for a one-off check. They fall down when you need to verify hundreds of counterparties on a schedule, want a stable JSON contract, or need EU data residency for an audit trail. If you only ever check one company a week, a free lookup is the right call; an API earns its keep at volume.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is KRS data free to reuse?&lt;/strong&gt;&lt;br&gt;
The register is public official data, so the facts themselves are not proprietary. What you pay an API for is delivery: normalised JSON, search, uptime and EU-hosted infrastructure, not a licence on the raw facts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I look up a company by NIP?&lt;/strong&gt;&lt;br&gt;
Pass it directly: &lt;code&gt;GET /companies/search?country=PL&amp;amp;nip=7740001454&lt;/code&gt; is an exact match, and &lt;code&gt;regon=&lt;/code&gt; works the same way (9 or 14 digits). Every response carries the KRS number, the NIP and the REGON, so you can store all three. There is also a free &lt;a href="https://www.prometiam.com/tools/krs-lookup" rel="noopener noreferrer"&gt;KRS, NIP and REGON lookup&lt;/a&gt; on the site that runs the same call without a key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it include directors or beneficial owners?&lt;/strong&gt;&lt;br&gt;
Not yet. Poland is company-level: name, KRS, NIP, REGON, legal form, PKD, address, capital, dates, status. Board members, KRZ insolvency and CRBR data are planned, not live, so do not build a UBO check on this endpoint today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much does it cost?&lt;/strong&gt;&lt;br&gt;
A free 14-day trial with 1,000 calls and no card. Paid plans are Starter at €9.99 for 10,000 calls, Professional at €29.99 for 100,000 (adds full sanctions screening), Scale at €99.99 for 1,000,000, and Enterprise. Data is EU-resident.&lt;/p&gt;




&lt;p&gt;The same &lt;code&gt;country=&lt;/code&gt; pattern works across the other registries on the API, Spain, France, the UK, Ireland and Norway, so one integration covers six jurisdictions with one response shape. The deeper walkthrough is the &lt;a href="https://www.prometiam.com/guides/poland-kyb-api" rel="noopener noreferrer"&gt;Poland KYB API guide&lt;/a&gt;; a free trial key is at &lt;a href="https://www.prometiam.com/signup" rel="noopener noreferrer"&gt;prometiam.com/signup&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>poland</category>
      <category>fintech</category>
      <category>kyb</category>
    </item>
  </channel>
</rss>
