<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Topograph Changelog</title>
        <link>https://docs.topograph.co/changelog</link>
        <description>Stay updated with the latest changes and improvements to Topograph</description>
        <lastBuildDate>Mon, 07 Sep 2026 12:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Topograph</generator>
        <language>en</language>
        <copyright>All rights reserved 2026, Topograph</copyright>
        <item>
            <title><![CDATA[Development environments: a free sandbox that answers for every country with generated data, a fast mode for Hungary at 0.50 credits, more accurate reconstructed shareholders, activity codes that name their classification revision, and UBO access controls]]></title>
            <link>https://docs.topograph.co/changelog#week-36-2026</link>
            <guid>https://docs.topograph.co/changelog#week-36-2026</guid>
            <pubDate>Mon, 07 Sep 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Development environments</h2>
<p>Every account can now create <strong>development environments</strong>: isolated sandboxes that answer for <strong>every country we support</strong> with generated data, bill nothing real, and never touch a register.</p>
<p>An environment has its own API key, its own webhook endpoints and signing secret, its own request history, and its own members and roles. Create one from <strong>Developer</strong> in the app, or over the sandbox API — one per developer, or one per CI run:</p>
<pre><code class="language-bash">curl -X POST https://api.sandbox.topograph.co/v2/environments \
  -H &quot;x-api-key: sk_dev_YOUR_DEFAULT_SANDBOX_KEY&quot; -H &quot;Content-Type: application/json&quot; \
  -d &#39;{&quot;name&quot;: &quot;ci&quot;}&#39;
</code></pre>
<p>Development environments run on their own deployment, <strong><code>api.sandbox.topograph.co</code></strong>, with its own database and no access to any register. Swap the key and the base URL; everything else is identical: same endpoints, same request bodies, same response shapes, same webhooks. Development keys are prefixed <code>sk_dev_</code>.</p>
<h3>It behaves like the real thing, including when it fails</h3>
<p>The data is generated from each country&#39;s own manifest, so identifiers are in that country&#39;s real format, under that country&#39;s real identifier keys, with its real legal forms, roles, activity codes and document catalog. The same identifier always returns the same company.</p>
<p><strong>Every public error code has a magic identifier</strong> — use <code>SOURCE_UNAVAILABLE</code>, <code>INSUFFICIENT_FUNDS</code>, <code>ONBOARDING_TIMEOUT</code> and the rest as the company id and you get that exact error, with the live message, the live HTTP status and the live retryability. There are also identifiers for delivery delays, dissolved and inactive companies, ownership structures, search result sets and match reasons, and the data shapes integrations actually break on: <code>SPARSE</code>, <code>UNICODE</code>, <code>LONG_NAMES</code>, <code>MANY_RESULTS</code>. <code>RATE_LIMITED</code> returns a genuine <code>429</code> with <code>Retry-After</code>.</p>
<h3>Billing you can exercise, with virtual credits</h3>
<p>Requests are priced at the <strong>real catalog rates</strong> and paid for from a virtual wallet, so you see what an integration would cost. Set the balance yourself and watch it deplete into a genuine <code>insufficient_funds</code> from the same billing path production uses:</p>
<pre><code class="language-bash">curl -X PUT https://api.sandbox.topograph.co/v2/sandbox/wallet \
  -H &quot;x-api-key: sk_dev_YOUR_KEY&quot; -H &quot;Content-Type: application/json&quot; \
  -d &#39;{&quot;balanceInCreditCents&quot;: 120, &quot;autoRefill&quot;: false}&#39;
</code></pre>
<p>Nothing reaches Stripe, and no card is ever charged.</p>
<h3>Companies you define, and a clean slate</h3>
<p>Generated data covers everything, which is the wrong tool when you need one <em>specific</em> company — to reproduce a bug, build a demo, or assert on your own matching logic. Define one, and everything you leave out stays generated:</p>
<pre><code class="language-bash">curl -X POST https://api.sandbox.topograph.co/v2/sandbox/companies \
  -H &quot;x-api-key: sk_dev_YOUR_KEY&quot; -H &quot;Content-Type: application/json&quot; \
  -d &#39;{&quot;countryCode&quot;: &quot;FR&quot;, &quot;company&quot;: {&quot;legalName&quot;: &quot;Acme Trading SAS&quot;}}&#39;
</code></pre>
<p><code>PATCH</code> it and the next request returns the new version, which is what a monitoring integration needs to see a real change detected. <code>POST /v2/sandbox/reset</code> clears an environment&#39;s history and restores its wallet between CI runs.</p>
<h3>Coverage gaps are honest</h3>
<p>A datapoint a country does not support fails in a development environment exactly as it does live. A sandbox that answers everything would let you ship an integration that breaks in production, so this one does not.</p>
<p>Full details in the <a href="/guides/development-environment">development environments guide</a>.</p>
<h2>The TEST country is deprecated</h2>
<p><a href="/guides/test-country"><code>TEST</code></a> keeps working and is not going away without notice, but development environments supersede it: they cover every country rather than one placeholder, in that country&#39;s real formats, and they understand the same magic identifiers plus many more. New integrations should start with a development environment.</p>
<h2>France: your NACE class is now the one INSEE assigned the company, and the NAF 2025 code is published</h2>
<p>INSEE has published NAF 2025, the French implementation of NACE Rev. 2.1, and already assigns every active company its NAF 2025 code in Sirene ahead of the 1 January 2027 cutover. A NAF 2025 code is a NACE Rev. 2.1 class with one French letter appended, so the company&#39;s exact 4-digit class is right there. <code>NACE</code> and <code>NACE_REV21</code> now read that assignment directly instead of converting the old APE code, which no table can do as well: INSEE recodes each company on its actual activity, so a consultancy filed as <code>62.02A</code> can come back as <code>73.12</code> (media representation) where a conversion would have said <code>62.20</code>.</p>
<p>The code itself is published under a new field, <strong><code>NAF_2025</code></strong> (e.g. <code>86.93Y</code>, with INSEE&#39;s official label). It is present whenever INSEE has assigned one, which in a live sample was 99.5 % of active companies; the remainder are units still coded in a pre-2008 nomenclature, almost all ceased, which keep the correspondence-based <code>NACE</code> described below. Responses cached before this release keep their previous codes until they expire.</p>
<h2>French activity codes resolve to a precise NACE class more often</h2>
<p>The letter on a French APE/NAF code (<code>8690F</code>, <code>6420Z</code>) is a national subdivision of the NACE class, and until now we dropped it before standardizing. That cost precision: a holding company declared as <code>6420Z</code> came back as NACE <code>64.2</code>, the group, because the bare class <code>64.20</code> splits into <code>64.21</code> and <code>64.22</code> in Rev. 2.1 and the code alone cannot say which.</p>
<p>France&#39;s APE codes are now resolved through INSEE&#39;s own <em>Table de correspondances NAF rev. 2 -&gt; NAF 2025</em>, which names a single NACE Rev. 2.1 class for 541 of the 732 French sub-classes:</p>
<table>
<thead>
<tr>
<th>APE code</th>
<th>Before</th>
<th>Now</th>
</tr>
</thead>
<tbody><tr>
<td><code>6420Z</code> Activites des societes holding</td>
<td><code>64.2</code></td>
<td><code>64.21</code></td>
</tr>
<tr>
<td><code>8690A</code> Ambulances</td>
<td><code>86.9</code></td>
<td><code>86.92</code></td>
</tr>
<tr>
<td><code>4329A</code> Travaux d&#39;isolation</td>
<td><code>43.2</code></td>
<td><code>43.23</code></td>
</tr>
<tr>
<td><code>1071B</code> Cuisson de produits de boulangerie</td>
<td><code>10.71</code> (food manufacturing)</td>
<td><code>47.24</code> (retail)</td>
</tr>
</tbody></table>
<p>Eighteen sub-classes change: thirteen gain a full 4-digit class, and five were pointing at the wrong class entirely — in-store baking, ambulance-adjacent transport and three others move to the class INSEE actually assigns them. Where a sub-class genuinely straddles several Rev. 2.1 classes the group-level answer stands, so nothing gets less precise, and the register&#39;s own APE code is still published in full under <code>activities.NAFREV2</code> — now carrying INSEE&#39;s official French label instead of a placeholder.</p>
<h2>A 4-digit NACE class on every French company: <code>NACE_REV2</code></h2>
<p>Upconverting to NACE Rev. 2.1 has a hard limit that no mapping can fix: <strong>Rev. 2.1 deleted some Rev. 2 classes.</strong> <code>86.90</code> has no Rev. 2.1 successor of its own, so the most precise honest answer is the group <code>86.9</code>. For 17 further classes the successors scatter across unrelated divisions and there is no Rev. 2.1 code at all, so <code>activities.NACE</code> was simply absent — including for construction of residential buildings, car sales and laundry.</p>
<p>French companies now also carry <strong><code>NACE_REV2</code></strong>: the NACE Rev. 2 class the register itself recorded. NAF rév. 2 <em>is</em> the French implementation of NACE Rev. 2, so an APE code&#39;s first four digits are that class — nothing is converted or guessed, and the key is present on every French company whose APE code we hold.</p>
<pre><code class="language-json">&quot;activities&quot;: {
  &quot;NAFREV2&quot;:    [{ &quot;code&quot;: &quot;8690F&quot;, &quot;description&quot;: &quot;Activités de santé humaine non classées ailleurs&quot; }],
  &quot;NACE_REV2&quot;:  [{ &quot;code&quot;: &quot;86.90&quot;, &quot;description&quot;: &quot;Other human health activities&quot; }],
  &quot;NACE&quot;:       [{ &quot;code&quot;: &quot;86.9&quot;,  &quot;description&quot;: &quot;Other human health activities&quot; }],
  &quot;NACE_REV21&quot;: [{ &quot;code&quot;: &quot;86.9&quot;,  &quot;description&quot;: &quot;Other human health activities&quot; }]
}
</code></pre>
<p>Read <code>NACE_REV2</code> if your parser needs four digits for every company; read <code>NACE</code> / <code>NACE_REV21</code> if you need one revision comparable across countries. They are different revisions of the same classification, so do not mix them in a single field: <code>86.90</code> is not a Rev. 2.1 code and <code>86.9</code> is not a Rev. 2 class. Existing keys are unchanged.</p>
<h2>Hungary: a fast mode at 0.50 credits</h2>
<p>Hungarian company data previously had one path: the certified <em>Cégkivonat</em>, bought from the register per lookup at a variable price that usually landed near 5 credits. Screening at volume paid certified-document prices for answers that did not need to be certified.</p>
<p><code>mode: &quot;onboarding&quot;</code> now reads the stored company extract (<em>Tárolt cégkivonat</em>) that the Ministry of Justice publishes on Cégportál, at a flat <strong>0.50 credits</strong>, and returns the same five datapoints: <code>company</code>, <code>legalRepresentatives</code>, <code>shareholders</code>, <code>otherKeyPersons</code> and <code>establishments</code>.</p>
<pre><code class="language-bash">curl -X POST https://api.topograph.co/v2/company \
  -H &quot;x-api-key: $TOPOGRAPH_API_KEY&quot; -H &quot;Content-Type: application/json&quot; \
  -d &#39;{&quot;countryCode&quot;: &quot;HU&quot;, &quot;companyId&quot;: &quot;1809110530&quot;, &quot;mode&quot;: &quot;onboarding&quot;,
       &quot;dataPoints&quot;: [&quot;company&quot;, &quot;legalRepresentatives&quot;, &quot;shareholders&quot;]}&#39;
</code></pre>
<p>The register refreshes that stored extract periodically, not on every change, so onboarding mode is <strong>not authoritative</strong>. A recent filing may not appear yet, and no certified document is issued. <code>mode: &quot;verification&quot;</code> is unchanged: same certified extract, same price, still the default.</p>
<h2>Hungary: ownership percentages are no longer estimated</h2>
<p>Hungarian extracts describe member participation in words rather than as a figure. <em>&quot;A szavazati jog mértéke minősített többségű befolyást biztosít&quot;</em> means the voting right confers qualified-majority influence, at least 75%. Where the register publishes no capital contribution per member, <code>sharePercentage</code> is now <strong>omitted</strong> instead of being reported as a number derived from that wording.</p>
<p>Shareholders are still returned with their identity; only the percentage is absent, and it is present whenever the register publishes enough to compute it. If you were reading <code>sharePercentage</code> for Hungarian companies, treat it as optional rather than assuming a value.</p>
<h2>Italy: share capital now travels with the shareholder list</h2>
<p>The Italian register does not publish share capital on the company record. It files it with the <strong>shareholder list</strong>, which is a separate, separately priced record.</p>
<p>In <code>mode: &quot;verification&quot;</code>, <code>company.capital</code> for Italy is now returned when that shareholder record has been retrieved for the company, and omitted when it has not:</p>
<table>
<thead>
<tr>
<th>Your request</th>
<th><code>company.capital</code></th>
</tr>
</thead>
<tbody><tr>
<td><code>company</code> and/or <code>legalRepresentatives</code> alone</td>
<td>Omitted</td>
</tr>
<tr>
<td><code>company</code> together with <code>shareholders</code></td>
<td>Returned</td>
</tr>
<tr>
<td><code>company</code> alone, within 24h of a <code>shareholders</code> request for the same company</td>
<td>Returned</td>
</tr>
<tr>
<td><code>mode: &quot;onboarding&quot;</code></td>
<td>Returned, as before</td>
</tr>
</tbody></table>
<p><strong>If you need share capital on every Italian lookup, add <code>shareholders</code> to <code>dataPoints</code>.</strong> You then get the ownership breakdown and the capital figure together, and the capital costs nothing on top of the shareholders block.</p>
<p>Why we changed it: filling in that one field meant ordering the shareholder record on most Italian company lookups, at the price of a second block. Worse, a request that asked for both <code>company</code> and <code>shareholders</code> ran the two in parallel and ordered the same record twice. We have stopped ordering it speculatively.</p>
<p>We deliberately did <strong>not</strong> close the gap with a third-party source. Share capital is available from aggregators that resell register data, and in <code>mode: &quot;onboarding&quot;</code> that is exactly where it comes from. But in verification mode every field we return comes from the register itself, and we would rather omit a field than quietly downgrade where it came from without telling you.</p>
<p>Italian prices are unchanged. Full detail on the <a href="/essentials/italy#share-capital-in-verification-mode">Italy page</a>.</p>
<h2>Workspaces can now turn off UBO data access</h2>
<p>Every workspace can request ultimate beneficial owner (UBO) data, on by default. Turn it off per workspace with the new <code>uboEnabled</code> field on the <a href="/essentials/workspaces#ubo-data-access">workspace endpoints</a>:</p>
<pre><code class="language-bash">curl -X PATCH &quot;https://api.topograph.co/v2/workspaces/acme-paris&quot; \
  -H &quot;x-api-key: YOUR_API_KEY&quot; \
  -H &quot;Content-Type: application/json&quot; \
  -d &#39;{&quot;uboEnabled&quot;: false}&#39;
</code></pre>
<p>You can also set it when creating a workspace. A workspace with UBO access turned off gets <code>datapoint_not_supported</code> when <code>ultimateBeneficialOwners</code> is requested.</p>
<p>Only keep UBO data access enabled for a workspace whose legal entity is AML-obliged. UBO data carries regulatory obligations under AML law, and we may revoke a workspace&#39;s UBO access if the entity attached to it is not AML-obliged.</p>
<h2>Activity codes now tell you which classification revision you are holding</h2>
<p>A code like SIC <code>62012</code> or SBI <code>62010</code> means different things in different revisions of its classification, and until now <code>company.activities</code> gave you the code without saying which revision it belonged to. Every key that can answer that question now has a revision-explicit sibling:</p>
<pre><code class="language-json">&quot;activities&quot;: {
  &quot;NACE&quot;:       [{ &quot;code&quot;: &quot;62.10&quot;, &quot;description&quot;: &quot;Computer programming activities&quot; }],
  &quot;NACE_REV21&quot;: [{ &quot;code&quot;: &quot;62.10&quot;, &quot;description&quot;: &quot;Computer programming activities&quot; }],
  &quot;SIC&quot;:        [{ &quot;code&quot;: &quot;62012&quot;, &quot;description&quot;: &quot;Business and domestic software development&quot; }],
  &quot;SIC_2007&quot;:   [{ &quot;code&quot;: &quot;62012&quot;, &quot;description&quot;: &quot;Business and domestic software development&quot; }]
}
</code></pre>
<p>The pair holds the same items. Read the revision-explicit key when the revision matters, the original when it does not.</p>
<p><strong>Nothing was renamed, removed, or changed.</strong> <code>activities.NACE</code>, <code>activities.SIC</code> and every other existing key keep exactly the contents they have always had. This is additive: if you parse activities today, your integration is unaffected and needs no change.</p>
<p>Two revisions are fixed platform-wide and never vary by country: <code>ISIC_REV5</code> (ISIC Rev. 5) and <code>NACE_REV21</code> (NACE Rev. 2.1). A register that publishes NACE Rev. 2 is upconverted before we publish it, so <code>NACE_REV21</code> is Rev. 2.1 even where the source is not.</p>
<p>The national keys name whichever revision the register actually serves. We checked each one against the register rather than against the national statistics office, because the two routinely disagree — and in both directions. Several countries moved during 2025 and 2026: the Dutch Handelsregister converted every active registration to SBI 2025, Denmark&#39;s CVR moved to Dansk Branchekode 2025, Finland&#39;s YTJ to TOL 2025, and Greece&#39;s nomenclature to KAD 2025.</p>
<p>Where a register mixes revisions under one field, you get a key per revision rather than one averaged answer. Belgium stamps every activity row with its own version, so a company can return <code>NACE_BEL_2003</code>, <code>NACE_BEL_2008</code> or <code>NACE_BEL_2025</code>; Croatia&#39;s court register does the same, giving <code>NKD_1994</code>, <code>NKD_2007</code> or <code>NKD_2025</code>, and a single company filed across revisions returns one key for each.</p>
<p>And where a register genuinely does not record which revision a code belongs to, we publish <strong>no</strong> revision-explicit key rather than guess one. That is the honest answer for US <code>NAICS</code> (each state records the vintage current when the entity registered and never says which), Polish <code>PKD</code>, Romanian <code>CAEN</code> and Bulgarian <code>NKID</code>. Those keep their original key alone. The country pages and <code>/v2/catalog</code> list the exact keys each country returns, so you can see this per country rather than discover it from a response.</p>
<p>One related correction, for Croatia only: codes the court register stamps as NKD 1994 are no longer folded into <code>NACE</code>. NKD 2007 is Croatia&#39;s NACE Rev. 2 transposition and NKD 1994 is not, so treating a 1994 code as Rev. 2 produced a NACE class the register never declared.</p>
<h2>Shareholders reconstructed from filings: substantially more accurate</h2>
<p>In Belgium, France, the United Kingdom and Iceland the register publishes no structured shareholder list, so <code>shareholders</code> is reconstructed by reading the company&#39;s filings — articles, notarial deeds, capital increases, confirmation statements — and folding them forward to today&#39;s cap table. That reconstruction has been rebuilt.</p>
<p><strong>What changes in your responses</strong></p>
<ul>
<li><strong>Holders we used to miss now appear.</strong> The most common failure was reading a company&#39;s <em>controlling-interest</em> disclosure (a UK PSC entry, a beneficial-owner section) as if it were the share register, and reporting one holder at 100% when the share list named seven. Those sections are now used only to cross-check a cap table built from the share lists themselves.</li>
<li><strong>Fewer invented figures.</strong> Where filings established that several people hold shares but never stated the split, the previous behaviour could distribute the total evenly between them. A holder whose stake the filings do not state is now returned by name with the amount fields absent, rather than with a plausible-looking number.</li>
<li><strong>Partial cap tables now say they are partial.</strong> When part of the capital genuinely cannot be attributed from the filings — a transfer a jurisdiction never requires to be filed, a redacted deed, an undisclosed pool — you will more often see an explicit entry of <code>&quot;type&quot;: &quot;aggregate&quot;</code> carrying that remainder, instead of a table that silently adds up to less than the company. Treat an <code>aggregate</code> entry as &quot;these shares exist and the filings do not name their holder&quot;.</li>
<li><strong>Reconstruction is roughly twice as fast</strong>, so requests that include <code>shareholders</code> for these countries return sooner.</li>
</ul>
<p>The response shape is unchanged; no integration needs updating.</p>
<p><strong>How we know it is better, and how it stays better</strong></p>
<p>Every change above is measured, not asserted. We built a frozen benchmark of real companies — the filing set captured exactly as it was, paired with a cap table verified by hand or against a register that publishes one independently — and the new reconstruction is scored against it on entity accuracy, on ownership percentages, and on whether it correctly declines to answer where the documents are silent. It beats the previous implementation on every one of those, on identical inputs.</p>
<p>That benchmark now runs as a regression gate: cases include the specific mistakes customers reported to us, so a change that reintroduces one is caught before it ships rather than after. When a customer tells us a cap table is wrong and we fix it, that company becomes a permanent case in the set.</p>
<h2>Italy: residence addresses, gender and nationality for individual legal representatives</h2>
<p>Individual legal representatives of Italian companies now include the residence address the Registro Imprese files for them, along with their gender and, where the register publishes it, their nationality:</p>
<pre><code class="language-json">&quot;legalRepresentatives&quot;: [
  {
    &quot;type&quot;: &quot;individual&quot;,
    &quot;role&quot;: { &quot;localName&quot;: &quot;Amministratore unico&quot;, &quot;standardized&quot;: &quot;Director&quot; },
    &quot;individual&quot;: {
      &quot;name&quot;: { &quot;fullName&quot;: &quot;Marco Rossi&quot; },
      &quot;gender&quot;: &quot;Male&quot;,
      &quot;birthDate&quot;: { &quot;year&quot;: 1980, &quot;month&quot;: 5, &quot;day&quot;: 15 },
      &quot;birthAddress&quot;: { &quot;city&quot;: &quot;Milano&quot;, &quot;region&quot;: &quot;MI&quot;, &quot;countryCode&quot;: &quot;IT&quot; },
      &quot;residenceAddress&quot;: {
        &quot;addressLine1&quot;: &quot;Via Giuseppe Verdi 8&quot;,
        &quot;city&quot;: &quot;Milano&quot;,
        &quot;postalCode&quot;: &quot;20121&quot;,
        &quot;region&quot;: &quot;MI&quot;,
        &quot;countryCode&quot;: &quot;IT&quot;
      }
    }
  }
]
</code></pre>
<p>This covers company officers and sole traders alike, in verification mode. Birth places also improved: a representative born outside Italy now carries their real birth country in <code>birthAddress.countryCode</code> instead of defaulting to Italy.</p>
<p>The fields are additive, so existing integrations parse responses unchanged. Responses are cached for 24 hours: a company you queried before the release keeps its cached response until the cache expires, then picks up the new fields on the next request.</p>
<h2>Activity codes now identify the company&#39;s main activity</h2>
<p>Every activity code item in <code>company.activities</code> (and on establishments) can now carry <code>isMainActivity: true</code>, marking the code the register declares as the company&#39;s main — primary, prevailing — activity:</p>
<pre><code class="language-json">&quot;activities&quot;: {
  &quot;NACE&quot;: [
    { &quot;code&quot;: &quot;62.01&quot;, &quot;description&quot;: &quot;Computer programming activities&quot;, &quot;isAIInferred&quot;: false, &quot;isMainActivity&quot;: true },
    { &quot;code&quot;: &quot;62.02&quot;, &quot;description&quot;: &quot;Computer consultancy activities&quot;, &quot;isAIInferred&quot;: false }
  ]
}
</code></pre>
<p>Three things to know:</p>
<ul>
<li><strong>Absence means unknown, not secondary.</strong> The flag appears only where the register distinguishes a main activity — either explicitly (Belgium&#39;s MAIN classification, Poland&#39;s <em>działalność przeważająca</em>, Croatia&#39;s <em>pretežita djelatnost</em>, Greece&#39;s Κύρια, Hungary&#39;s <em>főtevékenység</em>, Norway&#39;s first <em>næringskode</em>, Singapore&#39;s primary SSIC, and more) or because the register publishes exactly one code, which is its declared main activity (France&#39;s APE, Finland&#39;s main business line, Luxembourg, Spain, Ukraine, Serbia, and others). Registers that publish an undifferentiated list — the UK&#39;s SIC codes, for example — carry no flag on any code.</li>
<li><strong>Derived codes inherit it.</strong> When we derive NACE or ISIC from a register-native code, the derived code keeps the flag of the code it came from, so you can read <code>isMainActivity</code> on the standardized classifications without knowing each country&#39;s native system.</li>
<li><strong>At most one code per classification carries it</strong>, so <code>activities.NACE.find(a =&gt; a.isMainActivity)</code> is a safe way to pick one code per company.</li>
</ul>
<p>Where activity codes are AI-inferred from an activity description, the single best-match code is flagged as the main activity and carries <code>isAIInferred: true</code> alongside, so you can always tell a register-declared main activity from an inferred one.</p>
<p>The field is optional and additive — existing integrations parse responses unchanged. Each country page documents whether its register declares a main activity.</p>
<h2>Singapore: the Business Profile document is available again</h2>
<p>The ACRA Business Profile (<code>trade_register_extract</code>) is back in Singapore. It appears again in <code>GET /v2/company/{id}/documents</code> and can be ordered, and the <code>shareholders</code> and <code>legalRepresentatives</code> datapoints, which are read from it, resolve again with it.</p>
<p>It was briefly unavailable earlier this week while we fixed a problem delivering purchased documents from ACRA&#39;s portal. Orders complete reliably again.</p>
<p>Search, <code>company</code> in onboarding mode, and the onboarding profile were unaffected throughout, since they come from ACRA&#39;s open dataset (~2.07 million entities) rather than the portal.</p>
<p>If you were billed for a Singapore Business Profile that did not arrive during that window, contact us and we will refund it.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ask questions about coverage and pricing in plain English, any company request can now be downloaded as a PDF extract, Poland covers entities in neither KRS nor CEIDG, the published OpenAPI spec now matches the API, and country pages show indicative response times]]></title>
            <link>https://docs.topograph.co/changelog#week-35-2026</link>
            <guid>https://docs.topograph.co/changelog#week-35-2026</guid>
            <pubDate>Mon, 31 Aug 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Ask questions about coverage and pricing in plain English</h2>
<p>The pricing pages now carry an assistant. Ask it what a French company profile costs, which countries return UBOs, how fast a German profile comes back, which legal forms a country recognises, or whether to use onboarding or verification mode for a signup flow.</p>
<p>It answers from the live catalog and the documentation, not from a model&#39;s memory of them, so coverage, prices and response times are the current ones. Every answer names the sources it checked, so you can see what it read before quoting a figure internally.</p>
<p>It is the same catalog the <a href="/guides/topograph-mcp">Topograph MCP</a> serves, so an answer here and an answer in your editor agree.</p>
<p>Conversations are saved to your account. Close the tab, come back next week or on another device, and pick up where you left off.</p>
<p>Sign in and open <a href="https://www.topograph.co/pricing">/pricing</a> to try it.</p>
<h2>Any company request can now be downloaded as a PDF extract</h2>
<p>Add <code>/pdf</code> to a request you have already made, and you get a single-file company extract — profile, legal representatives, shareholders, ultimate beneficial owners, other key persons, establishments and the ownership graph, whichever of those you asked for:</p>
<pre><code class="language-bash">curl --request GET \
  --url https://api.topograph.co/v2/company/253299d1-e8d0-4268-945b-f175f98bc114/pdf \
  --header &#39;x-api-key: &lt;api-key&gt;&#39; \
  --output company-extract.pdf
</code></pre>
<p>It is free, and never billed again. The extract renders data the request already paid for, so it triggers no new fetch and you can re-download it as often as you like.</p>
<h3>You do not have to wait for the request to finish</h3>
<p>By default the extract renders whatever has arrived, matching <code>GET /v2/company/{requestId}</code>, which has always returned partial results while a request runs.</p>
<p>That is safe because a partial extract cannot be mistaken for a complete one. It carries its own disclosure:</p>
<ul>
<li>The seal reads <strong>PARTIAL</strong> rather than <strong>VERIFIED</strong>.</li>
<li>A <strong>Data completeness</strong> section lists every requested datapoint and whether it was included, is still being retrieved, or failed — with the reason it failed.</li>
<li>The <code>X-Topograph-Data-Status</code> response header carries <code>complete</code> or <code>partial</code>, so you can branch on it without opening the file.</li>
</ul>
<p>If you would rather have an error than a partial file — for an archival export that must not be a snapshot of a half-finished request — pass <code>requireComplete=true</code> and get a <code>409</code> naming what it is still waiting on:</p>
<pre><code class="language-json">{
  &quot;code&quot;: &quot;extract_data_incomplete&quot;,
  &quot;message&quot;: &quot;The request is still running, so the extract would be partial.&quot;,
  &quot;pendingDataPoints&quot;: [&quot;shareholders&quot;]
}
</code></pre>
<p>Only datapoints decide completeness. Documents are delivered as separate files and never appear in the extract, so a document still downloading does not hold the PDF back.</p>
<p>The seal also stops overstating what it knows. It reads <strong>UNVERIFIED</strong> where a datapoint came from a non-authoritative source, rather than claiming verification for everything.</p>
<p>See <a href="/essentials/retrieve_company#pdf-extract">Company Data</a>.</p>
<h2>Poland now covers entities that are in neither KRS nor CEIDG</h2>
<p>Polish company data came from two registers: <strong>KRS</strong> for legal entities and <strong>CEIDG</strong> for sole traders. An entity in neither was unreachable — most visibly a <strong>spółka cywilna</strong> (civil-law partnership), which holds a NIP and a REGON and trades normally, but is a contract between partners rather than a legal entity, so no entrepreneur register lists it.</p>
<p>We now also read the <strong>REGON</strong> register (<code>krajowy rejestr urzędowy podmiotów gospodarki narodowej</code>), the statistical register kept by Statistics Poland. Entry in it is compulsory for every entity in the national economy, so it reaches what the other two structurally cannot.</p>
<p>Two things change for a <code>spółka cywilna</code>, using its own NIP or REGON:</p>
<table>
<thead>
<tr>
<th></th>
<th>Before</th>
<th>Now</th>
</tr>
</thead>
<tbody><tr>
<td>Search</td>
<td>Returned only the individual partners</td>
<td>Returns the partnership itself, alongside its partners</td>
</tr>
<tr>
<td><code>GET /v2/company</code></td>
<td><code>notFound</code></td>
<td>Returns the partnership&#39;s profile</td>
</tr>
</tbody></table>
<p>The same applies to housing communities, foreign representative offices, schools and public-sector bodies.</p>
<p>Data served this way is attributed with a new register code, wherever register codes already appear (<code>dataSources.&lt;field&gt;.register</code>, and <code>source.register</code> on documents):</p>
<pre><code class="language-json">&quot;dataSources&quot;: {
  &quot;legalName&quot;: { &quot;type&quot;: &quot;live_from_registry&quot;, &quot;register&quot;: &quot;regon&quot; },
  &quot;legalForm&quot;: { &quot;type&quot;: &quot;live_from_registry&quot;, &quot;register&quot;: &quot;regon&quot; }
}
</code></pre>
<p><strong>REGON is a statistical register, so it returns identity only</strong> — legal name, short name, legal form, registered seat, activity codes (PKD) and the registration and closure dates. It records no owners, representatives or beneficial owners, so a company served from REGON returns no management board and no shareholders. Beneficial ownership is unchanged and still comes from CRBR.</p>
<p>REGON is queried <strong>only when neither KRS nor CEIDG holds the entity</strong>. Every company already covered is served exactly as before, from the same register, with the same fields — for anything in the court register, KRS remains richer and authoritative.</p>
<p>One limit worth knowing: no register issues an extract for a <code>spółka cywilna</code>, so <strong>documents are still requested per partner</strong>, using that partner&#39;s own NIP. See <a href="/essentials/poland">Poland</a>.</p>
<h2>The published OpenAPI spec now matches what the API returns</h2>
<p>Several of you told us the spec at <a href="https://docs.topograph.co/openapi.json">docs.topograph.co/openapi.json</a> disagreed with the responses you were getting. Where a client is generated from that file, the disagreement is not cosmetic: it rejects calls, or discards values it was told could not exist. Every case we know of is fixed, and the spec is now regenerated and checked on every change, so it cannot silently fall behind again.</p>
<h3><code>POST /v2/company</code> documents <code>201</code></h3>
<p>Creating a request has always answered <code>201 Created</code>. The spec listed only <code>200</code>, so a strictly generated client rejected every creation response. Both codes are now documented, and they mean different things:</p>
<table>
<thead>
<tr>
<th>Code</th>
<th>When</th>
</tr>
</thead>
<tbody><tr>
<td><code>201</code></td>
<td>A new request was created. Poll for the result with <code>requestId</code>.</td>
</tr>
<tr>
<td><code>200</code></td>
<td>You passed a <code>requestId</code> and got an existing result back. Nothing was created.</td>
</tr>
</tbody></table>
<p><code>POST /v2/onboarding</code> answers <code>201</code> on both paths and now says so. No behaviour changed on either endpoint; only the documentation was wrong.</p>
<h3>Every datapoint error code is listed</h3>
<p><code>dataStatus</code> could return codes the spec never mentioned, including <code>account_configuration_required</code>, <code>source_unavailable</code>, <code>no_data_available</code> and <code>budget_exceeded</code>. The enum is now derived from our internal registry, so it cannot fall out of step again.</p>
<p>Please still treat it as an open vocabulary: keep the raw string when you meet a code your client does not recognise, rather than dropping it. A code you cannot classify is more useful than no code at all.</p>
<h3>A monetary amount can arrive without a currency</h3>
<p><code>currency</code> was marked required on <code>MonetaryAmountDTO</code>, and some sources do not state one. A German Gesellschafterliste, for example, publishes a bare Nennbetrag. A client following the schema to the letter discarded the amount without warning.</p>
<p><code>currency</code> is now optional. When it is absent, the figure is still exactly what the register published, so keep it:</p>
<pre><code class="language-json">{ &quot;amount&quot;: 7484400, &quot;formatted&quot;: &quot;7,484,400&quot; }
</code></pre>
<p><code>formatted</code> is now always present, falling back to the bare grouped number when there is no currency to format against. <code>amount</code> remains a JSON number in every case: where we cannot express a value as one, we omit the whole object rather than publish a string.</p>
<h3>Control nature uses <code>null</code>, not <code>&quot;unknown&quot;</code></h3>
<p>  This changes a value in the response body. If you match on the string <code>&quot;unknown&quot;</code> for <code>control.details[].nature</code>, switch to a null check.</p>
<p><code>nature</code> carries three distinct facts, and they matter in compliance:</p>
<table>
<thead>
<tr>
<th>Value</th>
<th>Meaning</th>
</tr>
</thead>
<tbody><tr>
<td><code>&quot;direct&quot;</code> / <code>&quot;indirect&quot;</code></td>
<td>The register stated it.</td>
</tr>
<tr>
<td><code>null</code></td>
<td>The register stated the control, but not its nature.</td>
</tr>
<tr>
<td>Absent</td>
<td>The register said nothing about nature at all.</td>
</tr>
</tbody></table>
<p>The middle case is common and real: the Belgian UBO register and the German Transparenzregister never disambiguate, and a UK PSC statement either carries an indirect marker or nothing. It used to be published as the string <code>&quot;unknown&quot;</code>, which was not in the documented enum, so strict clients deleted it and could no longer tell &quot;the register does not know&quot; from &quot;no such information&quot;.</p>
<p>This applies to requests you made before the change too. Re-fetching an older <code>requestId</code> returns <code>null</code> where it previously returned <code>&quot;unknown&quot;</code>.</p>
<h3>Fields no longer promised</h3>
<p>Six fields were marked required that we cannot always deliver. They are now optional, which is simply an accurate description of what you were already receiving:</p>
<p><code>company.countryCode</code>, <code>control.description</code>, <code>ultimateBeneficialOwners[].control</code>, <code>companyRelationships[].company</code>, and, on requests, <code>id</code> and <code>countryCode</code> (both derived from the parent on a graph continuation).</p>
<p>Two moved the other way, because they are always present: <code>request.companyId</code> and <code>request.requestId</code>.</p>
<h3>What keeps it honest</h3>
<p>The spec is generated from the same classes that build the response, and CI now fails if the published file drifts from them, if a route answers with a status code it does not document, or if a schema annotation contradicts the field it describes. Our daily suite additionally checks live responses across every country we cover against the published spec.</p>
<h2>Country pages and the catalog now publish indicative response times</h2>
<p>Every country now carries indicative timings for search, for each datapoint in each mode, and for each document. They appear under <strong>Speed</strong> on the country pages, in the price list workbook, and on <code>/v2/catalog</code>:</p>
<pre><code class="language-json">&quot;performance&quot;: {
  &quot;search&quot;: { &quot;latencyMs&quot;: 2000 },
  &quot;datapoints&quot;: [
    { &quot;datapoint&quot;: &quot;company&quot;, &quot;mode&quot;: &quot;verification&quot;, &quot;latencyMs&quot;: 3000 }
  ],
  &quot;documents&quot;: [
    {
      &quot;documentType&quot;: &quot;financial_statements&quot;,
      &quot;latencyMs&quot;: 1000,
      &quot;withProcessing&quot;: { &quot;latencyMs&quot;: 30000 }
    }
  ]
}
</code></pre>
<p><strong>These figures are strictly indicative and are not contractually binding.</strong> Actual response times vary with load, register availability and rate limits, how much the register holds on a company, and the mode you request. They are not a service-level commitment.</p>
<p>What each figure covers:</p>
<table>
<thead>
<tr>
<th>Figure</th>
<th>Covers</th>
</tr>
</thead>
<tbody><tr>
<td><code>search</code></td>
<td>Time until the result you went on to fetch appeared.</td>
</tr>
<tr>
<td><code>datapoints[*]</code></td>
<td>The source that supplies the datapoint, per mode.</td>
</tr>
<tr>
<td><code>documents[*].latencyMs</code></td>
<td>The document file, which is released as soon as it is fetched.</td>
</tr>
<tr>
<td><code>documents[*].withProcessing</code></td>
<td>The same document including conversion and, where it yields structured data, that extraction.</td>
</tr>
</tbody></table>
<p><code>withProcessing</code> is present only where processing costs real time. A French financial statement is about one second to the file and thirty to the parsed figures.</p>
<p>A datapoint or document with too little traffic to estimate from is left out rather than guessed at, and <code>lowConfidence</code> marks a figure resting on a thin sample. A country with nothing to publish carries no <code>performance</code> block at all.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A succeeded datapoint now always carries its list, empty when the register published nothing]]></title>
            <link>https://docs.topograph.co/changelog#week-32-2026</link>
            <guid>https://docs.topograph.co/changelog#week-32-2026</guid>
            <pubDate>Mon, 10 Aug 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>A succeeded datapoint now always carries its list, empty when the register published nothing</h2>
<p>The list-shaped fields (<code>legalRepresentatives</code>, <code>otherKeyPersons</code>, <code>establishments</code>, <code>shareholders</code>, <code>subsidiaries</code>, <code>ultimateBeneficialOwners</code>) used to be omitted entirely when they had no entries. A datapoint could therefore report <code>&quot;status&quot;: &quot;succeeded&quot;</code> with no corresponding key in the body, which was indistinguishable from a datapoint that never ran.</p>
<p>They now follow one rule, in the API response and the webhook payload alike:</p>
<pre><code class="language-json">{
  &quot;request&quot;: {
    &quot;dataStatus&quot;: {
      &quot;dataPoints&quot;: { &quot;shareholders&quot;: { &quot;status&quot;: &quot;succeeded&quot; } }
    }
  },
  &quot;shareholders&quot;: []
}
</code></pre>
<table>
<thead>
<tr>
<th>Shape</th>
<th>Meaning</th>
</tr>
</thead>
<tbody><tr>
<td><code>[ … ]</code></td>
<td>The records the register published.</td>
</tr>
<tr>
<td><code>[]</code></td>
<td>The datapoint succeeded and the register published no records.</td>
</tr>
<tr>
<td>Key absent</td>
<td>Not requested, still running, or <code>failed</code>.</td>
</tr>
</tbody></table>
<p><code>succeeded</code> with a missing key can no longer happen. If you branch on presence (<code>if (response.shareholders)</code>), note that <code>[]</code> is truthy — switch to a length check. Nothing changes for a populated list, and no key that was previously present has been removed.</p>
<p>Worth knowing when reading an empty list: it means <em>the register holds no such record</em>, which is not always <em>the entity has none</em>. The Dutch KVK, for instance, registers a shareholder only when a company has a single 100% holder, so a BV with several shareholders returns <code>shareholders: []</code>. See <a href="/essentials/netherlands#reading-an-empty-shareholders-list">Netherlands</a> and <a href="/essentials/retrieve_company">Retrieve a company</a>.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Lithuania, statutory filing dates in four more countries, documents name their register, and more]]></title>
            <link>https://docs.topograph.co/changelog#week-31-2026</link>
            <guid>https://docs.topograph.co/changelog#week-31-2026</guid>
            <pubDate>Mon, 03 Aug 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Every supporting document now names the register it was collected from</h2>
<p>When data is derived from documents (reconstructed shareholders, and any other <code>ai_analysis</code> source), <code>dataSources</code> already listed <em>which</em> documents were involved. Each entry now also says <strong>where that document came from</strong>, via a <code>register</code> code:</p>
<pre><code class="language-json">&quot;documents&quot;: [
  { &quot;name&quot;: &quot;K-bis&quot;, &quot;date&quot;: &quot;2025-01-14&quot;, &quot;register&quot;: &quot;infogreffe&quot; },
  { &quot;name&quot;: &quot;Capital increase notice&quot;, &quot;date&quot;: &quot;2024-03-02&quot;, &quot;register&quot;: &quot;inpi&quot; }
]
</code></pre>
<p>The codes are the same vocabulary as <code>dataSources.&lt;field&gt;.register</code> and the <code>source.register</code> carried by every document in <code>availableDocuments</code>. The attribution is per-document rather than on the parent source, because a single reconstruction routinely draws on filings from more than one register. <code>register</code> is omitted when the register behind a document isn&#39;t known.</p>
<p>This is additive. No existing field changes shape. See <a href="/essentials/shareholders-extraction#identifying-reconstructed-shareholders">Shareholders Extraction</a>.</p>
<h2>Statutory filing dates now cover four more countries, read directly from the register&#39;s document</h2>
<p><code>company.statutoryFilings</code> now covers the Netherlands, Jersey, Singapore and Portugal, alongside the register-published countries it already covered.</p>
<p>For these four, the filing date comes from the register&#39;s own document text rather than a structured field, since the underlying registers don&#39;t expose one. See <a href="/essentials/compliance-signals">Compliance Signals &amp; Statutory Filings</a> for exactly what each country publishes, and how to tell these four apart from a register-stated date before building a compliance decision on top of them.</p>
<h2>Monitoring now surfaces credential-gated datapoints instead of failing silently</h2>
<p>A handful of datapoints require your own account credentials for a third-party register -- most notably <code>ultimateBeneficialOwners</code> in Germany, sourced from the Transparenzregister, which by law only grants access to obliged entities making their own AML/KYC check. Previously, monitoring a company for one of these datapoints without the required credentials configured would fail that datapoint on every scheduled recheck with no visibility beyond the raw API error.</p>
<p><code>POST /v2/monitors</code> now returns a <code>datapointNotices</code> array when a monitor is created for an account missing a required credential -- the monitor is still created, and every other datapoint is unaffected. Scheduled rechecks skip the affected datapoint rather than repeating a doomed fetch daily, and resume automatically once you configure the credential. You&#39;ll also receive a one-time <code>monitor.datapoint_blocked</code> webhook when a datapoint becomes unavailable this way, and <code>monitor.datapoint_unblocked</code> once it resumes -- these fire once per transition, not on every recheck.</p>
<p>See <a href="/essentials/monitoring#credential-gated-datapoints">Company Monitoring</a> and <a href="/essentials/germany#quirks--gotchas">Germany</a>.</p>
<h2>Statutory filing dates, and three new compliance signals</h2>
<p><code>company.statutoryFilings</code> is a new field carrying the periodic filing obligations a register holds a company to: the statutory annual accounts, and the confirmation filing that periodically confirms the company&#39;s particulars are current. Each obligation reports the period last filed and the one next due.</p>
<pre><code class="language-json">&quot;statutoryFilings&quot;: {
  &quot;accounts&quot;: {
    &quot;financialYearEnd&quot;: &quot;03-31&quot;,
    &quot;lastFiled&quot;: { &quot;periodStart&quot;: &quot;2024-04-01&quot;, &quot;periodEnd&quot;: &quot;2025-03-31&quot; },
    &quot;next&quot;: { &quot;periodStart&quot;: &quot;2025-04-01&quot;, &quot;periodEnd&quot;: &quot;2026-03-31&quot;, &quot;dueDate&quot;: &quot;2026-12-31&quot;, &quot;overdue&quot;: false }
  },
  &quot;annualFiling&quot;: {
    &quot;cadence&quot;: &quot;annual&quot;,
    &quot;lastFiled&quot;: { &quot;periodEnd&quot;: &quot;2025-10-25&quot; },
    &quot;next&quot;: { &quot;periodEnd&quot;: &quot;2026-10-25&quot;, &quot;dueDate&quot;: &quot;2026-11-08&quot;, &quot;overdue&quot;: false }
  }
}
</code></pre>
<p>Both obligations exist in nearly every jurisdiction under different local names, so this is a cross-country field rather than one register&#39;s schema. It ships for the United Kingdom (the full calendar for both obligations), Ireland (the annual return, including the NARD), Guernsey (the annual validation), and 15 US states (the annual or biennial report).</p>
<p><code>company.complianceFlags</code> gains three signals alongside the two overdue flags: <code>registeredCharges</code> (charges or mortgages over the company&#39;s assets), <code>insolvencyHistory</code> (insolvency proceedings in the company&#39;s history, so it stays set after a company recovers) and <code>liquidated</code>. All three ship for the United Kingdom.</p>
<p><strong>One behavioural change worth reading.</strong> A compliance flag now appears whenever the register formally states the signal, carrying the register&#39;s answer in <code>active</code>, not only when the answer is &quot;yes&quot;. So a UK company in good standing now returns <code>&quot;registeredCharges&quot;: { &quot;active&quot;: false }</code>, which is Companies House positively clearing it. An <strong>absent</strong> key means we hold no formal statement either way, and is not a clearance. This is additive: new keys appear with <code>active: false</code>, and no existing key changes shape. But if you treated the presence of a key as meaning &quot;something is wrong&quot;, switch to reading <code>active</code>.</p>
<p>Every country&#39;s manifest now declares exactly which flags and filing dates it populates, and whether its register ever states the negative, so you can tell &quot;the register says no&quot; from &quot;this country doesn&#39;t publish it&quot; before you integrate.</p>
<p>See <a href="/essentials/compliance-signals">Compliance Signals &amp; Statutory Filings</a>.</p>
<h2>Italy: a wrong identifier now answers immediately</h2>
<p><code>/v2/company</code> for Italy accepts the Codice Fiscale, and only the Codice Fiscale: 11 digits with a valid control digit, or the 16-character personal code for a sole proprietor. The <code>IT</code> prefix, surrounding whitespace, dots and hyphens, and lowercase input are all accepted and normalized to the bare uppercase form, so <code>IT01234567890</code> and <code>01234567890</code> are one company and one cache entry rather than two.</p>
<p>Anything else now returns <code>400 invalid_request</code> straight away, naming the expected format, and is not billed. The common case is a REA or CCIAA + REA code such as <code>RM-1734032</code>, which Italian register documents print next to the company name. Sending one used to take around 30 seconds and come back as &quot;the register is temporarily unavailable&quot;. A wrong identifier now reads as a wrong identifier.</p>
<p>If you hold a REA code, a sole proprietor&#39;s Partita IVA, or a company name, pass it to <a href="/essentials/search"><code>/v2/search</code></a>: it resolves all of them to the Codice Fiscale to use on <code>/v2/company</code>. See <a href="/essentials/italy#company-identifiers">Italy</a>.</p>
<h2>Lithuania now available</h2>
<p>Company data for Lithuania is available on <code>/v2/company</code> and <code>/v2/search</code>, covering the company profile: legal-entity code, registered name, registered office address, registration date, legal form and legal status, plus registered share capital for the forms that declare one. Entities removed from the register are covered too, and report their removal date.</p>
<p>Legal forms and statuses come from the register&#39;s own classifiers, so you get the Lithuanian name, the official English translation, and a standardized Topograph category for all 168 forms and 30 statuses.</p>
<p>Two things to know before you integrate:</p>
<ul>
<li><strong>Request Lithuania in <code>onboarding</code> mode.</strong> Data comes from the register&#39;s daily open-data extracts, so a change filed with the register can take up to 24 hours to appear. There is no live register query, and the default verification path has no source to resolve.</li>
<li><strong>Officers, shareholders and beneficial owners are not available.</strong> The register publishes only counts in its open data, never names: how many governing bodies an entity has, and how many participants split by resident or foreign and natural or legal person. No amount of processing turns that into a person, so these datapoints are not offered for Lithuania rather than returned empty.</li>
</ul>
<p>One coverage note: the register anonymises the names of individual enterprises (IĮ), general partnerships (TŪB) and limited partnerships (KŪB) in its open data, because those names contain personal names. Around 13,500 entities are affected. They return their legal-entity code, address, registration date, legal form and status as normal, but their registered name reads as the bare legal-form label. You can look them up by code, not find them by name.</p>
<p>See <a href="/essentials/lithuania">Lithuania</a> for the full reference.</p>
<h2>Send a test notification for a monitor</h2>
<p>You no longer have to wait for a real change to validate a monitoring integration. Open a monitor in the dashboard and click <strong>Send Test Notification</strong>, or call the new endpoint:</p>
<pre><code class="language-bash">curl -X POST https://api.topograph.co/v2/monitors/{monitorId}/test-notification \
  -H &quot;x-api-key: YOUR_API_KEY&quot; \
  -H &quot;Content-Type: application/json&quot; \
  -d &#39;{ &quot;changeCategories&quot;: [&quot;status&quot;] }&#39;
</code></pre>
<p>The event is built exactly as a genuine change notification is, with your own <code>monitorId</code> and <code>metadata</code> and the real company, so it exercises workflows that route on the metadata you set at monitor creation. The sample payload in the webhooks portal carries neither. You can pick the change category, or send the deactivation variant to exercise your cleanup branch. Your monitor is not modified.</p>
<p>Note that a test notification is deliberately indistinguishable from a real one, so what you test is what you get in production. If your pipeline opens a case for every notification, a test will open a real case. See <a href="/essentials/monitoring#step-4-test-your-integration">Company Monitoring</a>.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[One rule for sole entrepreneurs and non-profits, monitor metadata, and documents that name their issuing register]]></title>
            <link>https://docs.topograph.co/changelog#week-30-2026</link>
            <guid>https://docs.topograph.co/changelog#week-30-2026</guid>
            <pubDate>Mon, 27 Jul 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>One consistent rule for sole entrepreneurs and non-profits</h2>
<p>Sole entrepreneurs (entrepreneur individuel, ЕТ, ditta individuale, ΑΤΟΜΙΚΗ, ФОП, …) and non-profits now behave the same way in every country:</p>
<ul>
<li><strong><code>legalRepresentatives</code></strong> always returns the person behind a sole entrepreneur (with the identity fields the register publishes), and the officers/board for non-profits.</li>
<li><strong><code>ultimateBeneficialOwners</code></strong> returns the sole entrepreneur as the beneficial owner at 100% direct ownership where the country exposes a UBO datapoint. This is the AML-correct answer to &quot;who owns this business&quot;, even when the register requires no separate UBO declaration for these forms.</li>
<li><strong><code>shareholders</code></strong> is never synthesized for entities that have no share capital. Instead of an empty array (or, in some countries, an invented 100% record), the datapoint now completes with a new machine-readable error code:</li>
</ul>
<pre><code class="language-json">{
  &quot;status&quot;: &quot;failed&quot;,
  &quot;error&quot;: {
    &quot;code&quot;: &quot;datapoint_not_applicable&quot;,
    &quot;message&quot;: &quot;Sole entrepreneurs have no share capital, so no shareholder record exists. The owner is returned under legalRepresentatives and, where available, ultimateBeneficialOwners.&quot;,
    &quot;retryable&quot;: false
  }
}
</code></pre>
<p><code>datapoint_not_applicable</code> is a definitive, benign answer: don&#39;t retry it, and don&#39;t treat it as an outage. When <code>shareholders</code> is the only datapoint of its billing block in the request, the block is automatically refunded.</p>
<p>If you previously relied on a fabricated 100% shareholder for Bulgarian ЕТ, Hungarian egyéni vállalkozó, Ukrainian ФОП, or Irish business names, read the owner from <code>legalRepresentatives</code> / <code>ultimateBeneficialOwners</code> instead. The rollout is per-country (Bulgaria, Greece, France, Italy, Hungary, Ukraine, and Ireland first); countries not yet converted may still return an empty array for these entity types.</p>
<p>Full behavior matrix: <a href="/essentials/entity-types">Sole Entrepreneurs &amp; Non-Profits</a>.</p>
<h2>Metadata on monitors</h2>
<p><code>POST /v2/monitors</code> now accepts an optional <code>metadata</code> object: arbitrary key-value string pairs stored on the monitor and echoed back in monitor responses and in every <code>monitor.notification</code> webhook.</p>
<pre><code class="language-json">{
  &quot;companyId&quot;: &quot;932884117&quot;,
  &quot;countryCode&quot;: &quot;FR&quot;,
  &quot;metadata&quot;: { &quot;caseId&quot;: &quot;case-12345&quot; }
}
</code></pre>
<p>Use it to map webhook notifications back to your internal records without keeping your own monitor-to-case mapping. Company requests already supported <code>metadata</code>; monitors now work the same way. See <a href="/essentials/monitoring#step-1-create-a-monitor">Company Monitoring</a> for details.</p>
<p>Alongside this, the <code>monitorId</code> in <code>monitor.notification</code> webhooks now matches the <code>id</code> returned by <code>POST /v2/monitors</code>. Previously it carried an internal identifier that did not correspond to any monitor id visible in the API, so it could not be used for correlation. If you stored past webhook <code>monitorId</code> values, re-key on the ids from <code>GET /v2/monitors</code>.</p>
<h2>Documents now name their issuing register</h2>
<p>Every document returned by <code>/v2/company</code> now carries a <code>source</code> object identifying the register it comes from, in the same format as the <code>dataSources</code> section:</p>
<pre><code class="language-json">&quot;tradeRegisterExtract&quot;: {
  &quot;id&quot;: &quot;1c932de4-4610-5506-b48d-4e62529d58e8&quot;,
  &quot;name&quot;: &quot;Extrait K-bis (certifié)&quot;,
  &quot;source&quot;: {
    &quot;type&quot;: &quot;live_from_registry&quot;,
    &quot;register&quot;: &quot;infogreffe&quot;
  }
}
</code></pre>
<p>The field appears on every entry in <code>availableDocuments</code> and on every downloaded document, across all countries. Use <code>source.register</code> to show the issuing authority to your users, or to tell registers apart in countries where documents come from more than one source.</p>
<p>This is an additive change: no existing field moves. See <a href="/essentials/document-guide#document-source">Document Retrieval</a> for details.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Company history filing by filing, Czech shareholders, Hungarian annual accounts, and more]]></title>
            <link>https://docs.topograph.co/changelog#week-29-2026</link>
            <guid>https://docs.topograph.co/changelog#week-29-2026</guid>
            <pubDate>Mon, 20 Jul 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Company history, filing by filing</h2>
<p>Two registers now expose their full change history as a document, joining the Netherlands, Italy, and France under <code>documents.tradeRegisterHistory</code>.</p>
<ul>
<li><strong>Germany</strong>: the Chronologischer Abdruck, the chronological register print listing every entry ever made against a company.</li>
<li><strong>Ukraine</strong>: a certified extract from the state register, orderable like any other document.</li>
</ul>
<h2>Czech shareholders</h2>
<p>Shareholders (společníci) are now returned for Czech companies. Add <code>shareholders</code> to your <code>dataPoints</code> on any <code>/v2/company</code> request, with ownership stakes as recorded in the Commercial Register.</p>
<p>Coverage follows what the register publishes: limited liability companies (s.r.o.) list their members, while joint-stock companies (a.s.) do not publish a shareholder list and return an empty array.</p>
<h2>Hungarian annual accounts</h2>
<p>Annual financial statements for Hungarian companies are now available under <code>financialStatements</code>, sourced from the national filing portal.</p>
<h2>Beneficial ownership in three more jurisdictions</h2>
<p><code>ultimateBeneficialOwners</code> now resolves for <strong>Cyprus</strong>, <strong>Slovenia</strong>, and <strong>Portugal</strong>. Each request returns the parsed owners list plus the official certificate from the local register as a <code>ubo_extract</code> document.</p>
<p>These jurisdictions are fulfilled within one to three business days and carry a <strong>Manual</strong> badge on the pricing page.</p>
<h2>Every request now ends with a webhook</h2>
<p>The terminal <code>company.updated</code> webhook is now always delivered when a request reaches its final state. If you saw requests that looked stuck as pending because the closing webhook never arrived, that is fixed. Use it together with <code>request.version</code> (see week 26) to keep your own copy in step.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ownership graphs cross borders, and say why a node stopped]]></title>
            <link>https://docs.topograph.co/changelog#week-28-2026</link>
            <guid>https://docs.topograph.co/changelog#week-28-2026</guid>
            <pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Ownership graphs cross borders</h2>
<p>The <code>graph</code> datapoint now follows corporate shareholders into the country where they are incorporated, instead of stopping at the register boundary. A French company held by a German parent resolves that parent against the German register and keeps walking up the chain.</p>
<p>Where a country has no shareholder coverage, exploration stops cleanly at that node, so the graph tells you where the trail genuinely ends.</p>
<p>Ownership percentages are also reported only where the register states them. Holdings with no declared stake come back without a percentage rather than an even split across shareholders, so a number in the graph is always a number the register published.</p>
<h2>The ownership graph says why a node stopped</h2>
<p>Nodes that cannot be expanded now explain themselves, with a badge and a short reason such as an unknown country of incorporation or an identifier that could not be resolved. A branch that ends is now distinguishable from one that failed.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Italian Fascicolo Storico, Luxembourg and Portugal publications, and several INPI accounts on one integration]]></title>
            <link>https://docs.topograph.co/changelog#week-27-2026</link>
            <guid>https://docs.topograph.co/changelog#week-27-2026</guid>
            <pubDate>Mon, 06 Jul 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Italy: Fascicolo Storico</h2>
<p>The Fascicolo Storico is now available on <code>/v2/company</code>. It records the history of share and quota transfers for an Italian company, filing by filing, which is what you need to reconstruct how ownership arrived at its current state.</p>
<p>Request it the same way as any other document: ask for <code>availableDocuments</code>, then pass the returned <code>id</code> back in <code>documents: [...]</code>.</p>
<h2>Luxembourg: publications and filings</h2>
<p>Official publications and register filings for Luxembourg companies are now retrievable, covering the notices and deposited acts published for each entity.</p>
<h2>Portugal: publications</h2>
<p>Portuguese company publications are now served through a dedicated index, with both a fast and an authoritative mode for company data.</p>
<h2>France: several INPI accounts on one integration</h2>
<p>AML-obligated entities using their own INPI credentials for un-redacted UBO data can now register several accounts under a single configuration. Requests rotate across them, with automatic failover if one is unavailable, so a single account&#39;s rate limit no longer caps your throughput.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Activity codes per establishment, flexible German register search, webhook ordering guarantee, and more]]></title>
            <link>https://docs.topograph.co/changelog#week-26-2026</link>
            <guid>https://docs.topograph.co/changelog#week-26-2026</guid>
            <pubDate>Mon, 29 Jun 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Activity codes per establishment</h2>
<p>Establishments now carry their own activity codes, not just the parent company&#39;s. A retailer whose head office is classified under management activities and whose branches are classified under retail now shows each correctly. Available for France and Belgium.</p>
<h2>Germany: flexible register search</h2>
<p><code>/v2/search</code> now accepts German register references the way people write them: abbreviated court codes, partial register numbers, and the court and number in either order. <code>HRB 12345 München</code> and <code>München HRB 12345</code> both find the same company.</p>
<h2>Webhooks: ordering guarantee</h2>
<p>Webhook payloads now carry <code>request.version</code>, an incrementing counter you can use to order snapshots. When two webhooks for the same request arrive out of order, compare <code>version</code> and keep the higher one. This complements the existing guidance to merge rather than replace on <code>company.updated</code>.</p>
<h2>Cleaner response shapes</h2>
<p>Three corrections to how optional data is represented, so strict consumers and generated clients behave predictably:</p>
<ul>
<li>Person identifiers are documented as a flat object rather than an array.</li>
<li>Empty addresses are omitted entirely instead of returning an object of nulls.</li>
<li>Optional response fields are no longer marked required in the OpenAPI spec.</li>
</ul>
<h2>Faster US responses</h2>
<p>Search and profile calls across a large set of US states are now several times quicker, with typical lookups landing in around two seconds.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The United States coast to coast, filing-compliance signals, UBO certificates, and more]]></title>
            <link>https://docs.topograph.co/changelog#week-25-2026</link>
            <guid>https://docs.topograph.co/changelog#week-25-2026</guid>
            <pubDate>Mon, 22 Jun 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>The United States, coast to coast</h2>
<p>Company data is now available for <strong>all 50 US states and Washington DC</strong>, each sourced directly from that state&#39;s Secretary of State or equivalent business register. Texas, announced in week 18, was the first of the set. The rest are now live.</p>
<h3>What you get</h3>
<p>Every state returns the company profile: legal name, status, formation date, registered address, registered agent, and entity type. Most states also return officers and directors as legal representatives, and a <strong>Trade Register Extract</strong> bundled with the company data at no extra charge.</p>
<p>Where a state issues official certificates (Certificates of Good Standing, Certificates of Existence, status reports, certified copies), they are available as orderable documents.</p>
<h3>Fast and authoritative modes</h3>
<p>Most states offer both. Onboarding mode answers in seconds from state-published bulk data, which is what you want behind a signup form. Verification mode reads the live register for an authoritative answer. Pick per request with <code>mode</code>.</p>
<h3>Beta</h3>
<p>US states ship as <strong>beta</strong> while coverage settles. Each state page carries the label, and the <code>developmentStatus</code> field on the country catalog exposes it programmatically so you can treat beta jurisdictions differently in your own flows.</p>
<p>Every state has its own page under <a href="/essentials/us-texas">North America</a>, listing accepted identifiers, available datapoints, and documents.</p>
<h2>New jurisdictions</h2>
<p><strong>Antigua and Barbuda</strong> and the <strong>Marshall Islands</strong> are now available on <code>/v2/company</code> and <code>/v2/search</code>.</p>
<h2>Filing-compliance signals</h2>
<p><code>company.complianceFlags</code> is a new field carrying signals the register reports about a company&#39;s filing standing. Two kinds ship first, both for the United Kingdom:</p>
<pre><code class="language-json">&quot;complianceFlags&quot;: {
  &quot;accountsOverdue&quot;: { &quot;active&quot;: true, &quot;dueDate&quot;: &quot;2024-09-30&quot;, &quot;source&quot;: &quot;companies_house&quot; },
  &quot;annualFilingOverdue&quot;: { &quot;active&quot;: false }
}
</code></pre>
<p>Each kind carries <code>active</code> plus <code>dueDate</code>, <code>since</code>, and <code>source</code> where the register reports them. The shape is country-agnostic, so the same keys will be reused as more registers publish these signals. A flag is present only when its register reports it.</p>
<h2>Belgium: coordinated articles of association</h2>
<p>Belgian companies now return their coordinated statutes, the consolidated current text of the articles, under <code>documents.articlesOfAssociation</code>.</p>
<h2>Better ownership and profile data</h2>
<ul>
<li><strong>Denmark</strong>: beneficial owners are now also returned where the register records control by role rather than by shareholding, so more Danish companies resolve to a named owner.</li>
<li><strong>Spain</strong>: companies can be found by hoja registral, and it is returned in <code>company.identifiers</code>. <code>incorporationDate</code> is now the company&#39;s true constitution date, and a separate <code>registrationDate</code> carries the date it entered the register.</li>
<li><strong>Belgium</strong>: sole traders and natural-person businesses now carry a <code>legalForm</code>, standardized as a sole proprietorship, instead of leaving the field empty.</li>
<li><strong>Malta</strong>: <code>/v2/search</code> matches registration numbers written without a space, across every register prefix.</li>
<li><strong>China</strong>: company data and shareholders are now separate blocks, so you can buy either on its own, and beneficial ownership is available.</li>
<li><strong>Cayman Islands</strong>: a Director Details document is now orderable.</li>
</ul>
<h2>Check your balance from the API</h2>
<p><code>GET /v2/billing/balance</code> returns your account&#39;s current remaining credit. Poll it to surface a balance in your own dashboard, or to alert before a batch run drains the wallet. This pairs with the low-balance notifications and auto top-up already available in the app.</p>
<h2>Trials no longer switch themselves off</h2>
<p>Reaching the end of a trial no longer deactivates an account or blocks API calls. Your integration keeps working while commercial terms are settled.</p>
<h2>UBO certificates as orderable documents</h2>
<p>For <strong>Croatia</strong> and <strong>Serbia</strong>, the official beneficial-ownership certificate is now surfaced in <code>availableDocuments</code> as a <code>ubo_extract</code> you can order on its own, without requesting the parsed <code>ultimateBeneficialOwners</code> datapoint.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[German WZ 2025 activity codes, full Polish board and shareholder names, and Finnish companies awaiting registration]]></title>
            <link>https://docs.topograph.co/changelog#week-24-2026</link>
            <guid>https://docs.topograph.co/changelog#week-24-2026</guid>
            <pubDate>Mon, 15 Jun 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>German WZ 2025 activity codes</h2>
<p>German companies now return WZ 2025 codes alongside the existing WZ 2008 codes. WZ 2025 is the current edition of the German Klassifikation der Wirtschaftszweige (the national implementation of NACE Rev. 2.1).</p>
<p>Both appear under <code>company.activities</code>:</p>
<pre><code class="language-json">&quot;activities&quot;: {
  &quot;WZ2008&quot;: [{ &quot;code&quot;: &quot;62.01.9&quot;, &quot;description&quot;: &quot;Sonstige Softwareentwicklung&quot;, &quot;isAIInferred&quot;: true }],
  &quot;WZ2025&quot;: [{ &quot;code&quot;: &quot;62.10.3&quot;, &quot;description&quot;: &quot;Entwicklung und Programmierung von Anwendungssoftware&quot;, &quot;isAIInferred&quot;: true }]
}
</code></pre>
<p><code>WZ2008</code> is unchanged, so existing integrations keep working. <code>WZ2025</code> is up-converted from the WZ 2008 code using the official Destatis correspondence table. When a WZ 2008 code splits into several WZ 2025 codes, <code>WZ2025</code> contains all of them. As with NACE and ISIC, German activity codes are inferred from the company purpose and flagged <code>isAIInferred: true</code>.</p>
<p>See <a href="/essentials/germany">Germany</a> for the full reference.</p>
<h2>Poland: full board and shareholder names</h2>
<p>Polish board members and shareholders now come back with their complete names, resolved from the register&#39;s official extract rather than the abbreviated public listing.</p>
<h2>Finland: companies awaiting registration</h2>
<p>Finnish entities that exist with the tax authority but are not yet entered in the trade register are now returned, with a status that marks them as not yet registered. Useful when onboarding a business that has just been formed.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bosnia and Herzegovina, Moldova, Spanish foundations, Italian articles of association, and more]]></title>
            <link>https://docs.topograph.co/changelog#week-23-2026</link>
            <guid>https://docs.topograph.co/changelog#week-23-2026</guid>
            <pubDate>Mon, 08 Jun 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Spanish foundations now available</h2>
<p>Spanish foundations are now covered on <code>/v2/company</code> and <code>/v2/search</code>. Foundations carry a NIF beginning with <strong>G</strong>, resolved through the Registro de Fundaciones (Ministerio de Justicia). You get the company profile, the governing board (patronato) as legal representatives, and a Foundation Register Extract under <code>documents.tradeRegisterExtract</code>.</p>
<p>See <a href="/essentials/spain">Spain</a> for the full reference.</p>
<h2>Italian articles of association (Statuto) available</h2>
<p>The Italian Statuto (articles of association) is now available on <code>/v2/company</code>, returned under the existing <code>documents.articlesOfAssociation</code> response key alongside France and the UK.</p>
<p>The document is the company&#39;s constitutional text as filed at the Chamber of Commerce, with every amending protocol indexed inside the PDF.</p>
<pre><code class="language-http">POST /v2/company
{
  &quot;countryCode&quot;: &quot;IT&quot;,
  &quot;id&quot;: &quot;04046761203&quot;,
  &quot;dataPoints&quot;: [&quot;availableDocuments&quot;]
}
</code></pre>
<p>The document appears as <code>documents.articlesOfAssociation</code> with <code>format: &quot;pdf&quot;</code> and an <code>id</code>. Pass that <code>id</code> back in <code>documents: [...]</code> to order the PDF. The response includes a signed <code>url</code> for download. Delivery time is in line with the other Italian documents.</p>
<h2>Bosnia and Herzegovina now available</h2>
<p>Company data for Bosnia and Herzegovina is now available on <code>/v2/company</code> and <code>/v2/search</code>.</p>
<p>The integration covers the unified <strong>Registar poslovnih subjekata BiH</strong> — a single portal serving all three entities: Federation of BiH, Republika Srpska, and Brčko District.</p>
<h3>What&#39;s included</h3>
<ul>
<li><strong>Company profile</strong>: legal name, trade name (abbreviation), registration number (MBS), unique identification number (JIB/IDU), address, legal form, company status, share capital, registered activities (KD BiH 2010 / NACE Rev. 2), incorporation date, and branch offices as establishments.</li>
<li><strong>Legal representatives</strong>: directors, general directors, procurists, executive directors — with signatory mode (sole / joint) and authorisation details where registered.</li>
<li><strong>Other key persons</strong>: board members (<code>član Uprave</code>), supervisory board chairs (<code>Predsjednik nadzornog odbora</code>).</li>
<li><strong>Shareholders</strong>: founders of limited liability companies (d.o.o.), partnerships (k.d., d.n.o.), sole traders, associations, and foundations. Joint-stock companies (d.d.) list only a reference to the share register — no individual shareholders.</li>
<li><strong>Trade Register Extract</strong>: full printed PDF covering all 8 register sections (basic data, founders, management, capital, activities, branch offices, foreign trade, notes).</li>
</ul>
<h3>Identifiers</h3>
<p>Bosnia uses the <strong>MBS</strong> (Matični broj subjekta) as its primary identifier. The format varies by sub-register: <code>NN-01-XXXX-YY</code> for private companies in Federation BiH and Brčko, <code>NN-02-XXXX-YY</code> for joint-stock companies, and <code>N-XXXX</code> for Republika Srpska. Hyphens are part of the identifier. The JIB (13-digit tax ID) is returned in the response but cannot be used for lookups.</p>
<p>See <a href="/essentials/bosnia-herzegovina">Bosnia and Herzegovina</a> for the full identifier and data availability reference.</p>
<h2>Consistent identifier keys in <code>company.identifiers</code></h2>
<p>Every company&#39;s registration numbers are now returned under consistent, local-language keys in <code>company.identifiers</code>, matching each country&#39;s own terminology. Most countries are unchanged. A few had a key renamed to follow the convention.</p>
<p>For the countries below, both the old and new keys are returned together until 1 September 2026. After that date, only the new key is returned. Update any code that reads the old key before then.</p>
<table>
<thead>
<tr>
<th>Country</th>
<th>Old key</th>
<th>New key</th>
</tr>
</thead>
<tbody><tr>
<td>Belgium</td>
<td><code>Numéro BCE</code></td>
<td><code>ondernemingsnummer</code></td>
</tr>
<tr>
<td>Spain</td>
<td><code>NIF</code></td>
<td><code>nif</code></td>
</tr>
<tr>
<td>Italy</td>
<td><code>Codice Fiscale</code></td>
<td><code>codiceFiscale</code></td>
</tr>
<tr>
<td>Italy</td>
<td><code>CCIAA</code></td>
<td><code>cciaa</code></td>
</tr>
<tr>
<td>Italy</td>
<td><code>REA Code</code></td>
<td><code>rea</code></td>
</tr>
<tr>
<td>Austria</td>
<td><code>EUID</code></td>
<td><code>euid</code></td>
</tr>
</tbody></table>
<p>The same canonical key now appears everywhere the number does: on the queried company, on related companies (officers, shareholders, subsidiaries), and in search match results. VAT is always returned under <code>VAT</code>.</p>
<p>If you parse <code>company.identifiers</code> by key for Belgium, Spain, Italy, or Austria, switch to the new key before 1 September 2026. Each country&#39;s accepted identifiers are listed on its page.</p>
<h2>Portugal: two more documents</h2>
<p>Portuguese companies now offer an uncertified <strong>Trade Register Extract</strong> (a compilation of the company&#39;s register publications) alongside the existing certified extract, and <strong>Annual Accounts</strong> can be ordered on their own.</p>
<h2>Faster onboarding mode in more countries</h2>
<p>Onboarding mode, which answers in seconds and is what you want behind a signup form, now covers <strong>Cyprus, Greece, Latvia, Monaco, Poland, Portugal, France, and Sweden</strong>. Verification mode is unchanged and remains the authoritative path. Pick per request with <code>mode</code>.</p>
<h2>Moldova now available</h2>
<p>Company data for Moldova is available on <code>/v2/company</code> and <code>/v2/search</code>, covering the company profile, legal representatives, and shareholders, with activity codes mapped to NACE and ISIC.</p>
<p>See <a href="/essentials/moldova">Moldova</a> for the full reference.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Activity codes standardized to NACE Rev. 2.1 and ISIC Rev. 5, the full Italian Visura Camerale, and more]]></title>
            <link>https://docs.topograph.co/changelog#week-22-2026</link>
            <guid>https://docs.topograph.co/changelog#week-22-2026</guid>
            <pubDate>Mon, 01 Jun 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Activity codes now standardized to NACE Rev. 2.1 and ISIC Rev. 5</h2>
<p>Every company response now returns activity codes on the current international standards: <strong>NACE Rev. 2.1</strong> (the European classification in force since 2025) and <strong>ISIC Rev. 5</strong> (the global standard). Previously we returned the prior revisions (NACE Rev. 2 and ISIC Rev. 4).</p>
<h3>What changes</h3>
<ul>
<li>The <code>activities.NACE</code> array uses NACE Rev. 2.1 codes, and <code>activities.ISIC</code> uses ISIC Rev. 5 codes, for every country.</li>
<li>Where a register still publishes Rev. 2 codes, we upconvert them to Rev. 2.1 using the official Eurostat transition table.</li>
<li>A handful of Rev. 2 codes were split into several Rev. 2.1 classes (for example, holding companies moved from a single code to separate financial and non-financial holding codes). When a code splits, we return all of its Rev. 2.1 successors, so the correct class is always present.</li>
<li>The register&#39;s own local activity code (NAF, ATECO, ΚΑΔ, CAEN, SBI, and so on) is still returned under its own key, unchanged.</li>
<li><code>activities.ISIC</code> and <code>activities.NACE</code> are now always returned together for every country: when a register publishes only one of the two, we derive the other from the official correspondence. The pair is absent only when the register exposes no activity data at all.</li>
</ul>
<h3>What to check</h3>
<p>If you store or match on NACE or ISIC codes, review your mappings against NACE Rev. 2.1 and ISIC Rev. 5. Some four-digit codes were renumbered (for example, computer programming moved from <code>62.01</code> to <code>62.10</code>). See <a href="/guides/standardization">Data Standardization</a> for how the mapping works.</p>
<h2>Italian Visura Camerale now ships in Italian, with the full register content</h2>
<p>The <code>certifiedTradeRegisterExtract</code> document for Italy is now delivered in Italian, with every section the Registro Imprese publishes. No request change, no price change, no delivery-time change.</p>
<h3>New content in the PDF</h3>
<ul>
<li><strong>Oggetto sociale</strong> (corporate object): the full legal scope of the company, verbatim from the articles of association.</li>
<li><strong>Poteri di firma</strong> (board powers): the structured signing powers per officer, including joint vs. several authority and delegation rules.</li>
<li><strong>ATECO classification</strong>: the code is now explicitly labelled &quot;ATECO&quot; alongside the NACE mapping.</li>
<li><strong>Per-branch activity matrix</strong>: primary and secondary ATECO codes for every registered branch.</li>
<li><strong>Statutory clauses</strong>: withdrawal, exclusion, and pre-emption clauses flagged where present.</li>
<li><strong>Employee distribution</strong>: quarterly breakdown by contract type, working hours, qualification, and municipality, on top of the headcount.</li>
<li><strong>Filing activity indicators</strong>: filings in the last 12 months, share transfers, address transfers, holdings.</li>
<li><strong>Available document inventory</strong>: the list of fiscal years for which financial statements are available, plus indicators for the company file (fascicolo), articles of association (statuto), and other registered acts.</li>
<li><strong>Quality and environmental certifications</strong>: SOA qualification, ISO and other quality certificates, environmental rolls.</li>
</ul>
<h3>How to request it</h3>
<p>The request is unchanged.</p>
<pre><code class="language-http">POST /v2/company
{
  &quot;countryCode&quot;: &quot;IT&quot;,
  &quot;id&quot;: &quot;01234567890&quot;,
  &quot;dataPoints&quot;: [&quot;availableDocuments&quot;]
}
</code></pre>
<p>The document appears as <code>documents.certifiedTradeRegisterExtract</code> with <code>format: &quot;pdf&quot;</code> and an <code>id</code>. Pass that <code>id</code> back in <code>documents: [...]</code> to order the PDF. The response includes a signed <code>url</code> for download.</p>
<p>The new content applies to companies (società di capitale, società di persone) and sole proprietorships. Sole proprietorships do not have a corporate object or board powers, so those sections are absent for that entity type. The ATECO labelling fix applies to every entity type.</p>
<h2>France: Historique des modifications</h2>
<p>France joins the Netherlands and Italy under <code>documents.tradeRegisterHistory</code>. The Historique des modifications lists every change filed against a French company since registration.</p>
<h2>Subsidiaries for France, Belgium, Germany, and the UK</h2>
<p>The <code>subsidiaries</code> datapoint, introduced for Italy in week 18, now answers for <strong>France, Belgium, Germany, and the United Kingdom</strong>, and can be requested on its own without buying a full company block.</p>
<h2>Latin-script names for Bulgaria and Greece</h2>
<p><code>companyNameTransliterations</code> now also returns for <strong>Bulgaria</strong> and <strong>Greece</strong>, alongside Ukraine. Search matches Latin-script queries against Cyrillic and Greek company records, and the field lists the canonical Latin spellings.</p>
<h2>Pick documents by type, not by name</h2>
<p>Document entries for France, the UK, and Austria now carry a <code>documentSubType</code> drawn from that country&#39;s own filing taxonomy. Select on it instead of matching the free-text <code>name</code> field, which varies per filing and is not a stable key.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Latin search for Ukrainian companies, historical trade register extracts, the Topograph MCP server, and more]]></title>
            <link>https://docs.topograph.co/changelog#week-21-2026</link>
            <guid>https://docs.topograph.co/changelog#week-21-2026</guid>
            <pubDate>Mon, 25 May 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Latin search for Ukrainian companies</h2>
<p>Ukrainian companies are registered in Cyrillic. You can now find them with a Latin-script query, and every Ukrainian company response carries a new <code>companyNameTransliterations</code> field with the canonical Latin spellings of its name.</p>
<h3>Search</h3>
<p>A search like <code>Naftogaz</code>, <code>Kyivstar</code>, or <code>Pryvatbank</code> now matches the Cyrillic-only company record. Both common romanisations work: the modern Ukrainian spelling (<code>Naftohaz</code>) and the legacy spelling (<code>Naftogaz</code>). Diacritic forms pasted from academic or EU sources match too.</p>
<h3>New response field</h3>
<p><code>companyNameTransliterations</code> is a string array on both <code>/v2/search</code> results and <code>/v2/company</code> responses. It lists the deterministic Latin transliterations of the company&#39;s legal and commercial names, generated with three standards (modern Ukrainian, legacy, and the diacritic academic form), deduplicated. Use it to display alternative spellings or to match against your own records.</p>
<pre><code class="language-http">POST /v2/company
{
  &quot;countryCode&quot;: &quot;UA&quot;,
  &quot;id&quot;: &quot;00131305&quot;,
  &quot;dataPoints&quot;: [&quot;company&quot;]
}
</code></pre>
<p>The field is present for Ukrainian companies and absent for Latin-script countries. It complements the existing <code>transliterate=true</code> query flag, which romanises the whole response on demand. See <a href="/essentials/transliteration">Transliteration</a> for how the two features differ.</p>
<h2>Historical trade register extracts</h2>
<p>Two new historical documents are available on <code>/v2/company</code>, returned under a new response key <code>documents.tradeRegisterHistory</code>.</p>
<h3>Netherlands</h3>
<p><code>Uittreksel Handelsregister Historie</code> from the KVK. Lists every change ever filed against a Dutch company since registration: name changes, seat moves, board appointments and resignations, capital changes, status updates. Surfaced as <code>tradeRegisterHistory</code> in <code>availableDocuments</code> whenever KVK has a historical record for the company.</p>
<h3>Italy</h3>
<p><code>Visura Storica</code> from the Italian Chamber of Commerce. Lists every amendment to an Italian company since its registration, including ownership changes, officer changes, capital movements, and address history. Always available for active Italian companies.</p>
<h3>How to use it</h3>
<pre><code class="language-http">POST /v2/company
{
  &quot;countryCode&quot;: &quot;NL&quot;,
  &quot;id&quot;: &quot;53781066&quot;,
  &quot;dataPoints&quot;: [&quot;availableDocuments&quot;]
}
</code></pre>
<p>The historical extract appears as <code>documents.tradeRegisterHistory</code> with <code>format: &quot;pdf&quot;</code> and an <code>id</code>. Pass that <code>id</code> back in <code>documents: [...]</code> to order the PDF. The response will include a signed <code>url</code> for download.</p>
<p>The historical extract sits alongside the existing <code>documents.tradeRegisterExtract</code> (current state only) and <code>documents.certifiedTradeRegisterExtract</code> keys, so you can request either or both depending on whether you need a point-in-time snapshot or the full change history.</p>
<h2>Test slow deliveries without waiting for one</h2>
<p>The TEST country now accepts <code>DELAY_1M</code>, <code>DELAY_10M</code>, <code>DELAY_1H</code>, and <code>DELAY_10H</code> as company identifiers. Each returns a normal result after the delay in its name, so you can exercise your polling loop, your webhook handling, and your UI&#39;s pending state against a delivery that genuinely takes an hour.</p>
<p>They combine with the existing <code>GRAPH_*</code> fixtures. Build your integration against the slow path before a real register makes you.</p>
<h2>Ireland: shareholder provenance made explicit</h2>
<p>Irish shareholders derived from annual return filings are now labelled <code>inferred</code> rather than read directly from the register, and the list states which fiscal year it covers. The data is unchanged; it is now honest about where it came from, so you can decide when to rely on it.</p>
<h2>Topograph MCP server and Claude Code plugin</h2>
<p>Topograph now exposes an MCP server, so coding agents and AI assistants can read the country catalog, search the docs, pull the OpenAPI spec, and price a scenario without you pasting any of it in by hand. Sign in with your Topograph account to connect it.</p>
<p>There is also a Claude Code plugin that installs the server and a set of integration commands in one step. Point your agent at it when you are building against <code>/v2/search</code> and <code>/v2/company</code> and it will work from live coverage and pricing rather than from memory.</p>
<h2>Coverage and pricing, in the open</h2>
<p>The public pricing page now documents, for every country: which registers each data block draws on, how requests route by entity type, the identifiers we accept, and the full legal-form, role, and status vocabularies with their standardised mappings.</p>
<p>Countries also carry a development status, so you can tell at a glance which jurisdictions are generally available and which are in beta. Capabilities we can deliver on request but have not shipped as self-serve are listed too, with a contact link.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Errors name the register that failed, and friendlier document downloads]]></title>
            <link>https://docs.topograph.co/changelog#week-20-2026</link>
            <guid>https://docs.topograph.co/changelog#week-20-2026</guid>
            <pubDate>Mon, 18 May 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Errors name the register that failed</h2>
<p>When an upstream register is unavailable, the error now names it. Instead of a generic &quot;the data source is temporarily unavailable&quot;, you get the specific register, so your support team can tell at a glance whether the fault is upstream and your users can be told something meaningful.</p>
<p>The register name is available both in the error message and as a <code>source</code> field on the error, so you can branch on it in code.</p>
<p>Live register availability is published at <a href="https://status.topograph.co">status.topograph.co</a>, and you can subscribe there to be notified when a register we depend on is disrupted.</p>
<h2>Friendlier document downloads</h2>
<p>Downloaded documents now arrive with a readable filename describing the document and the company, instead of an opaque identifier. No request change: the signed <code>url</code> simply serves a proper filename.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Interactive ownership graph]]></title>
            <link>https://docs.topograph.co/changelog#week-19-2026</link>
            <guid>https://docs.topograph.co/changelog#week-19-2026</guid>
            <pubDate>Mon, 11 May 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Interactive ownership graph</h2>
<p>Two new request fields on <code>/v2/company</code> give you click-by-click control over how deep the ownership graph goes.</p>
<h3><code>graphInteractive</code></h3>
<p>Pass <code>graphInteractive: true</code> together with the <code>graph</code> datapoint to fetch only the entry company. Its direct shareholders are returned in the response: individuals as full nodes, companies as <code>budget_truncated</code> placeholders. Each placeholder carries a <code>nodeId</code>, a cost preview, and the depth at which it sits.</p>
<p>Use this when you want predictable per-step cost and a deterministic UI: one fetch, one billing event, the rest of the tree visible only as continuation handles.</p>
<p>When <code>graphInteractive</code> is set, <code>graphMaxBudget</code> is ignored.</p>
<h3><code>graphContinueFromNodeIds</code></h3>
<p>Pass an array of <code>budget_truncated</code> nodeIds from a previous response to extend the graph from those leaves. The new request is linked to its parent via <code>mainRequestId</code>; <code>countryCode</code> and <code>id</code> are derived from the parent automatically. Cost deduplication applies across the full request tree, so already-paid companies are not re-billed.</p>
<p>If the parent request was made with <code>graphInteractive: true</code>, every continuation inherits the flag. Each chip click then expands a single level under the chosen node, with the new tier&#39;s company shareholders surfaced as fresh <code>budget_truncated</code> chips.</p>
<h3>Response field</h3>
<p><code>graph.metadata.interactive</code> is now returned alongside <code>stoppedReason</code>, <code>companiesFetched</code>, and <code>companiesSkipped</code> so you can tell whether a stored result was produced in interactive mode.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Texas, Russia and Serbia, subsidiaries, beneficial ownership in four new jurisdictions, and more]]></title>
            <link>https://docs.topograph.co/changelog#week-18-2026</link>
            <guid>https://docs.topograph.co/changelog#week-18-2026</guid>
            <pubDate>Mon, 04 May 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Texas (US-TX)</h2>
<p>Texas company data is now available, with full coverage of both formal entities and sole traders, and two official documents.</p>
<p><strong>Authoritative verification via the Secretary of State.</strong> Verification-mode requests pull data directly from the Texas Secretary of State — the official corporate registry. This gives you authoritative entity status (In existence, Forfeited, Dissolved, Merged), the full untruncated officer record as filed, registered agent, assumed names, and formation details. Formal entities only (corporations, LLCs, limited partnerships, and other BOC-registered types).</p>
<p><strong>Fast onboarding via the Comptroller.</strong> Onboarding-mode requests use the Texas Comptroller franchise tax and sales tax systems. Covers the same formal entities plus sole traders. Returns officers, registered agent, establishments, activity codes, and state of formation. Results in seconds.</p>
<p><strong>Two official documents.</strong></p>
<ul>
<li><strong>Information Letter</strong> — Secretary of State document confirming entity status, filing date, and registered agent. Formal entities only.</li>
<li><strong>Sales Tax Permit</strong> — Comptroller record of permit status and outlet locations. Available for all permit holders, including sole traders.</li>
</ul>
<p>Search accepts Taxpayer Number, Federal EIN, SOS File Number, or company name.</p>
<h2>Sweden: sole traders now supported</h2>
<p>Swedish sole traders (enskild firma) can now be looked up by personnummer. Pass the 12-digit personal identity number (YYYYMMDDNNNN, with or without hyphen) as the identifier in any <code>/v2/company</code> request.</p>
<p>The profile returns <code>personalIdentityNumber</code> in <code>identifiers</code>, the correct VAT number derived from the personnummer, and all available company data from Bolagsverket. Available documents for sole traders are retrieved from the same document portal as other entity types.</p>
<h2>New datapoint: <code>subsidiaries</code></h2>
<p>Surface the companies a queried company holds equity in. Each entry carries the subsidiary&#39;s identifiers, ownership percentage, voting rights, number of shares, nominal capital held, and acquisition or end dates when reported.</p>
<p>Add <code>subsidiaries</code> to your <code>dataPoints</code> parameter to include them in any <code>/v2/company</code> request.</p>
<h3>Italy</h3>
<p>First country to ship <code>subsidiaries</code>, sourced from InfoCamere. We return only current participations, picking the most recent filing per subsidiary and filtering out historical or dissolved holdings.</p>
<h2>Italy: <code>establishments</code> now available</h2>
<p>Branch offices and secondary seats for Italian companies are now retrievable from InfoCamere. The response includes operational branches, secondary headquarters, and foreign branches, with full address and activity description. Closed locations are excluded.</p>
<h2>Beneficial ownership data for four new jurisdictions</h2>
<p>The <code>ultimateBeneficialOwners</code> datapoint is now answered for <strong>Ireland, Portugal, Serbia, and Croatia</strong>. Each request returns the parsed beneficial owners list together with the official certificate from the local register, surfaced in <code>documents</code> as a <code>ubo_extract</code>.</p>
<h3>Ireland</h3>
<p>Beneficial ownership data sourced from the Register of Beneficial Ownership (RBO).</p>
<h3>Portugal</h3>
<p>Beneficial ownership data sourced from RCBE (Registo Central do Beneficiário Efetivo).</p>
<h3>Serbia</h3>
<p>Beneficial ownership data sourced from APR&#39;s Centralna evidencija stvarnih vlasnika.</p>
<h3>Croatia</h3>
<p>Beneficial ownership data sourced from the Registar stvarnih vlasnika (RSV).</p>
<h3>Delivery</h3>
<p>These four sources are fulfilled within one to three business days. The pricing page surfaces them with a <strong>Manual</strong> badge so it&#39;s clear up front when to expect the result.</p>
<h2>Russia and Serbia now available</h2>
<p>Two more jurisdictions are live on <code>/v2/company</code> and <code>/v2/search</code>.</p>
<ul>
<li><strong>Russia</strong>: company and sole-entrepreneur data from the state register, with establishments, legal representatives, and shareholders.</li>
<li><strong>Serbia</strong>: company data from the Business Registers Agency, with establishments, legal representatives, other key persons, and shareholders.</li>
</ul>
<p>See <a href="/essentials/russia">Russia</a> and <a href="/essentials/serbia">Serbia</a> for the full reference.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 17, 2026: See how a reconstructed shareholding was derived, New document coverage across nine countries]]></title>
            <link>https://docs.topograph.co/changelog#week-17-2026</link>
            <guid>https://docs.topograph.co/changelog#week-17-2026</guid>
            <pubDate>Mon, 27 Apr 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>See how a reconstructed shareholding was derived</h2>
<p>Where shareholders are reconstructed from filings rather than read from a shareholder register, <code>dataSources.shareholders</code> now explains the reasoning: an <code>overall</code> summary naming the documents used, a <code>limitations</code> list stating what the reconstruction cannot establish, and a per-shareholder narrative on each entry.</p>
<p>Use it to show your analysts why a percentage is what it is, and to decide when a figure needs a human check before it drives a compliance decision. The same detail is available for beneficial owners and for each node of the ownership graph.</p>
<h2>New document coverage across nine countries</h2>
<p>Articles of association and annual accounts are now available on more jurisdictions, each retrieved from the country&#39;s official register.</p>
<h3>United Kingdom</h3>
<p>Articles of association now include amendments filed after incorporation, not just the original filing. Special resolutions that change the articles land in <code>articlesOfAssociation</code>. Annual accounts unchanged.</p>
<h3>France</h3>
<p>Articles of association (statuts) from INPI are now classified directly from the French register&#39;s official document dictionary. Statute filings, translations, cross-border merger statutes, and updated statute drafts all route into <code>articlesOfAssociation</code>. The same treatment applies to each component of the annual accounts.</p>
<h3>Slovakia</h3>
<p>Annual financial statements (účtovné závierky) for every registered entity since 2009, from the Slovak financial statements register.</p>
<h3>Estonia</h3>
<p>Annual reports (majandusaasta aruanne) for Estonian entities are now surfaced in <code>financialStatements</code>. Filings are available since 2010.</p>
<h3>Greece</h3>
<p>First document integration for Greece: both <code>financialStatements</code> and articles of association (καταστατικό) from the GEMI publicity portal.</p>
<h3>Ukraine</h3>
<p>Annual financial statements (Фінансова звітність підприємств) for Ukrainian legal entities, covering 2021 to 2025.</p>
<h3>Slovenia</h3>
<p>Two new sources from AJPES:</p>
<ul>
<li>Articles of association (akt o ustanovitvi / statut) from the eObjave section.</li>
<li>Annual reports (letno poročilo) from JOLP.</li>
</ul>
<h3>Czech Republic</h3>
<p>Annual reports and articles of association from the Sbírka listin (Collection of Deeds) of the Czech Commercial Register. Covers every filing type available on justice.cz, surfaced in <code>financialStatements</code> and <code>articlesOfAssociation</code>.</p>
<h3>Ireland</h3>
<p>Company constitutions filed with the Irish Companies Registration Office (CRO), returned in <code>articlesOfAssociation</code>. Requesting a constitution triggers retrieval from CRO and returns the PDF like any other document.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 16, 2026: Germany: paid Hinterlegungen now retrievable, Retrieve a request with a GET, Onboarding mode has a firm deadline, and more]]></title>
            <link>https://docs.topograph.co/changelog#week-16-2026</link>
            <guid>https://docs.topograph.co/changelog#week-16-2026</guid>
            <pubDate>Mon, 20 Apr 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Germany: paid Hinterlegungen now retrievable</h2>
<p>Voluntary §326 HGB financial-statement deposits filed by Kleinstkapitalgesellschaften are now part of the standard <code>availableDocuments</code> response. Requesting one returns the PDF like any other German document. See the live pricing page for current pricing.</p>
<h2>Retrieve a request with a GET</h2>
<p><code>GET /v2/company/{requestId}</code> returns a stored request result. Use it to poll a request to completion and to refresh expired signed document URLs, without rebuilding the original POST body.</p>
<p>The previous approach of POSTing <code>{&quot;requestId&quot;: &quot;...&quot;}</code> still works, so nothing breaks. The GET is simply the natural shape for reading a result you already created.</p>
<h2>Onboarding mode has a firm deadline</h2>
<p>Onboarding mode now enforces a 10 second budget per datapoint, end to end. A datapoint that cannot answer in time returns <code>onboarding_timeout</code> instead of holding your signup form open.</p>
<p>This makes onboarding latency predictable by design. When you need completeness over speed, use verification mode, which has no such cap.</p>
<h2>France: Avis de situation INSEE</h2>
<p>Every active French company now carries an Avis de situation INSEE in <code>availableDocuments</code>, generated on demand from the national business directory. It confirms the company&#39;s registered identity, address, and activity, and is bundled with the French company data.</p>
<h2>Isle of Man now available</h2>
<p>Company data for the Isle of Man is available on <code>/v2/company</code> and <code>/v2/search</code>, with a Trade Register Extract alongside the company profile.</p>
<h2>Germany: your own Transparenzregister credentials</h2>
<p>AML-obligated entities can now connect their own Transparenzregister account to unlock German beneficial ownership data, the same way the French INPI credential flow works below. Add your register credentials in the app and UBO requests for Germany use them automatically.</p>
<h2>Latin-script responses for non-Latin countries</h2>
<p>Getting company data from Bulgaria, Ukraine, Greece, China, or Hong Kong? You can now ask for the response in Latin characters.</p>
<p>Add <code>transliterate=true</code> to any <code>/v2/search</code> or <code>/v2/company</code> call and the company names, addresses, officer names, and activity descriptions come back romanized. Useful when your CRM, KYC system, or spreadsheet export only handles Latin text.</p>
<p>The flag does not change retrieval or billing. It is a presentation option applied to the response on the way out.</p>
<p>See the <a href="/essentials/transliteration">Transliteration guide</a> to learn more.</p>
<h2>France: customer INPI credentials for AML-obligated entities</h2>
<p>AML-obligated entities with their own INPI account carrying <code>ROLE_RBE_BENEFICIAL_OWNERS</code> and <code>ROLE_RBE_BENEFICIAL_OWNERS_PDF</code> can now provision those credentials on their Topograph account to unlock the un-redacted INPI dataset.</p>
<p>What it grants access to, under your credentials only:</p>
<ul>
<li><code>ultimateBeneficialOwners</code> with full date of birth (day included), full residence address (street line), nationality, gender, and place of birth. The default Topograph service account returns these fields RGPD-redacted.</li>
<li><code>ubo_extract</code> synthesis PDF with the richer INPI content reserved for RBE-authorised accounts, typically around 20% larger than the default PDF.</li>
</ul>
<p>Results fetched under your credentials are isolated to your account. No other account can read or observe them. Switching regimes or rotating credentials always produces a fresh INPI fetch, so stale data is never served across boundaries.</p>
<p>Other France data (company data, legal representatives, shareholders, actes, bilans, trade register extract) is unaffected. The INPI RBE role set only changes UBO-related responses.</p>
<p>To provision, contact <strong><a href="mailto:support@topograph.co">support@topograph.co</a></strong>. See the <a href="/essentials/france">France country page</a> for details.</p>
<h2>Billing Notifications</h2>
<p>Topograph now sends alerts for billing events through email and webhooks: low balance warnings, high-usage alerts, and auto top-up outcomes. Give your finance and operations teams cost visibility and governance over Topograph usage without polling the API for balance and spend.</p>
<p>Configure everything from the new Billing page in your dashboard or from the REST endpoints at <code>/v2/billing/notifications</code>.</p>
<h3>Two independent spend budgets</h3>
<p>High-usage watches run as two parallel passes, both firing on every billable request:</p>
<ul>
<li><strong>Account-wide budget</strong>: total spend across every workspace in your account. Fires once per account when the aggregate crosses your threshold. Use it as a top-line guardrail that catches runaway usage regardless of which team or integration is driving it.</li>
<li><strong>Per-workspace budget</strong>: each workspace is evaluated individually against a shared set of defaults. Each workspace gets alerts scoped to its own spend, so a single busy workspace doesn&#39;t drown out the rest.</li>
</ul>
<p>A single spend spike can trip both passes at once. You get a distinct account-level event and a workspace-level event, with a <code>scope</code> field on the webhook payload so your alerting stack can route the two categories to different channels (for example, account-wide alerts to finance, per-workspace alerts to the team that owns the workspace).</p>
<h3>Per-workspace overrides</h3>
<p>A workspace running heavy batch work can override its budget in isolation while every other workspace keeps the account defaults. Override the master toggle, the channel routing, the rolling period, or the tier values from the Billing page, or via <code>PATCH /v2/billing/notifications/workspaces/{id}/config</code>. Overridden workspaces show an explicit <code>overriding</code> badge in the UI so you can see at a glance which ones have drifted from the account policy.</p>
<h3>Off by default, admin-controlled</h3>
<p>Every notification kind ships off on new accounts. Nothing fires until an admin opts in, so rolling billing notifications out to an established organisation does not surprise anyone with unexpected emails on day one. Enabling a kind seeds it with one starter warning tier at a sensible value; add <code>critical</code>, <code>depleted</code>, or extra high-usage bands from the tier editor as your policy matures.</p>
<h3>Webhook integration</h3>
<p>Four new event types are delivered through the same webhook setup as your existing <code>company.updated</code> webhooks. Same signature verification, same retry logic, same signing secret, so adding billing alerts to your ops stack is a matter of subscribing to the new event types in your existing endpoint:</p>
<ul>
<li><code>billing.low_balance.triggered</code></li>
<li><code>billing.high_usage.triggered</code> (carries <code>scope: &quot;global&quot; | &quot;workspace&quot;</code> so you can route the two budgets independently)</li>
<li><code>billing.auto_topup.succeeded</code></li>
<li><code>billing.auto_topup.failed</code></li>
</ul>
<h3>Full audit trail</h3>
<p>Every fire records a row in the Recent Notifications card on the Billing page. Click a row to inspect the full webhook payload, workspace attribution, per-channel delivery status, and the exact threshold that was crossed. Programmatic access via <code>GET /v2/billing/notifications/recent</code> returns the same shape, so you can forward events to your observability pipeline alongside company-data webhooks.</p>
<h3>Getting started</h3>
<ol>
<li>Open the Billing page in your Topograph dashboard.</li>
<li>Expand <strong>Notification preferences</strong> and flip on the kinds you want.</li>
<li>Adjust tiers, period, and channels in place, or leave the starter defaults.</li>
<li>If you use webhooks, subscribe the four new event types in your existing endpoint.</li>
</ol>
<p>Full threshold semantics, dedup key shapes, and rearm behaviour are documented in the <a href="/guides/billing-notifications">Billing notifications guide</a>.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 14, 2026: Data Product Model, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-14-2026</link>
            <guid>https://docs.topograph.co/changelog#week-14-2026</guid>
            <pubDate>Mon, 06 Apr 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Data Product Model</h2>
<h3>New Data Vocabulary</h3>
<p>The API now supports granular datapoints instead of the bundled <code>companyProfile</code>:</p>
<ul>
<li><code>company</code>: company information (name, address, status, legal form, activities)</li>
<li><code>legalRepresentatives</code>: directors, managers, board members</li>
<li><code>shareholders</code>: shareholder structure and ownership percentages</li>
<li><code>ultimateBeneficialOwners</code>: beneficial owners (unchanged)</li>
</ul>
<p>Two additional datapoints are now available:</p>
<ul>
<li><code>otherKeyPersons</code>: board members, auditors, compliance officers</li>
<li><code>establishments</code>: branch offices and secondary locations</li>
</ul>
<p>The legacy <code>companyProfile</code> datapoint still works and maps to <code>company</code> + <code>legalRepresentatives</code>. No migration required.</p>
<h3>Monitoring expanded to 6 new countries</h3>
<p>Monitoring is now automatically available for all countries with zero-cost, fixed-price, authoritative data sources. Countries with variable or dynamic pricing are excluded. Newly supported:</p>
<ul>
<li><strong>Bulgaria</strong> (BG)</li>
<li><strong>Greece</strong> (GR)</li>
<li><strong>Iceland</strong> (IS)</li>
<li><strong>Jersey</strong> (JE)</li>
<li><strong>Netherlands</strong> (NL)</li>
<li><strong>Slovenia</strong> (SI)</li>
</ul>
<p>Existing monitors also now fetch richer data: all eligible zero-cost datapoints (shareholders, UBOs, establishments, etc.) are automatically included in monitoring requests.</p>
<h3>Retrieval Modes</h3>
<p>New <code>mode</code> parameter replaces <code>fast</code> and <code>authoritative</code>:</p>
<ul>
<li><code>mode: &quot;verification&quot;</code> (default): picks the authoritative registry source</li>
<li><code>mode: &quot;onboarding&quot;</code>: picks the cheapest fast source for form prefill and screening</li>
</ul>
<p>The <code>fast</code> and <code>authoritative</code> parameters are deprecated but still accepted.</p>
<h3><code>/v2/onboarding</code> Deprecated</h3>
<p>Use <code>POST /v2/company</code> with <code>mode: &quot;onboarding&quot;</code> instead. Same response format, same speed. See the <a href="/guides/migration-data-product-model">migration guide</a>.</p>
<h3>Authoritative Flag in Response</h3>
<p><code>dataStatus.dataPoints</code> now includes <code>authoritative: true/false</code> so you know whether data came from an official registry.</p>
<pre><code class="language-json">{
  &quot;dataStatus&quot;: {
    &quot;dataPoints&quot;: {
      &quot;company&quot;: { &quot;status&quot;: &quot;succeeded&quot;, &quot;authoritative&quot;: true }
    }
  }
}
</code></pre>
<h3>Block-Based Pricing</h3>
<p>Each data block has a fixed price per country with 24-hour deduplication. Requesting the same block for the same company within 24 hours is free. Some documents (trade register extract, UBO extract) are included free with their corresponding data block.</p>
<p>The <code>/v2/pricing</code> endpoint now returns a <code>blocks</code> array showing per-mode pricing and block grouping.</p>
<h3>Budget Cap</h3>
<p>New <code>maxBudget</code> parameter (in credit cents) lets you cap the cost of a request. <strong>Billable blocks</strong> are applied in priority order: company, legal representatives, UBOs, then shareholders. Datapoints tied to blocks that do not fit the budget are dropped with a <code>budget_exceeded</code> status instead of failing the entire request.</p>
<h2>Countries</h2>
<h3>🇺🇦 Ukraine</h3>
<p><strong>New Country — Ukraine Integration</strong></p>
<p>Ukraine is now fully supported, sourcing all data from the <strong>Unified State Register (ЄДР — Єдиний державний реєстр)</strong>, the official registry of legal entities, individual entrepreneurs, and foreign entity subdivisions operated by the Ministry of Justice of Ukraine.</p>
<ul>
<li><strong>Search</strong> — By EDRPOU code (exact match, all entity types) or RECORD number (individual entrepreneurs), and by company name in Cyrillic or Latin script</li>
<li><strong>Three datasets in one integration</strong>:<ul>
<li><strong>Legal entities (UO)</strong> — All registered companies: LLCs, joint-stock companies, cooperatives, nonprofits, state bodies, farm enterprises, and 50+ other legal forms</li>
<li><strong>Individual entrepreneurs (FOP)</strong> — Фізичні особи-підприємці, with full support for the unique FOP <code>RECORD</code> identifier scheme (prefixed as <code>FOP-{RECORD}</code> to avoid collision with EDRPOU codes)</li>
<li><strong>Foreign entity subdivisions (FSU)</strong> — Representative offices and branches of foreign companies, with parent company details including country code and foreign registry code</li>
</ul>
</li>
<li><strong>Company profile</strong> — Legal name, legal form (50+ types, standardized), status (active, in dissolution, closed with reason and date), registration date, share capital (legal entities), and commercial names</li>
<li><strong>Shareholders</strong> — Founders for legal entities (individual and corporate, with nominal capital); self-ownership for individual entrepreneurs (100%); foreign parent company for FSU subdivisions</li>
<li><strong>Legal representatives</strong> — Directors and representatives from the EDR signatories section; individual entrepreneurs are self-represented (role: Owner)</li>
<li><strong>5.8M+ individual entrepreneur records</strong> — The FOP dataset is one of the largest in our platform, covering registrations going back to the 1990s</li>
</ul>
<p>For detailed information, see our <a href="/essentials/ukraine">Ukraine documentation</a>.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 13, 2026: Who can sign, and alone or together, Hungary: sole traders, Malta: shareholders]]></title>
            <link>https://docs.topograph.co/changelog#week-13-2026</link>
            <guid>https://docs.topograph.co/changelog#week-13-2026</guid>
            <pubDate>Mon, 30 Mar 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Who can sign, and alone or together</h2>
<p>Legal representatives now carry <code>representationMode</code>, stating whether an officer can bind the company alone (<code>sole</code>) or only jointly with others (<code>joint</code>). Where the register publishes the detail, <code>minimumSignatories</code> and <code>namedCoSigners</code> are returned too.</p>
<p>This is the field you need to know whether one signature on a mandate is actually sufficient. Available for Germany, Switzerland, Finland, Greece, Hungary, Latvia, and Estonia, wherever the register states it.</p>
<h2>Hungary: sole traders</h2>
<p>Hungarian sole traders from the individual-entrepreneur register are now covered. Look them up by registration number or tax ID.</p>
<h2>Malta: shareholders</h2>
<p>Maltese companies now return <code>shareholders</code>, with ownership percentages.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 12, 2026: Countries, API]]></title>
            <link>https://docs.topograph.co/changelog#week-12-2026</link>
            <guid>https://docs.topograph.co/changelog#week-12-2026</guid>
            <pubDate>Mon, 23 Mar 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇧🇪 Belgium</h3>
<p><strong>Legal Representative Enrichment (Best Effort)</strong></p>
<p>When <code>agenticEnrichment: true</code> is passed, the system attempts to enrich legal representative details from eJustice publications (Moniteur Belge). This is <strong>best effort</strong>. Not all fields are guaranteed, as enrichment depends on which publications are available and what data they contain.</p>
<ul>
<li><strong>Enriched fields</strong>: birth date, nationality, residence address (geocoded)</li>
<li><strong>New <code>enriching</code> datapoint status</strong>: indicates enrichment is in progress after base data has been retrieved</li>
<li><strong>Pricing</strong>: fixed 50 cents per request, charged only if at least one field was enriched</li>
<li>Belgium only for now</li>
</ul>
<h3>🇧🇬 Bulgaria</h3>
<p><strong>Full Integration: Bulgarian Trade Register</strong></p>
<p>Bulgaria is now fully supported with company data from the Trade Register (Търговски регистър), operated by the Registry Agency (Агенция по вписванията).</p>
<ul>
<li><strong>Search</strong>: By UIC/EIK number (exact match) or by company name in Cyrillic (fuzzy match) via pre-indexed Open Data and live Trade Register API</li>
<li><strong>Company Profile</strong>: Full structured data including legal name, Latin transliteration, legal form (18 types with ISO 20275), status (deterministic mapping), address, share capital, activity description, legal representatives, shareholders, and board members</li>
<li><strong>Shareholders</strong>: Partners with nominal capital held and percentage for OOD companies; sole owner for EOOD companies; general and limited partners for KD companies. Both individual and corporate shareholders supported with country codes</li>
<li><strong>Ultimate Beneficial Owners</strong>: Live UBO data from beneficial ownership declarations in the Trade Register</li>
<li><strong>Onboarding Profile</strong>: Fast company lookups from pre-indexed Open Data with live API fallback</li>
<li><strong>Documents</strong>: Trade Register Extract (always available), Articles of Association, Financial Statements, and 25+ additional conditional document types</li>
<li><strong>Activity Codes</strong>: NKID/NACE/ISIC classification chain, all deterministic (no AI inference)</li>
</ul>
<p>For detailed information, see our <a href="/essentials/bulgaria">Bulgaria documentation</a>.</p>
<h3>🇭🇺 Hungary</h3>
<p><strong>Sole Trader (Egyéni Vállalkozó) Coverage</strong></p>
<p>Hungary now covers <strong>sole traders</strong> in addition to commercial companies, sourcing data from a second registry, the <strong>NAV EVNY</strong> (Egyéni Vállalkozók Nyilvántartása), operated by the Hungarian Tax Authority.</p>
<ul>
<li><strong>Search</strong>: Sole traders are searchable by registration number (8 digits) or tax number (8 digits). An 8-digit query automatically searches both OCCSZ and EVNY in parallel, with deduplication.</li>
<li><strong>Company profile</strong>: Full sole trader profile including legal name, status, address, activity codes (6-digit TEÁOR → NACE → ISIC), branch offices, and registration date. The sole trader is automatically mapped as the legal representative (Owner) and 100% shareholder.</li>
<li><strong>Documents</strong>: EVNY extract available as a PDF (screenshot-based), included free with the profile.</li>
<li><strong>Status mapping</strong>: Supports all EVNY statuses: operating (Működő), dormant (Szünetelő), authority-suspended (Felfüggesztett), and terminated (Megszűnt), with proper <code>active</code> flag and closure reason mapping.</li>
<li><strong>Pricing</strong>: Sole trader profiles use fixed pricing only (no variable TRE cost). Budget precheck adapted accordingly.</li>
</ul>
<h2>API</h2>
<p><strong>Representation Mode for Legal Representatives</strong></p>
<p>Legal representatives now include a <code>representationMode</code> field indicating how a representative can bind the company. The field specifies whether signing authority is <code>sole</code> (can act alone) or <code>joint</code> (must act with others), with optional <code>minimumSignatories</code> for joint representation or <code>namedCoSigners</code> for joint representation with specific named individuals.</p>
<p>Available for: <strong>Hungary (HU)</strong>, <strong>Latvia (LV)</strong>, <strong>Greece (GR)</strong>, <strong>Germany (DE)</strong>, <strong>Switzerland (CH)</strong>, <strong>Finland (FI)</strong>, <strong>Estonia (EE)</strong></p>
<ul>
<li><strong>Hungary</strong>: Extracted from TRE §13 &quot;együttes&quot;/&quot;önálló&quot; markers (deterministic)</li>
<li><strong>Latvia</strong>: Mapped from UR API <code>rightsOfRepresentation.type</code> (deterministic)</li>
<li><strong>Greece</strong>: Enriched from GEMI boolean flags for ΑΕ companies</li>
<li><strong>Germany</strong>, <strong>Switzerland</strong>, <strong>Finland</strong>: AI-extracted from trade register documents (including named co-signers when specified)</li>
<li><strong>Estonia</strong>: Sourced from the RIK <code>esindus_v1</code> endpoint — <code>sole</code> when the person holds exclusive representation rights (<code>ainuesindusoigus_olemas: JAH</code>). Not set for <code>EI</code> or <code>EI TEA</code> (unknown/cannot determine)</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 11, 2026: Countries, New Feature, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-11-2026</link>
            <guid>https://docs.topograph.co/changelog#week-11-2026</guid>
            <pubDate>Mon, 16 Mar 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇭🇺 Hungary</h3>
<ul>
<li><strong>Fixed company status detection for deleted companies</strong>. Companies with a deletion date (&quot;Törlés hatálya&quot;) in Section 1 of the Trade Register Extract are now correctly identified as closed. Previously, these companies were incorrectly reported as active because only quoted status markers in the company name were checked. The fix parses the deletion date and reason (&quot;Megjegyzés&quot;) from the TRE general data section, mapping deletion reasons to the appropriate closure reason (átalakulás → Merger, felszámolás → Bankruptcy, kényszertörlés → Administrative Dissolution, végelszámolás → Voluntary Dissolution).</li>
</ul>
<h3>🇸🇮 Slovenia</h3>
<p><strong>New Country: Slovenia Integration</strong></p>
<p>We&#39;ve added full support for Slovenia, sourcing all data from <strong>AJPES</strong> (Agency of the Republic of Slovenia for Public Legal Records and Related Services), the official operator of the Slovenian Business Register (ePRS).</p>
<ul>
<li><p><strong>Search</strong>: Full-text search by company name, registration number, or tax number across 290,000+ entities</p>
</li>
<li><p><strong>Company profile</strong>: Legal name, status, legal form, registration date, address, share capital, and legal representatives</p>
</li>
<li><p><strong>Shareholders</strong>: Individual and corporate shareholders with equity interests and ownership percentages (d.o.o. companies)</p>
</li>
<li><p><strong>Trade Register Extract</strong>: Digitally signed PDF from AJPES, available for all court-registered entities</p>
</li>
<li><p><strong>Onboarding profile</strong>: Fast company lookup (~1s) from synchronized PRS Open Data</p>
<p>Shareholder data is only available for d.o.o. (limited liability) companies.
Joint-stock companies (d.d.) do not disclose shareholders through the registry
as shares are publicly traded. The Slovenian UBO Register (RDL) is restricted
to authorized entities and is not currently accessible.</p>
</li>
</ul>
<p>For detailed information, see our <a href="/essentials/slovenia">Slovenia documentation</a>.</p>
<h3>🇪🇪 Estonia</h3>
<ul>
<li><strong>Partnership shareholders</strong>: General partnerships (TÜ) and limited partnerships (UÜ) now return shareholders. Partners (TOSAN/UOSAN/EUSOS/EUSOS2) are extracted from <code>kaardile_kantud_isikud</code> and returned as shareholders alongside their legal representative entries. Limited partners include their capital contribution (<code>nominalCapitalHeld</code>). Partners holding multiple roles (e.g. EUSOS + UOSAN) are deduplicated by registry code, keeping the entry with capital contribution data.</li>
<li><strong>Nominal capital precision fix</strong>: Shareholder <code>nominalCapitalHeld</code> amounts for OÜ/AS companies now preserve full decimal precision (e.g. <code>10931254.40</code> instead of being truncated to <code>10931254</code>).</li>
<li><strong>Consistent entity IDs</strong>: All person mappers (legal representatives, shareholders, other key persons) now use <code>isikukood_registrikood</code> (registry code for companies, personal ID for individuals) instead of the internal RIK record ID (<code>kirje_id</code>). This ensures the same entity has a consistent ID across all sections of the response. Falls back to <code>kirje_id</code> for foreign companies that lack a local registry code.</li>
<li><strong>Birth date extraction</strong>: All individual persons (legal representatives, shareholders, other key persons) now include <code>birthDate</code>. For Estonian nationals, the date is derived from the 11-digit personal identification code (<code>isikukood</code>). For foreign nationals, it is read from the <code>synniaeg</code> field.</li>
<li><strong>Country of residence</strong>: Individual shareholders now include <code>residenceAddress.countryCode</code> when the registry provides the <code>aadress_riik</code> field (common for foreign shareholders).</li>
<li><strong>Foreign company country codes</strong>: Corporate shareholders and legal representatives registered abroad now show their actual country of registration (e.g. <code>GB</code>, <code>SE</code>, <code>CYM</code>) instead of defaulting to <code>EE</code>. Foreign registration numbers (<code>valis_kood</code>) are also used as the company ID.</li>
</ul>
<h2>New Feature</h2>
<h3>Workspaces: Per-Client Usage Tracking &amp; Rebilling</h3>
<p>We&#39;ve introduced <strong>Workspaces</strong>, a new feature that lets you split API usage across sub-accounts, clients, or departments for easy cost tracking and rebilling.</p>
<ul>
<li><strong>Tag requests</strong>: Send an <code>x-topograph-workspace-id</code> header with any <code>/v2/company</code> request (including <code>mode: &quot;onboarding&quot;</code>) to attribute usage to a specific workspace. The legacy <code>/v2/onboarding</code> route remains workspace-taggable for backward compatibility.</li>
<li><strong>Manage workspaces</strong>: Full CRUD API to create, update, list, and delete workspaces, each with an associated legal entity name</li>
<li><strong>Usage reporting</strong>: New <code>GET /v2/workspaces/usage</code> endpoint returns per-workspace credit consumption with catalog-item breakdown, filterable by date range</li>
<li><strong>Default workspace</strong>: Requests without an <code>x-topograph-workspace-id</code> header are automatically tagged to the default workspace (fully backward compatible)</li>
<li><strong>Dashboard support</strong>: The billing dashboard now shows a workspace column and supports &quot;Split by Workspaces&quot; in the usage graph</li>
</ul>
<p>This is ideal for <strong>resellers</strong> rebilling clients, <strong>multi-entity organizations</strong> allocating costs, and <strong>platforms</strong> tracking per-tenant consumption.</p>
<p>See the full <a href="/essentials/workspaces">Workspaces documentation</a> and <a href="/api-reference/workspaces/list-all-workspaces">API reference</a>.</p>
<h2>Countries</h2>
<h3>🇱🇻 Latvia</h3>
<p><strong>Onboarding Profile &amp; Fast Search: Open Data Batch Pipeline</strong></p>
<p>Latvia now has synchronized search and an onboarding profile powered by open data from data.gov.lv (~480K entities), providing fast company lookups.</p>
<ul>
<li><p><strong>Fast search</strong>: Fast search by company name or registration number, with register fallback for supplementary results</p>
</li>
<li><p><strong>Onboarding profile</strong>: Rich company data from synchronized source data (~1s): legal form, status, capital, legal representatives, shareholders (SIA + AS), and ultimate beneficial owners</p>
</li>
<li><p><strong>7 data sources</strong>: Daily CSV sync: company register, officers, members, stockholders, beneficial owners, equity capitals, and areas of activity</p>
</li>
<li><p><strong>Address geocoding</strong>: Addresses are geocoded with skip-if-unchanged optimization for subsequent refreshes</p>
</li>
<li><p><strong>Incremental updates</strong>: Only companies with actual data changes are reprocessed on refresh runs</p>
<p>The onboarding profile does not include NACE/ISIC activity codes or AI
enrichment; use the full company profile for those. Shareholders of type
DEPOSITORY (Nasdaq CSD nominee holdings for listed companies) are excluded.</p>
</li>
</ul>
<p>For detailed information, see our <a href="/essentials/latvia">Latvia documentation</a>.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 10, 2026: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-10-2026</link>
            <guid>https://docs.topograph.co/changelog#week-10-2026</guid>
            <pubDate>Mon, 09 Mar 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇪🇪 Estonia</h3>
<ul>
<li><strong>Expanded UBO control type coverage</strong>: Added support for 5 additional RIK control type codes (<code>K</code>, <code>C</code>, <code>S</code>, <code>Z</code>, <code>Y</code>), bringing the total from 4 to all 9 codes defined by the Estonian Money Laundering Prevention Act (RahaPTS §9). Notably, indirect ownership (<code>K</code>) is now correctly mapped with <code>nature: indirect</code>, and appointment rights (<code>Y</code>) have an explicit mapping instead of relying on the default fallback.</li>
</ul>
<h3>🇰🇾 Cayman Islands</h3>
<p><strong>New Country: Cayman Islands Integration</strong></p>
<p>We&#39;ve added full support for the Cayman Islands, sourcing all data from the <strong>General Registry (CIREGISTRY)</strong>, the official registrar of companies, partnerships, and trusts.</p>
<ul>
<li><p><strong>Search</strong> - Name-based entity search across 45,000+ registered entities</p>
</li>
<li><p><strong>Company profile</strong> - AI-extracted from the Detailed Search document: legal name, status, legal form, incorporation date, registered office, directors, and shareholders (when disclosed)</p>
</li>
<li><p><strong>Three document types</strong> - Detailed Search, Company Details, and Director Details, all delivered as PDF.</p>
</li>
<li><p><strong>Fast search</strong> - Search sessions are prepared ahead of time to reduce latency.</p>
</li>
<li><p><strong>Balance monitoring</strong> - Internal balance monitoring protects document availability.</p>
<p>The Cayman Islands does not assign numeric registration numbers. Entity names
are used as identifiers (base64-encoded in API responses). Exempted companies
(the most common entity type) are not required to publicly disclose
shareholders.</p>
</li>
</ul>
<p>For detailed information, see our <a href="/essentials/cayman-islands">Cayman Islands documentation</a>.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 9, 2026: Breaking Changes, Countries, Features]]></title>
            <link>https://docs.topograph.co/changelog#week-9-2026</link>
            <guid>https://docs.topograph.co/changelog#week-9-2026</guid>
            <pubDate>Mon, 02 Mar 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Breaking Changes</h2>
<h3>🔖 <code>statusDetailsBeta</code> renamed to <code>statusDetails</code></h3>
<p>The <code>status.statusDetailsBeta</code> field has been <strong>promoted to <code>status.statusDetails</code></strong> and is now considered stable. The <code>Beta</code> suffix has been removed.</p>
<p><strong>Action required:</strong> Update any code reading <code>statusDetailsBeta</code> to <code>statusDetails</code>.</p>
<p>All existing values (<code>status</code>, <code>closureReason</code>, <code>closureDate</code>, <code>insolvencyStartDate</code>, <code>additionalInfo</code>) and their semantics are unchanged. A new <code>SPLIT</code> value has been added to <code>closureReason</code> to cover corporate splits.</p>
<p>See the <a href="/guides/company-status">Company Status guide</a> for full documentation on the status model, all enum values, country coverage, and usage patterns.</p>
<h2>Countries</h2>
<h3>🇷🇴 Romania</h3>
<p><strong>Onboarding Profile: ONRC Open Data Batch Pipeline</strong></p>
<p>Romania now has an onboarding profile powered by ONRC Open Data (~4.1M entities), providing fast company lookups from synchronized data.</p>
<ul>
<li><strong>Search</strong>: Full-text search by company name, CUI, or registration number</li>
<li><strong>Onboarding Profile</strong>: Fast company lookup (~1s) with deterministic mappings for status (197 official codes), legal form (20+ types with ISO 20275), and activity codes (CAEN → NACE → ISIC)</li>
<li><strong>Legal representatives</strong>: Individual and corporate representatives with role mapping, birth date, nationality, and addresses</li>
<li><strong>Activity codes</strong>: CAEN Rev. 2 codes with Romanian descriptions, NACE Rev. 2 with English descriptions, and ISIC Rev. 4 derived via the official UN correspondence table. All deterministic (no AI inference)</li>
<li><strong>Freshness check</strong>: the integration detects new dataset publications on data.gov.ro and refreshes automatically</li>
</ul>
<p>For detailed information, see our <a href="/essentials/romania">Romania documentation</a>.</p>
<h3>🇧🇪 Belgium</h3>
<p><strong>Full juridical situation mapping in <code>statusDetails</code></strong></p>
<p>Belgium now surfaces the complete KBO/CBE <strong>juridical situation</strong> (A152 code list) in <code>statusDetails</code>, replacing the previous binary active/ceased classification.</p>
<ul>
<li><strong><code>UNDER_INSOLVENCY_PROCEEDING</code></strong> for companies with an open bankruptcy (<code>050</code>) or judicial reorganisation (<code>091</code>) proceeding, with <code>insolvencyStartDate</code> when available</li>
<li><strong><code>closureReason</code></strong> now populated for closed companies: <code>BANKRUPTCY</code>, <code>VOLUNTARY_DISSOLUTION</code>, <code>ADMINISTRATIVE_DISSOLUTION</code>, <code>COURT_ORDER</code>, <code>LIQUIDATION</code>, <code>MERGER</code>, <code>SPLIT</code></li>
<li><strong><code>localName</code></strong> now reflects the French juridical situation label (e.g. <code>Ouverture de faillite</code>) instead of the generic <code>Actif</code> / <code>Cessé</code></li>
</ul>
<p>All 36 KBO/CBE juridical situation codes are mapped. Both the BCE Open Data fast path and the CBE Public Search enrichment path converge on the same standardised output.</p>
<p>For the complete code table, see the <a href="/essentials/belgium#juridical-situation-codes">Belgium documentation</a>. For the full status model reference, see the <a href="/guides/company-status">Company Status guide</a>.</p>
<h2>Features</h2>
<h3>📍 GPS Coordinates on Addresses</h3>
<p>Company addresses now include <code>latitude</code> and <code>longitude</code> fields, giving you precise geographic coordinates for every geocoded address. These coordinates are derived automatically from the address and are available across all countries.</p>
<ul>
<li><strong>Ready-to-use coordinates</strong> - Latitude and longitude are returned directly in the address object, no extra API call needed</li>
<li><strong>Map-friendly</strong> - Easily plot company locations on a map or calculate distances between companies</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 8, 2026: Features, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-8-2026</link>
            <guid>https://docs.topograph.co/changelog#week-8-2026</guid>
            <pubDate>Mon, 23 Feb 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Features</h2>
<h3>🔍 Domain-Based Company Search</h3>
<p>Search now supports web domain queries. When the search query looks like a domain (e.g., <code>doctrine.fr</code>, <code>stripe.com</code>, <code>kvk.nl</code>), the system resolves the company behind it and routes to the appropriate country&#39;s search.</p>
<ul>
<li><strong>Automatic detection</strong> - Domains are detected transparently, including with <code>https://</code> or <code>www.</code> prefixes</li>
<li><strong>Cross-country resolution</strong> - The resolved company&#39;s country is used for the search, regardless of the country parameter</li>
<li><strong>Fallback strategy</strong> - If the resolved identifier returns no results, the system retries with the resolved legal name</li>
</ul>
<h2>Countries</h2>
<h3>🇫🇮 Finland</h3>
<p><strong>Ultimate Beneficial Owners (UBOs)</strong></p>
<p>Finland now supports Ultimate Beneficial Owner data, sourced from PRH&#39;s ESR (Beneficial Ownership Register), a separate service from the existing VIRRE Trade Register integration.</p>
<ul>
<li><strong>Ownership &amp; voting rights</strong> - Structured control details with percentage values and nature (direct/indirect)</li>
<li><strong>Personal details</strong> - Name, date of birth, nationality, and residence city (resolved from Finnish municipality codes)</li>
<li><strong>Entity type awareness</strong> - UBO data is available for private limited companies (Oy). Public companies (Oyj), state-owned entities, associations, foundations, and sole entrepreneurs typically have no UBO data due to Finnish law requirements (&gt;25% ownership/voting threshold)</li>
</ul>
<p>For detailed information, see our <a href="/essentials/finland">Finland documentation</a>.</p>
<h3>🇩🇪 Germany</h3>
<p><strong>WZ 2008 Activity Classification</strong></p>
<p>German company profiles now include WZ 2008 (Wirtschaftszweig) activity codes, the official German economic activity classification system. The WZ 2008 code is matched from the company&#39;s &quot;Gegenstand des Unternehmens&quot; using AI-based classification against all 839 official sub-classes from Destatis.</p>
<ul>
<li><strong>New <code>WZ2008</code> field</strong> in company profile activities alongside ISIC and NACE</li>
<li>Supports all 839 WZ 2008 sub-classes with German descriptions</li>
<li>Available in both company profile and onboarding profile</li>
</ul>
<h3>🇭🇺 Hungary</h3>
<p><strong>Major Rework: Official e-Cégjegyzék API Integration</strong></p>
<p>We&#39;ve completely reworked the Hungary integration by switching to the official e-Cégjegyzék (OCCSZ) source for Trade Register Extract retrieval. Company profiles are parsed deterministically from the extract, with enrichment only for address parsing, legal form standardization, and role classification.</p>
<ul>
<li><strong>Variable pricing</strong>: Unlike flat-rate countries, the Trade Register Extract price depends on the document size. Prices are shown before purchase.</li>
<li><strong>Budget control</strong>: New <code>profileMaxBudget</code> parameter lets you set a maximum spend. If the estimate exceeds your budget, the request fails with a <code>budget_exceeded</code> error so you can retry with a higher budget.</li>
<li><strong>Expanded data coverage</strong>: Company profiles now include shareholders (from TRE Part II), establishments (business premises and branch offices), other key persons (auditors, supervisory board members), and activity codes (TEÁOR, NACE, ISIC)</li>
<li><strong>Field-level data source tracking</strong>: Each field in the response includes provenance metadata (<code>live_from_registry</code> for TRE-derived data, <code>ai_analysis</code> for AI-enriched fields like address and legal form, <code>vies</code> for VAT validation)</li>
<li><strong>Search by VAT number</strong>: Search now supports Hungarian VAT numbers (with or without <code>HU</code> prefix)</li>
</ul>
<p>For detailed information, see our <a href="/essentials/hungary">Hungary documentation</a>.</p>
<h3>🇫🇷 France</h3>
<p><strong>Deterministic Legal Form &amp; Role Mapping -- AI Removed</strong></p>
<p>We&#39;ve replaced all AI-based legal form and role mapping in France with fully deterministic static lookups, eliminating runtime AI calls for these fields across both batch and live pipelines.</p>
<ul>
<li><strong>Legal forms</strong> -- All 450 INSEE catégorie juridique codes are now mapped via a static lookup table providing the local French name, English translation, standardized category, and ISO 20275 (ELF) code. Previously, live requests used GPT-4.1-mini for translation and standardization. The static mapping was generated by running AI enrichment once on every code and freezing the results.</li>
<li><strong>Roles</strong> -- All 71 RNE role codes are now mapped via a static lookup with standardized role, English translation, and legal representative classification based on French corporate law. No AI involved.</li>
<li><strong>SIRENE legal forms</strong> -- SIRENE-only companies (not in RNE) now use the same static legal form mapping as RNE, providing full English translations, standardized categories, and ISO 20275 codes. Previously, SIRENE batch mode returned only the local name.</li>
</ul>
<p><strong>Impact:</strong></p>
<ul>
<li>Faster response times (no AI calls for legal form or role enrichment)</li>
<li>Consistent results (deterministic, no variance between requests)</li>
<li>Lower cost (no LLM token usage for these fields)</li>
<li>SIRENE-only companies now have the same legal form data quality as RNE companies</li>
</ul>
<p>For the complete mapping tables, see our <a href="/essentials/france#legal-forms">France documentation</a>.</p>
<h3>🇮🇹 Italy</h3>
<p><strong>Shareholders as a Standalone Datapoint</strong></p>
<p>Italy shareholders are now available as an independent <code>shareholders</code> datapoint, separate from the company profile. Previously, shareholder data was bundled into <code>companyProfile</code> and always fetched together. Now you can request shareholders independently or alongside the company profile.</p>
<ul>
<li><strong>Dedicated <code>shareholders</code> datapoint</strong>: fetch shareholders without triggering a full company profile request</li>
<li><strong>Birth data enrichment</strong>: individual shareholders are cross-referenced with legal representatives to populate birth date and birth address when available (using the InfoCamere register, which is cached)</li>
<li><strong>Sole proprietors</strong>: correctly return an empty shareholders list, as sole proprietorships have no registered shareholders in the trade register</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 7, 2026: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-7-2026</link>
            <guid>https://docs.topograph.co/changelog#week-7-2026</guid>
            <pubDate>Mon, 16 Feb 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇸🇬 Singapore</h3>
<p><strong>New Country: Full Company Data Platform</strong></p>
<p>Singapore is now available on Topograph, powered by ACRA Open Data (~2.07M entities) and BizFile document purchases:</p>
<ul>
<li><strong>Search</strong> - Full-text search by company name or UEN</li>
<li><strong>Onboarding Profile</strong> - Fast company lookup from ACRA batch data (~3.5s) with formal mappings for status, legal form (ISO 20275), and activity codes (SSIC → ISIC)</li>
<li><strong>Company Profile</strong> - Detailed company data including shareholders and legal representatives, extracted from purchased Business Profile PDF</li>
<li><strong>Documents</strong> - Business Profile (Trade Register Extract) purchased via BizFile (~60s delivery)</li>
</ul>
<p>For detailed information, see our <a href="/essentials/singapore">Singapore documentation</a>.</p>
<h3>🇭🇷 Croatia</h3>
<p><strong>Major Performance Improvements &amp; Onboarding Profile</strong></p>
<p>We&#39;ve significantly improved Croatia&#39;s performance by replacing the browser-based scraper with direct HTTP parsing and optimized API calls. All retrieval times are now dramatically faster:</p>
<ul>
<li><strong>Onboarding Profile</strong> - New lightweight company data endpoint optimized for onboarding flows (~5s)</li>
<li><strong>Search</strong> - ~3-10s</li>
<li><strong>Company Profile</strong> - ~15s (now includes legal representative start dates when available)</li>
<li><strong>Certified Trade Register Extract</strong> - ~5s (previously ~1m30s)</li>
<li><strong>Shareholders</strong> - New standalone shareholders datapoint</li>
<li><strong>Shared documents information retrieval time</strong> - ~7s (previously ~1m30s)</li>
</ul>
<p>For detailed information, see our <a href="/essentials/croatia">Croatia documentation</a>.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 6, 2026: API, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-6-2026</link>
            <guid>https://docs.topograph.co/changelog#week-6-2026</guid>
            <pubDate>Mon, 09 Feb 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>API</h2>
<h3>🧾 Expanded VAT Validation to 20 EU Countries</h3>
<p>We&#39;ve dramatically expanded VAT validation support from 2 to 20 EU countries. All supported countries now include:</p>
<ul>
<li><p><strong>VAT search</strong> - Search for companies using their VAT number (with or without country prefix)</p>
</li>
<li><p><strong>VIES verification</strong> - Automatic validation with legally admissible proof (<code>consultationNumber</code>)</p>
</li>
<li><p><strong>Frontend display</strong> - New Tax ID component in company profiles showing verification status with expandable VIES details</p>
<img src="https://mintcdn.com/semaphore/d5tJppvAvKz2JXhn/images/tax-id-verification-details.png?fit=max&auto=format&n=d5tJppvAvKz2JXhn&q=85&s=9b7895b58bf28d6ff255cc88907b685b" alt="Tax ID verification details showing registered name, address, verification date and consultation number" width="738" height="402" data-path="images/tax-id-verification-details.png" /></li>
</ul>
<p><strong>Full taxId support (VAT in profile + VIES verification):</strong></p>
<p>🇫🇷 France, 🇪🇸 Spain, 🇸🇪 Sweden, 🇮🇹 Italy, 🇵🇹 Portugal, 🇵🇱 Poland, 🇪🇪 Estonia, 🇦🇹 Austria, 🇧🇪 Belgium, 🇱🇺 Luxembourg, 🇩🇰 Denmark, 🇨🇿 Czechia, 🇷🇴 Romania, 🇭🇺 Hungary, 🇫🇮 Finland, 🇭🇷 Croatia</p>
<p><strong>VAT search only (VIES reverse lookup, no taxId in profile):</strong></p>
<p>🇱🇻 Latvia, 🇨🇾 Cyprus, 🇮🇪 Ireland, 🇲🇹 Malta</p>
<p>  For countries with &quot;VAT search only&quot;, the VAT number is neither
  algorithmically derivable from the registration number nor available in the
  registry API. You can still search by VAT number via VIES reverse lookup, but
  the <code>taxId</code> field won&#39;t appear in company profiles.</p>
<p>For detailed documentation, see our <a href="/essentials/vat-validation">VAT Validation guide</a>.</p>
<h3>🧾 Tax ID Support (taxId) - France &amp; Spain</h3>
<p>Added a new <code>taxId</code> field to company profiles that provides structured tax identification information.</p>
<p><strong>Key features:</strong></p>
<ul>
<li><strong>Structured tax ID data</strong> - Includes type, value, country, and verification status</li>
<li><strong>Verification with legal proof</strong> - Optional VIES validation provides a <code>consultationNumber</code> (official EU receipt) for audit purposes</li>
<li><strong>No external calls for basic data</strong> - VAT numbers are calculated mathematically (France) or derived from NIF (Spain) without API calls</li>
<li><strong>Search by VAT</strong> - Both countries now support searching by VAT number</li>
</ul>
<p><strong>Response structure:</strong></p>
<pre><code class="language-json">{
  &quot;taxId&quot;: {
    &quot;type&quot;: &quot;eu_vat&quot;,
    &quot;value&quot;: &quot;27443061841&quot;, // WITHOUT country prefix
    &quot;country&quot;: &quot;FR&quot;,
    &quot;verification&quot;: {
      &quot;status&quot;: &quot;unverified&quot;,
      &quot;consultationNumber&quot;: &quot;WAPIAAAAW...&quot; // Only with VIES validation
    }
  }
}
</code></pre>
<p><strong>Country-specific notes:</strong></p>
<ul>
<li><p>🇫🇷 <strong>France</strong>: VAT calculated from SIREN using the official formula. Search now supports TVA Intracommunautaire format.</p>
</li>
<li><p>🇪🇸 <strong>Spain</strong>: VAT value equals NIF (Número de Identificación Fiscal). Note: Having a NIF doesn&#39;t guarantee EU VAT registration (requires ROI enrollment).</p>
<p>The <code>taxId.value</code> field stores the VAT number WITHOUT the country prefix. The
country is stored separately in <code>taxId.country</code>. The <code>identifiers.VAT</code> field
also stores the VAT value without prefix for consistency.</p>
</li>
</ul>
<h2>Countries</h2>
<h3>🇬🇷 Greece</h3>
<p>We&#39;re excited to announce support for <strong>Greece</strong> company data from the <strong>GEMI</strong> (Γενικό Εμπορικό Μητρώο - General Commercial Registry):</p>
<ul>
<li><p><strong>Search</strong> - Find companies by GEMI number, VAT number (ΑΦΜ), or company name</p>
</li>
<li><p><strong>Onboarding Profile</strong> - Fast, lightweight company data optimized for onboarding flows (~7 seconds)</p>
</li>
<li><p><strong>Company Profile</strong> - Comprehensive company data including legal representatives, shareholders, activities (NACE codes), and share capital (~10 seconds)</p>
</li>
<li><p><strong>Available Documents</strong> - List all available documents including financial statements, articles of association, and official GEMI announcements (~6 seconds)</p>
</li>
<li><p><strong>Document Download</strong> - Retrieve financial statements, articles of association, and official publications (~6 seconds) or Trade Register Extract (~10 seconds) as PDFs</p>
<p>OKOIP (Charities register) integration for additional company data is planned
for a future release.</p>
</li>
</ul>
<p>For detailed information about Greece&#39;s registration system and available features, see our <a href="/essentials/greece">Greece documentation</a>.</p>
<h3>🇱🇺 Luxembourg</h3>
<ul>
<li><strong>Improved speed &amp; reliability</strong> - We&#39;ve made significant improvements to Luxembourg data retrieval. Company searches, profile lookups, and Trade Register Extract orders are now faster and more reliable.</li>
<li><strong>Onboarding Profile</strong> - Added a new fast onboarding profile endpoint that returns basic company data (name, address, legal form, activities) in ~250-500ms.</li>
</ul>
<h3>🇨🇾 Cyprus</h3>
<ul>
<li><strong>Shareholders support</strong> - Added shareholders extraction from the Trade Register Extract (Study File) PDF. Shareholders are extracted using AI parsing from the official DRCOR document, supporting both individual and corporate shareholders with ownership percentages when available. Billing occurs via the Trade Register Extract document purchase.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 5, 2026: Countries, Features, Platform, and more]]></title>
            <link>https://docs.topograph.co/changelog#week-5-2026</link>
            <guid>https://docs.topograph.co/changelog#week-5-2026</guid>
            <pubDate>Mon, 02 Feb 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇮🇪 Ireland</h3>
<p><strong>Legal Representatives &amp; Shareholders Now Available</strong></p>
<p>We&#39;ve significantly expanded Ireland data coverage with two major additions:</p>
<ul>
<li><p><strong>Legal Representatives</strong> - Directors and other key persons (secretaries, filing agents) are now extracted from the Company Printout (Trade Register Extract) document using AI parsing. Available in the <code>companyProfile</code> response.</p>
</li>
<li><p><strong>Shareholders</strong> - A new <code>shareholders</code> datapoint extracts ownership information from B1C Annual Return documents. The AI parses member details, share counts, and calculates ownership percentages from the issued share capital.</p>
<p>Both extractions use AI parsing from PDF documents. Role standardization and
shareholder type determination are AI-inferred. Shareholders are only
extracted for active companies.</p>
</li>
</ul>
<p>For details, see our <a href="/essentials/ireland">Ireland documentation</a>.</p>
<h3>🇧🇪 Belgium</h3>
<p>Fixed <code>representedBy</code> field for corporate legal representatives. When a company is a legal representative (e.g., Director), the natural person who acts on its behalf (permanent representative) is now correctly populated in the <code>representedBy</code> field.</p>
<h2>Features</h2>
<h3>Designee Role in Relationships Table</h3>
<p>Added a new <strong>Designee</strong> role type to the relationships table. When a company is a legal representative, the natural person designated to act on its behalf now appears as a separate entity with the &quot;Designee&quot; role badge. This provides clearer visibility into who actually represents corporate officers.</p>
<ul>
<li>Designees are shown as distinct entities in the relationships table</li>
<li>Expanding a company legal rep now shows the designee in the details section</li>
<li>Added info tooltips to all role badges explaining their meaning</li>
</ul>
<h3>💰 Financial Data Analysis</h3>
<p>Improved financial data extraction and analysis is now accessible in the frontend app. Financial data can be viewed directly from the documents table with detailed AI analysis, ratios, and structured financial statements. See the <a href="/essentials/financial-data-extraction">Financial Data Extraction documentation</a> for details.</p>
<h2>Platform</h2>
<h3>📄 Improved PDF Export</h3>
<p>Enhanced PDF export with improved visual design, correct logo rendering, and better alignment with the frontend color palette.</p>
<h2>API</h2>
<h3>🔍 Enhanced Search Results with Match Reason</h3>
<p>Search results now include a <code>matchReason</code> field that provides detailed information about why a result was returned:</p>
<ul>
<li><p><strong><code>matchType</code></strong> - Indicates the type of match:</p>
<ul>
<li><code>id</code> - Guaranteed 1:1 match from an ID-based search (e.g., VAT number, CCIAA+REA)</li>
<li><code>exactLegalName</code> - The legal name exactly matches the search query</li>
<li><code>partialId</code> - Matched by a partial identifier not guaranteed unique (e.g., REA without CCIAA)</li>
<li><code>default</code> - Used when the exact matching criteria is unknown</li>
</ul>
</li>
<li><p><strong><code>identifier</code></strong> - Shows which identifier matched (when applicable), with typed definitions per country</p>
</li>
</ul>
<p><strong>Example response:</strong></p>
<pre><code class="language-json">{
  &quot;legalName&quot;: &quot;ACME SRL&quot;,
  &quot;matchReason&quot;: {
    &quot;matchType&quot;: &quot;id&quot;,
    &quot;identifier&quot;: { &quot;VAT&quot;: &quot;02580590541&quot; }
  }
}
</code></pre>
<h3>🇮🇹🇫🇷 Typed Country Identifiers</h3>
<p>Introduced typed identifier definitions with full OpenAPI documentation:</p>
<ul>
<li><strong>Italy</strong>: VAT, Codice Fiscale, CCIAA, REA Code</li>
<li><strong>France</strong>: SIREN, SIRET, TVA Intracommunautaire, RNA, RNA Alsace-Moselle</li>
</ul>
<p>Each identifier includes detailed descriptions, format specifications, and issuing authority information in the API documentation.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 3, 2026: Countries, Features]]></title>
            <link>https://docs.topograph.co/changelog#week-3-2026</link>
            <guid>https://docs.topograph.co/changelog#week-3-2026</guid>
            <pubDate>Mon, 19 Jan 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇻🇬 British Virgin Islands</h3>
<p>We&#39;re excited to announce support for <strong>British Virgin Islands (BVI)</strong> company data from the BVI Financial Services Commission (FSC) Public Search:</p>
<ul>
<li><p><strong>Search</strong> - Find companies by name or company number (numeric or alphanumeric format like <code>L658</code>)</p>
</li>
<li><p><strong>Onboarding Profile</strong> - Fast, lightweight company data optimized for onboarding flows including legal form, status, and company type classification</p>
</li>
<li><p><strong>Company Profile</strong> - Comprehensive company data including legal representatives and shareholders when disclosed, extracted from the Trade Register Extract using AI parsing</p>
</li>
<li><p><strong>Trade Register Extract (Certificate of Good Standing)</strong> - Official PDF document from the BVI FSC containing company registration information</p>
<p>As of now, document retrieval for BVI relies on a manual concierge process due
to instability in direct API access. This may result in some delay (typically
1-2 business days) when retrieving the Trade Register Extract. We are actively
working on improving this process.</p>
</li>
</ul>
<p>For detailed information about BVI&#39;s company number system and available features, see our <a href="/essentials/bvi">British Virgin Islands documentation</a>.</p>
<h3>🇱🇮 Liechtenstein</h3>
<p>We&#39;re excited to announce support for <strong>Liechtenstein</strong> company data from the official Handelsregister (Trade Register):</p>
<ul>
<li><strong>Search</strong> - Find companies by name or FL registration number (e.g., <code>FL-0002.658.754-1</code>)</li>
<li><strong>Onboarding Profile</strong> - Fast, lightweight company data optimized for onboarding flows including legal form, status, and registration details</li>
<li><strong>Company Profile</strong> - Comprehensive company data including legal representatives, shareholders, and share capital, extracted from the Trade Register Extract using AI parsing</li>
<li><strong>Trade Register Extract</strong> - Official PDF document from the Liechtenstein Handelsregister containing complete company registration information</li>
</ul>
<p>For detailed information about Liechtenstein&#39;s registration number system and available features, see our <a href="/essentials/liechtenstein">Liechtenstein documentation</a>.</p>
<h3>🇱🇻 Latvia</h3>
<p>We&#39;re excited to announce full support for <strong>Latvia</strong> company data from the Enterprise Register (Uzņēmumu reģistrs):</p>
<ul>
<li><strong>Search</strong> - Find companies by name or registration number (11-digit identifier, e.g., <code>40103217882</code>)</li>
<li><strong>Company Profile</strong> - Comprehensive company data including legal form, status, capital, activities (NACE codes), legal representatives, shareholders, and other key persons (~15 seconds retrieval time)</li>
<li><strong>Ultimate Beneficial Owners</strong> - UBO data with ownership percentages and control details</li>
<li><strong>Certified Trade Register Extract</strong> - Official PDF extract from the Enterprise Register (~25 seconds retrieval time)</li>
<li><strong>Articles of Association</strong> - Company statutes and amendments (~25 seconds retrieval time)</li>
<li><strong>Financial Statements</strong> - Annual reports in PDF format (~25 seconds retrieval time)</li>
<li><strong>Other Registry Documents</strong> - Registration certificates, shareholder registers, board protocols, and more (~ 25 seconds retrieval time)</li>
</ul>
<p>For detailed information about Latvia&#39;s registration system and available features, see our <a href="/essentials/latvia">Latvia documentation</a>.</p>
<h3>🇸🇰 Slovakia</h3>
<p>We&#39;re excited to announce full support for <strong>Slovakia</strong> company data from the RPO (Register of Legal Entities, Entrepreneurs and Public Authorities) and ORSR (Commercial Register):</p>
<ul>
<li><strong>Search</strong> - Find companies by name (partial match supported) or IČO (8-digit Organization Identification Number)</li>
<li><strong>Company Profile</strong> - Comprehensive company data including legal representatives, shareholders, share capital, business activities, and more. (~20 seconds retrieval time)</li>
<li><strong>Trade Register Extract</strong> - Official PDF extract from the Commercial Register in mixed English and Slovakian (~15 seconds retrieval time)</li>
</ul>
<p>Slovakia uses <strong>IČO</strong> (Identifikačné číslo organizácie) as the primary company identifier, an 8-digit number assigned to all registered legal entities.</p>
<p>For detailed information about Slovakia&#39;s identifier system and available features, see our <a href="/essentials/slovakia">Slovakia documentation</a>.</p>
<h3>🇬🇬 Guernsey</h3>
<p>We&#39;re excited to announce full support for <strong>Guernsey</strong> company data from the Guernsey Registry (GFSC):</p>
<ul>
<li><strong>Search</strong> - Find entities by name or registration number with prefix (e.g., <code>CMP10001</code>, <code>FND167</code>, <code>LLP149</code>)</li>
<li><strong>Company Profile</strong> - Comprehensive company data including legal representatives, other key persons, activities, and addresses (~15 seconds retrieval time)</li>
<li><strong>Trade Register Extract</strong> - Official Statement of Register PDF for companies, foundations, partnerships, charities, and non-profits (~1-3 minutes retrieval time)</li>
<li><strong>Certificate of Good Standing</strong> - Official certificate confirming current good standing (~1-3 minutes retrieval time)</li>
<li><strong>Certificate of Incorporation</strong> - Historical incorporation certificate (~1-3 minutes retrieval time)</li>
<li><strong>Articles of Association</strong> - Constitutional documents and amendments (~1-3 minutes retrieval time)</li>
<li><strong>Other Filed Documents</strong> - Annual validations, resolutions, and other registry filings (~1-3 minutes retrieval time)</li>
</ul>
<p>Guernsey uses <strong>registration number prefixes</strong> to identify entity types: <code>CMP</code> (Companies), <code>FND</code> (Foundations), <code>LLP</code> (Limited Liability Partnerships), <code>LP</code> (Limited Partnerships), <code>CH</code> (Charities), and <code>NP</code> (Non-Profit Organisations).</p>
<p>For detailed information about Guernsey&#39;s identifier system and available features, see our <a href="/essentials/guernsey">Guernsey documentation</a>.</p>
<h3>🇨🇿 Czechia</h3>
<ul>
<li><strong>UBO support disabled</strong> - Due to Czechia restricting access to its UBO registry, we are disabling Ultimate Beneficial Owners support for Czech companies. Other features remain available including company search, company profile, and trade register extracts.</li>
</ul>
<h2>Features</h2>
<h3>Shareholders Extraction (Alpha)</h3>
<p>We&#39;re introducing a new <code>shareholders</code> datapoint for countries where shareholder data is not available directly from official registries. This feature reconstructs the most probable current shareholder structure by analyzing available company documents.</p>
<p>Currently available for <strong>France (FR)</strong>, <strong>United Kingdom (GB)</strong>, and <strong>Belgium (BE)</strong>.</p>
<p>  This is an alpha feature providing best-effort reconstruction. Results should
  be verified manually for compliance use cases.</p>
<p>For more details, see our <a href="/essentials/shareholders-extraction">Shareholders Extraction documentation</a>.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 2, 2026: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-2-2026</link>
            <guid>https://docs.topograph.co/changelog#week-2-2026</guid>
            <pubDate>Mon, 12 Jan 2026 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇨🇭 Switzerland</h3>
<ul>
<li><strong>Trade Register Extract now available for all 26 cantons</strong> - You can now download official trade register extracts (PDF) for Swiss companies across all cantons, including Zürich, Geneva, Vaud, Bern, and all other Swiss jurisdictions.</li>
</ul>
<h3>🇯🇪 Jersey</h3>
<p>We&#39;re excited to announce full support for <strong>Jersey</strong> company data from the Jersey Financial Services Commission (JFSC) Registry:</p>
<ul>
<li><strong>Search</strong> - Find companies by name or registration number (4-7 digit numeric identifier)</li>
<li><strong>Onboarding Profile</strong> - Fast, lightweight company data optimized for onboarding flows including legal form, status, and registration date</li>
<li><strong>Company Profile</strong> - Comprehensive company data including legal representatives (directors, secretary) and shareholders when disclosed (~1 minute processing time)</li>
<li><strong>Entity Profile Report</strong> - Official PDF document from the JFSC containing complete company registration information (~1 minute retrieval time)</li>
</ul>
<p>For detailed information about Jersey&#39;s registration number system and available features, see our <a href="/essentials/jersey">Jersey documentation</a>.</p>
<h3>🇲🇺 Mauritius</h3>
<p>We&#39;re excited to announce full support for <strong>Mauritius</strong> company data:</p>
<ul>
<li><strong>Search</strong> - Find companies by name, File Number, Business Name, or BRN</li>
<li><strong>Onboarding Profile</strong> - Fast, lightweight company data optimized for onboarding flows (typically ~3 seconds)</li>
<li><strong>Company Profile</strong> - Comprehensive company data including legal representatives, shareholders, capital, and activities (typically ~15-20 seconds)</li>
<li><strong>Trade Register Extract</strong> - Official PDF document from the Corporate and Business Registration Department (CBRD)</li>
</ul>
<p>Mauritius companies use <strong>File Number</strong> (e.g., <code>C227332</code>) as the primary identifier, with support for both domestic companies and Global Business Companies (GBC).</p>
<h3>🇲🇨 Monaco</h3>
<ul>
<li><strong>Initial support for Monaco</strong> - We&#39;re excited to announce support for Monégasque companies with our integration of the RCI (Répertoire du Commerce et de l&#39;Industrie) register! Currently available features:<ul>
<li><strong>Company search by name</strong> - Find Monégasque companies using their registered business names</li>
<li><strong>Company search by RCI number</strong> - Direct lookup using Monaco RCI registration numbers (format: <code>YY[A-Z]{1,2}\\d{4,5}</code>; legacy civil alias like <code>YYSC#####</code> is normalized to <code>YYC#####</code>)</li>
<li><strong>Fast onboarding-style company data</strong> - Lightweight company data optimized for onboarding flows including legal form, activities, and address</li>
<li><strong><code>companyProfile</code></strong> - Comprehensive company information extracted from the trade register extract, including legal representatives, capital, registration dates, and enriched data (~1 minute processing time)</li>
<li><strong>Trade Register Extract</strong> - Official PDF extract from RCI containing complete company registration information including legal representatives, activities, capital, and status (~1 minute retrieval time)</li>
</ul>
</li>
</ul>
<p>For detailed information about Monaco&#39;s RCI number system and available features, see our <a href="/essentials/monaco">Monaco documentation</a>.</p>
<h3>🇧🇪 Belgium</h3>
<ul>
<li><strong>Improved performance and robustness</strong> - Enhanced speed and reliability for Belgian company data retrieval operations.</li>
</ul>
<h3>🇭🇰 Hong Kong</h3>
<ul>
<li><strong>Restored <code>companyProfile</code> and <code>registerExtract</code> functionality</strong> and significantly improved system robustness for Hong Kong data retrieval.</li>
</ul>
<h3>🇭🇷 Croatia</h3>
<ul>
<li><strong>Initial support for Croatia</strong> - We&#39;re excited to announce support for Croatian companies with our integration of Sudreg (Court Registry) and RGFI/FINA (Annual Financial Statements Registry)! Currently available features:<ul>
<li><strong>Company search by name</strong> - Find Croatian companies using their registered business names</li>
<li><strong>Company search by MBS</strong> - Direct lookup using the 9-digit company registration number (e.g., <code>080000376</code>)</li>
<li><strong>Company search by OIB</strong> - Direct lookup using the 11-digit tax identification number (e.g., <code>81793146560</code>)</li>
<li><strong><code>companyProfile</code></strong> - Comprehensive company information including status, legal form, legal representatives, shareholders, supervisory board members, share capital, and business activities (~15s retrieval time)</li>
<li><strong>Certified Trade Register Extract</strong> - Official PDF extract from Sudreg containing current company information (~1m30s retrieval time)</li>
<li><strong>Financial Statements</strong> - Balance sheets, profit &amp; loss statements, notes, and profit distribution decisions from RGFI/FINA (~1m30s retrieval time)</li>
<li><strong>Constitutional Documents</strong> - Articles of association and minutes of establishment</li>
<li><strong>Registry Documents</strong> - Registration decisions, announcements, OIB certificates, and other court filings</li>
</ul>
</li>
</ul>
<p>For detailed information about Croatia&#39;s identifier system and available features, see our <a href="/essentials/croatia">Croatia documentation</a>.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 51, 2025: Platform]]></title>
            <link>https://docs.topograph.co/changelog#week-51-2025</link>
            <guid>https://docs.topograph.co/changelog#week-51-2025</guid>
            <pubDate>Mon, 22 Dec 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<h3>Ownership Graph Enhancements</h3>
<p>We&#39;ve significantly improved our ownership graph feature with better control and visualization:</p>
<ul>
<li><strong>Budget control</strong> - Set a maximum credit budget when requesting the ownership graph to control traversal costs</li>
<li><strong>Interactive visualization</strong> - The ownership graph now displays as an interactive diagram with nodes representing companies and individuals, and edges showing ownership percentages</li>
<li><strong>Traversal transparency</strong> - See exactly why the graph stopped (completed, budget exhausted, depth limit) and how many companies were fetched or skipped</li>
</ul>
<h3>Application Redesign</h3>
<p>We&#39;ve made numerous improvements to make the experience smoother and the interface has been globally enhanced.</p>
<p><strong>Key improvements:</strong></p>
<ul>
<li><strong>Automatic document listing</strong> - Since document listing is free, it is now always requested automatically when you open a company</li>
<li><strong>New relationships view</strong> - People appearing in multiple roles (shareholder + UBO for example) are now automatically grouped together, with advanced filters and customizable columns</li>
<li><strong>Interactive map for establishments</strong> - The establishments section now displays an interactive map with Street View</li>
<li><strong>Real-time updates</strong> - Requested data and documents now appear in real-time, without reloading the page</li>
<li><strong>Request history improvements</strong> - Access all your previous requests through infinite scroll, and switch between &quot;All requests&quot; (organization scope) and &quot;My requests&quot; views</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 50, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-50-2025</link>
            <guid>https://docs.topograph.co/changelog#week-50-2025</guid>
            <pubDate>Mon, 15 Dec 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<h3>📋 Legal Representative Data Model Enhancement</h3>
<ul>
<li><strong>Added <code>representedBy</code> field for corporate legal representatives</strong> - When a company (personne morale) serves as a legal representative, you can now see the physical person who represents that company. This captures the &quot;représentant permanent&quot; (permanent representative) commonly found in French documents or &quot;vertreten durch&quot; in German documents.</li>
</ul>
<p>Example: When &quot;SAS MANAGEMENT&quot; is a legal representative, the API now shows both the company details and the individual (e.g., &quot;Jean DUPONT&quot;) who acts on its behalf.</p>
<h3>⚠️ Deprecations</h3>
<ul>
<li><strong>Removed <code>source</code> field from shareholders</strong> - The <code>source</code> field has been temporarily removed from shareholder data. We&#39;re working on a more comprehensive solution for tracking data provenance that will be introduced in a future release.</li>
</ul>
<h2>Countries</h2>
<h3>🇪🇸 Spain</h3>
<ul>
<li><strong>Improved speed and reliability</strong> - Spanish company data operations are now significantly faster with parallel request handling and automatic retry on slow connections</li>
<li><strong>IRUS as primary identifier</strong> - Spain now uses IRUS (Identificador Único del Registro de Sociedades) as the primary company identifier for document operations. Search by NIF/CIF still supported and returns the corresponding IRUS</li>
<li><strong>Available documents with pricing</strong> - Trade register extracts and financial statements show pricing before download</li>
</ul>
<h3>🇮🇪 Ireland</h3>
<ul>
<li><strong>Full access to CRO documents</strong> - You can now purchase and download documents from Ireland&#39;s Companies Registration Office:<ul>
<li><strong>Company Printout</strong> - Official trade register extract with current company details</li>
<li><strong>Letter of Status</strong> - Official letter confirming company standing</li>
<li><strong>Annual Returns</strong> - Yearly company filings including financial statements (B1C, B1)</li>
<li><strong>Constitutional Documents</strong> - Company constitution and incorporation documents</li>
<li><strong>Director/Secretary Filings</strong> - Appointment and resignation records (B10)</li>
<li><strong>Charge Documents</strong> - Mortgage and charge registrations (C1, C6)</li>
<li><strong>Share Capital Documents</strong> - Allotment and capital structure filings (B5, B7)</li>
<li><strong>Resolutions</strong> - Special and ordinary shareholder resolutions (G1, G2)</li>
</ul>
</li>
</ul>
<p>The average document download time is ~2 minutes.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 49, 2025: Platform]]></title>
            <link>https://docs.topograph.co/changelog#week-49-2025</link>
            <guid>https://docs.topograph.co/changelog#week-49-2025</guid>
            <pubDate>Mon, 08 Dec 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<h3>🚀 Onboarding Profiles</h3>
<p>We&#39;ve expanded fast <strong>onboarding-style</strong> company retrieval (today: <code>POST /v2/company</code> with <code>mode: &quot;onboarding&quot;</code>; previously documented as the Onboarding Profile flow) to support more countries:</p>
<ul>
<li>🇧🇪 <strong>Belgium (BE)</strong></li>
<li>🇩🇰 <strong>Denmark (DK)</strong></li>
<li>🇫🇷 <strong>France (FR)</strong></li>
<li>🇳🇱 <strong>Netherlands (NL)</strong></li>
<li>🇸🇪 <strong>Sweden (SE)</strong></li>
<li>🇬🇧 <strong>United Kingdom (GB)</strong></li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 48, 2025: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-48-2025</link>
            <guid>https://docs.topograph.co/changelog#week-48-2025</guid>
            <pubDate>Mon, 01 Dec 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇸🇪 Sweden</h3>
<ul>
<li><strong>Offering access to more Bolagsverket documents</strong> - You now have access to the following documents from the register :<ul>
<li><strong>Certified Trade Register Extract</strong> - Official &amp; certified PDF extract from Bolagsverket containing information about the company (~3 minutes retrieval time)</li>
<li><strong>Articles of association</strong> - Official PDF from Bolagsverket indicating business activities, registered office of the company, and so on (~ 3 minutes retrieval time)</li>
<li><strong>Statutes</strong> - Official PDF from Bolagsverket containing information about the company (~3 minutes retrieval time)</li>
<li><strong>Ultimate Beneficial Owners extract</strong> - Official PDF from Bolagsverket containing information about the ultimate beneficial owners of the company (~3 minutes retrieval time)</li>
<li><strong>Annual reports (all years compilation)</strong> - Official PDF from Bolagsverket containing financial informations of the company (~3 minutes retrieval time)</li>
<li><strong>Minutes (all years compilation)</strong> - Official PDF from Bolagsverket containing notes from board and general meetings (~3 minutes retrieval time)</li>
<li><strong>Current assignments</strong> - Official PDF from Bolagsverket containing information about a person&#39;s or company&#39;s current assignements in other entities (~3 minutes retrieval time)</li>
</ul>
</li>
<li><strong>Ultimate Beneficial Owners</strong> - Extracted from the <strong>Ultimate Beneficial Owners extract</strong>: Bolagsverket (the Swedish Companies Registration Office) reports control extent (&quot;Omfattning&quot;), not ownership percentage. Key difference: Multiple beneficial owners can each show 100% control because the percentage represents how much influence a person can exercise over the company, not their economic stake.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 47, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-47-2025</link>
            <guid>https://docs.topograph.co/changelog#week-47-2025</guid>
            <pubDate>Mon, 24 Nov 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<h3>🔄 Streaming Search</h3>
<ul>
<li><p><strong>Progressive search results</strong> - Search endpoints now support streaming mode via the <code>stream=true</code> query parameter, enabling progressive result delivery as each search source completes. This provides faster time-to-first-result and better user experience, especially for countries with multiple search sources.</p>
</li>
<li><p><strong>Server-Sent Events (SSE)</strong> - Streaming search uses SSE format with named events (<code>progress</code>, <code>complete</code>, <code>error</code>) for real-time result updates</p>
</li>
<li><p><strong>CLI support</strong> - The <code>topo</code> CLI tool now supports <code>--stream</code> flag for streaming search results</p>
<p>Streaming search is particularly beneficial for countries like Germany that
query multiple sources (cached, live APIs). Use streaming to get cached
results immediately (~200ms) while live sources continue to fetch additional
results in the background.</p>
</li>
</ul>
<p>For detailed documentation and code examples, see our <a href="/essentials/search">Search guide</a>.</p>
<h3>Application performance</h3>
<p>Minor improvements of the backoffice interface performance.</p>
<h2>Countries</h2>
<h3>🇩🇪 Germany</h3>
<ul>
<li><strong>Hybrid search architecture</strong> - Germany now uses three complementary search sources:<ul>
<li><strong>Fast search</strong> - Fast results from weekly-refreshed active company data</li>
<li><strong>Live Unternehmensregister search</strong> - Direct API queries for active companies in HRB, HRA, Genossenschaftsregister, Partnerschaftsregister, and Gesellschaftsregister registers</li>
<li><strong>Live Handelsregister VR search</strong> - Direct queries for non-profit organizations in the VR register</li>
</ul>
</li>
<li><strong>Enhanced search recall and robustness</strong> - By combining cached and live sources, search now provides higher recall and better fault tolerance. If one source fails, others continue to provide results.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 46, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-46-2025</link>
            <guid>https://docs.topograph.co/changelog#week-46-2025</guid>
            <pubDate>Mon, 17 Nov 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<h3>💳 Auto Top-Up</h3>
<ul>
<li><strong>Automatic credit replenishment</strong> - Your account credits are automatically topped up when your balance falls below a configurable threshold. Supports both instant payment methods (cards) and asynchronous methods (SEPA, ACH).</li>
</ul>
<h2>Countries</h2>
<h3>🇩🇪 Germany</h3>
<ul>
<li><strong>Improved speed</strong> - Enhanced performance across all German company data operations, resulting in faster response times for company profile retrieval, document listing, and document downloads.</li>
<li><strong>Vereinsregister (Non-Profit Register) support</strong> - Introduced support for the Vereinsregister (VR register), enabling access to non-profit organization data in Germany. Currently available features:<ul>
<li><strong>Trade Register Extract (Aktueller Abdruck)</strong> - Official PDF extract from the Vereinsregister containing current company information</li>
</ul>
</li>
</ul>
<h3>🇷🇴 Romania</h3>
<ul>
<li><strong>Initial support for Romania</strong> - We&#39;re excited to announce support for Romanian companies with our integration of the ONRC (Romanian trade register). Currently available features:<ul>
<li><strong>Company search by name</strong> - Find Romanian companies using their registered business names</li>
<li><strong>Company search by tax identification number (CUI)</strong> - Find Romanian companies using their Romanian tax numbers</li>
<li><strong>Company search by Ordine Rc Number (Romanian company registration number)</strong> - Find Romanian companies using their national Romanian registration numbers</li>
<li><strong>Certified Trade Register Extract</strong> - Official &amp; certified PDF extract from ONRC containing information about the company (~2 minutes retrieval time)</li>
<li><strong><code>companyProfile</code></strong> - Access comprehensive company information including status, legal form, address, legal representatives, shareholders, company establishments and much more</li>
</ul>
</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 45, 2025: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-45-2025</link>
            <guid>https://docs.topograph.co/changelog#week-45-2025</guid>
            <pubDate>Mon, 10 Nov 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇩🇪 Germany</h3>
<ul>
<li><strong>Improved speed and robustness</strong> - Enhanced performance and reliability across all German company data operations, including company profile retrieval, document listing, and document downloads.</li>
</ul>
<h3>🇭🇺 Hungary</h3>
<ul>
<li><strong>Initial support for Hungary</strong> - We&#39;re excited to announce support for Hungarian companies with our integration of the Cégszolgálat (Hungarian company information register). Currently available features:<ul>
<li><strong>Company search by name</strong> - Find Hungarian companies using their registered business names</li>
<li><strong>Company search by registration number</strong> - Find Hungarian companies using Hungarian registration numbers</li>
<li><strong>Company search by tax number</strong> - Find Hungarian companies using their national Hungarian tax numbers</li>
<li><strong><code>companyProfile</code></strong> - Access comprehensive company information including status, legal form, address, legal representatives and share capital</li>
<li><strong>Trade Register Extract</strong> - Official PDF extract from Cégszolgálat containing information about the company (~2 minutes retrieval time)</li>
</ul>
</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 44, 2025: Countries, Platform]]></title>
            <link>https://docs.topograph.co/changelog#week-44-2025</link>
            <guid>https://docs.topograph.co/changelog#week-44-2025</guid>
            <pubDate>Mon, 03 Nov 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇸🇪 Sweden</h3>
<ul>
<li><strong>Initial support for Sweden</strong> - We&#39;re excited to announce support for Swedish companies with our integration of the Bolagsverket (Swedish Companies Registration Office) register! Currently available features:<ul>
<li><strong>Company search by name</strong> - Find Swedish companies using their registered business names</li>
<li><strong>Company search by registration number</strong> - Direct lookup using Swedish registration numbers</li>
<li><strong><code>companyProfile</code></strong> - Access comprehensive company information including status, legal form, address, legal representatives and other key persons</li>
<li><strong><code>availableDocuments</code></strong> - Access annual reports from Swedish companies when available (ZIP format)</li>
</ul>
</li>
</ul>
<h2>Platform</h2>
<ul>
<li>Improved stability in Documents section.</li>
<li>When a document is available both in a PDF and non-PDF format, when clicking on the PDF download icon then the PDF version of the file opens correctly.</li>
<li>Removed last year financial statement shortcut support as part of the document ID cleanup.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 43, 2025: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-43-2025</link>
            <guid>https://docs.topograph.co/changelog#week-43-2025</guid>
            <pubDate>Mon, 27 Oct 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇨🇾 Cyprus</h3>
<ul>
<li><strong>Initial support for Cyprus</strong> - We&#39;re excited to announce support for Cypriot companies with our integration of the DRCOR (Department of Registrar of Companies and Official Receiver) register! Currently available features:<ul>
<li><strong>Company search by name</strong> - Find Cypriot companies using their registered business names</li>
<li><strong>Company search by registration number</strong> - Direct lookup using Cyprus registration numbers with Greek prefixes (ΗΕ, ΕΕ, ΑΕ, Σ)</li>
<li><strong><code>companyProfile</code></strong> - Access comprehensive company information including status, legal form, address, and legal representatives</li>
<li><strong>Trade Register Extract (Study File)</strong> - Official PDF extract from DRCOR containing complete company registration history, officers, shareholders, filings, and status since incorporation (~2 minutes retrieval time)</li>
<li><strong>Multiple company types</strong> - Support for Private Limited Companies, Overseas Companies, Sole Traders, and Partnerships</li>
</ul>
</li>
</ul>
<p>For detailed information about Cyprus&#39;s unique identifier system with Greek prefixes, see our <a href="/essentials/cyprus">Cyprus documentation</a>.</p>
<h3>Estonia 🇪🇪</h3>
<ul>
<li>You can now <strong>search for available documents</strong> !</li>
<li><strong>Trade Register Extract</strong> - Official PDF extract from RIK containing complete and extensive company information</li>
<li><strong>Articles of Association</strong> (PDF)</li>
<li><strong>Annual reports</strong> (PDF or XBRL)</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 42, 2025: Countries, Platform]]></title>
            <link>https://docs.topograph.co/changelog#week-42-2025</link>
            <guid>https://docs.topograph.co/changelog#week-42-2025</guid>
            <pubDate>Mon, 20 Oct 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇨🇭 Switzerland</h3>
<p><strong>Enhanced Integration for Speed and Reliability</strong></p>
<p>We&#39;ve completely reworked our integration with the Swiss business register to deliver significantly improved performance and reliability. The new implementation ensures faster data retrieval and more robust handling of edge cases.</p>
<p>Additionally, the <strong>certificate of incorporation</strong> is now available for Swiss companies, providing access to the official founding document.</p>
<h2>Platform</h2>
<ul>
<li>Improved data management in web interface (request status indicator and data refresh)</li>
<li>Fixed display of the map when a
company has registered headquarters</li>
<li>Fixed data points selection when
changing countries, i.e : if &quot;available documents&quot; is available in France but
not in Estonia, then when switching to Estonia the datapoint should not be
checked and disappear from the credit count.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 41, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-41-2025</link>
            <guid>https://docs.topograph.co/changelog#week-41-2025</guid>
            <pubDate>Mon, 13 Oct 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<h3>🔄 Request Metadata Field</h3>
<p>We&#39;ve introduced a new <code>metadata</code> field on the <code>/company</code> endpoint that enables stateless request tracking without requiring local state management.</p>
<p><strong>Key Features:</strong></p>
<ul>
<li><strong>Pass custom metadata</strong> - Include any JSON-serializable data (object, string, number) with your company data requests</li>
<li><strong>Automatic passthrough</strong> - Your metadata is returned with polling responses and webhook notifications</li>
<li><strong>Stateless tracking</strong> - Associate requests with your internal systems without maintaining a local state database</li>
<li><strong>Perfect for webhooks</strong> - Correlate asynchronous webhook callbacks with the original request context</li>
</ul>
<h2>Countries</h2>
<h3>🇩🇪 Germany</h3>
<p><strong>Improved Document Download Robustness</strong></p>
<p>We&#39;ve enhanced the reliability of document downloads for German companies. Documents are now automatically preloaded in the background when you list available documents, ensuring they&#39;re ready when you need them.</p>
<p>  While we&#39;ve significantly improved reliability, the Unternehmensregister and
  Handelsregister can be quite unstable at times, so we cannot guarantee 100%
  success rates for document downloads. Our system now handles these
  instabilities gracefully with automatic retries.</p>
<h3>🇪🇸 Spain</h3>
<p><strong>Enhanced Document Operations</strong></p>
<p>We&#39;ve significantly improved the speed and reliability of document operations for Spanish companies.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 40, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-40-2025</link>
            <guid>https://docs.topograph.co/changelog#week-40-2025</guid>
            <pubDate>Mon, 06 Oct 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<h3>🔔 Company Monitoring (Beta)</h3>
<p>  <strong>New Feature: Real-time Company Monitoring with AI-powered Change Detection</strong></p>
<p>We&#39;re excited to introduce Company Monitoring, a powerful new system that tracks changes in company data and sends real-time webhook notifications when important updates occur.</p>
<p><strong>Key Features:</strong></p>
<ul>
<li><strong>Automated daily checks</strong> - Monitors run every 24 hours to detect changes in company profiles, ownership, and legal status</li>
<li><strong>AI-powered change detection</strong> - Intelligently identifies meaningful changes while filtering out noise</li>
<li><strong>Smart categorization</strong> - Changes are classified into 7 categories: <code>status</code>, <code>address</code>, <code>ownership</code>, <code>financial</code>, <code>legalRepresentatives</code>, <code>other</code>, and <code>disappeared</code></li>
<li><strong>Real-time webhooks</strong> - Instant notifications via webhook when changes are detected</li>
<li><strong>Automatic deactivation</strong> - Monitors automatically stop when companies cease to exist, with a final notification</li>
</ul>
<p><strong>Supported Countries:</strong></p>
<p>Currently available in 16+ countries: 🇦🇹 AT, 🇧🇪 BE, 🇨🇭 CH, 🇨🇿 CZ, 🇩🇪 DE, 🇩🇰 DK, 🇪🇸 ES, 🇫🇮 FI, 🇫🇷 FR, 🇬🇧 GB, 🇮🇪 IE, 🇲🇹 MT, 🇳🇱 NL, 🇳🇴 NO, 🇵🇱 PL, 🇵🇹 PT</p>
<p>  This feature is currently in beta. We&#39;re actively collecting feedback to
  refine change detection accuracy and expand country coverage. Contact
  <a href="mailto:support@topograph.co">support@topograph.co</a> to participate in the beta program.</p>
<p>For detailed API documentation and integration guide, see our <a href="/essentials/monitoring">Company Monitoring documentation</a>.</p>
<h3>📄 Document Metadata Simplification</h3>
<p>We&#39;ve simplified document metadata fields for better consistency and clarity:</p>
<ul>
<li><strong>Removed <code>nameInEnglish</code> and <code>descriptionInEnglish</code> fields</strong> - These redundant fields have been removed from the API response</li>
<li><strong>Standardized <code>name</code> field</strong> - Now always contains the original document name in the local language of the country where it was issued</li>
<li><strong>Standardized <code>description</code> field</strong> - Now always contains the document description in English</li>
</ul>
<p>This change provides a more predictable API structure and eliminates confusion about which field to use for document identification and description.</p>
<h2>Countries</h2>
<h3>🇩🇪 Germany</h3>
<p><strong>Intelligent ID-Based Search Enhancements</strong></p>
<p>We&#39;ve significantly improved the German company search with intelligent ID parsing and prioritization:</p>
<ul>
<li><p><strong>ID Extraction</strong>: We parse queries to extract and validate German company ID components (bureau/court, register type like HRB/HRA, registration number) from natural language queries. Includes full validation against all 154 known bureaus and 6 register types, with fuzzy matching for variations (e.g., &quot;Munchen&quot; matches &quot;München&quot;).</p>
</li>
<li><p><strong>Full ID Precision</strong>: When all three ID components are detected and yield an exact match, returns a single precise result without name search fallback.</p>
</li>
<li><p><strong>Partial ID Prioritization</strong>: For queries with 1-2 ID components, partial ID matches are ranked first, followed by name search results (deduplicated by ID).</p>
</li>
<li><p><strong>Robust Fallback</strong>: If full ID search fails or query lacks ID components, seamlessly falls back to comprehensive name search.</p>
</li>
</ul>
<p>This enhancement provides precision for ID-based lookups while maintaining broad discoverability for general searches. Supports queries like &quot;München HRB 228960&quot; (exact single result) or &quot;HRB 12345&quot; (prioritized partial matches).</p>
<h3>🇵🇱 Poland</h3>
<p><strong>Ultimate Beneficial Owners Support</strong></p>
<p>We&#39;ve added comprehensive UBO (Ultimate Beneficial Owner) support for Polish companies through integration with CRBR (Centralny Rejestr Beneficjentów Rzeczywistych):</p>
<ul>
<li><strong><code>ultimateBeneficialOwners</code></strong> - Access beneficial ownership information from Poland&#39;s official UBO register for both KRS and NIP companies</li>
<li><strong><code>ubo_extract</code> document</strong> - Official PDF extract from CRBR, conditionally available only when UBO data exists</li>
</ul>
<p><strong>Financial Documents Support</strong></p>
<p>Added support for retrieving financial statements for Polish companies with automatic XML-to-PDF conversion:</p>
<ul>
<li><strong>Automatic XML conversion</strong> - Financial documents in XML format (Ministry of Finance schema) are automatically converted to human-readable PDF format using the official Polish government visualization tool at <a href="https://e-sprawozdania.mf.gov.pl/ap/">e-sprawozdania.mf.gov.pl</a></li>
<li><strong>Dual format availability</strong> - Both the original XML and converted PDF are stored and accessible</li>
<li><strong>Seamless handling</strong> - Conversion happens transparently during document retrieval with graceful fallback to XML if conversion fails</li>
</ul>
<p>Note: Due to technical limitations of the Polish register portal, document format information is not available during listing and is only determined when documents are downloaded.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 39, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-39-2025</link>
            <guid>https://docs.topograph.co/changelog#week-39-2025</guid>
            <pubDate>Mon, 29 Sep 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<h3>📊 AI-Powered Financial Data Extraction (Beta)</h3>
<p>  <strong>Beta Feature: Structured Financial Data Extraction</strong></p>
<p>We&#39;re excited to introduce automatic extraction of structured financial data from financial statements using AI. This beta feature analyzes financial statement documents and extracts key financial metrics into a structured, machine-readable format.</p>
<p><strong>Key Features:</strong></p>
<ul>
<li><strong>Automatic extraction</strong> - No additional configuration needed; extraction happens automatically during document post-processing</li>
<li><strong>Comprehensive data capture</strong> - Extracts income statement items, balance sheet components, fiscal periods, and accounting metadata</li>
<li><strong>Multi-language support</strong> - Works with financial statements in various languages and formats</li>
<li><strong>Structured output</strong> - Financial data is returned in the <code>extractedData.financialData</code> field within financial statement documents</li>
</ul>
<p><strong>Extracted Data Includes:</strong></p>
<ul>
<li><p>Income statement: revenue, operating income, depreciation, net income</p>
</li>
<li><p>Balance sheet: assets (fixed/current), equity, liabilities (current/non-current)</p>
</li>
<li><p>Metadata: fiscal year dates, approval date, currency, accounting standard, statement type</p>
<p>This feature is currently in beta. The data model may evolve as we refine
extraction accuracy and expand coverage. We welcome your feedback to help
improve this feature.</p>
</li>
</ul>
<p>For detailed information about the data model and structure, see our <a href="/essentials/financial-data-extraction">Financial Data Extraction documentation</a>.</p>
<h3>📄 Automatic PDF Document Conversion</h3>
<p>We&#39;ve introduced automatic conversion of non-PDF documents to PDF format for easier handling and viewing. Supported input formats include:</p>
<p><strong>Images:</strong> JPG, JPEG, PNG, TIFF/TIF <strong>Tabular:</strong> CSV, XLS, XLSX <strong>Documents:</strong> DOC, DOCX, RTF, TXT, XPS, PPT, PPTX</p>
<p><strong>How it works:</strong> When a raw document is retrieved, our system automatically converts it to PDF in the background. The converted PDF typically becomes available approximately 20 seconds after the original raw document is obtained. Both the original format and the converted PDF are available for download in the frontend interface.</p>
<h3>🎨 Improved Document Download Interface</h3>
<p>The frontend document download experience has been completely redesigned with significant UX improvements:</p>
<ul>
<li><p><strong>Enhanced metadata display</strong> - Richer, more organized presentation of document details including descriptions, dates, and periods</p>
</li>
<li><p><strong>Seamless raw + PDF handling</strong> - Clear visual distinction between original documents and their PDF conversions with dedicated download actions for each</p>
</li>
<li><p><strong>Improved row interactions</strong> - Intuitive click-to-request functionality for pending documents with visual feedback</p>
</li>
<li><p><strong>Better visual hierarchy</strong> - Cleaner layout with icon-only type column and expanded space for document names and metadata</p>
<img src="https://mintcdn.com/semaphore/LMnLGVtYyLfyM4k7/images/available-documents-screenshot.png?fit=max&auto=format&n=LMnLGVtYyLfyM4k7&q=85&s=12f477954eeb4802891a6050cd2d7406" alt="Improved documents table with enhanced metadata and PDF conversion support" width="1838" height="1412" data-path="images/available-documents-screenshot.png" /></li>
</ul>
<h3>⚠️ Deprecations</h3>
<ul>
<li><strong>Removed <code>jobs_in_progress</code> field</strong> - This legacy internal field has been removed from API responses for security and clarity</li>
<li><strong>Deprecated <code>main_article_of_association</code> smart document mapping</strong> - We&#39;ve removed the automatic mapping of document IDs to <code>main_article_of_association</code>. We&#39;re revisiting this feature with an improved approach and welcome feedback on your document mapping needs</li>
<li><strong>Removed <code>isConsolidated</code> field</strong> - This field has been removed from the API response as we were unable to provide consistently accurate information across different jurisdictions and document types. We plan to revisit this feature in future updates with improved data validation and source-specific accuracy indicators.</li>
</ul>
<h3>🔒 API Response Improvements</h3>
<ul>
<li><strong>Cleaner error handling</strong> - The <code>errors</code> field is now optional and only appears when errors actually occur, reducing response clutter</li>
</ul>
<h2>Countries</h2>
<h3>🇩🇪 Germany</h3>
<ul>
<li><strong>Major rewrite for speed and robustness</strong> - We rebuilt the Germany integration to significantly improve performance and reliability across all flows: company data retrieval, document listing, and document downloads.</li>
</ul>
<h3>🇫🇮 Finland</h3>
<ul>
<li><strong>Initial support for Finland</strong> - We&#39;re excited to announce support for Finnish companies with our integration of the Finnish business registers! Currently available features:<ul>
<li><strong>Company search by name</strong> - Find Finnish companies using their registered business names</li>
<li><strong>Company search by registration number</strong> - Direct lookup using Finnish company registration numbers</li>
<li><strong><code>companyProfile</code></strong> - Access comprehensive company information from Finnish business registers</li>
<li><strong>Trade register extract support</strong> - Full document retrieval functionality for Finnish companies</li>
<li><strong>Article of Association support</strong> - Access to company articles of association documents</li>
</ul>
</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 38, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-38-2025</link>
            <guid>https://docs.topograph.co/changelog#week-38-2025</guid>
            <pubDate>Mon, 22 Sep 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<h3>📄 Automatic PDF Document Conversion</h3>
<p>We&#39;ve introduced automatic conversion of non-PDF documents to PDF format for easier handling and viewing. Supported input formats include:</p>
<p><strong>Images:</strong> JPG, JPEG, PNG, TIFF/TIF <strong>Tabular:</strong> CSV, XLS, XLSX <strong>Documents:</strong> DOC, DOCX, RTF, TXT, XPS, PPT, PPTX</p>
<p><strong>How it works:</strong> When a raw document is retrieved, our system automatically converts it to PDF in the background. The converted PDF typically becomes available approximately 20 seconds after the original raw document is obtained. Both the original format and the converted PDF are available for download in the frontend interface.</p>
<h3>🎨 Massively Improved Document Download Interface</h3>
<p>The frontend document download experience has been completely redesigned with significant UX improvements:</p>
<ul>
<li><p><strong>Enhanced metadata display</strong> - Richer, more organized presentation of document details including descriptions, dates, and periods</p>
</li>
<li><p><strong>Seamless raw + PDF handling</strong> - Clear visual distinction between original documents and their PDF conversions with dedicated download actions for each</p>
</li>
<li><p><strong>Improved row interactions</strong> - Intuitive click-to-request functionality for pending documents with visual feedback</p>
</li>
<li><p><strong>Better visual hierarchy</strong> - Cleaner layout with icon-only type column and expanded space for document names and metadata</p>
<img src="https://mintcdn.com/semaphore/LMnLGVtYyLfyM4k7/images/available-documents-screenshot.png?fit=max&auto=format&n=LMnLGVtYyLfyM4k7&q=85&s=12f477954eeb4802891a6050cd2d7406" alt="Improved documents table with enhanced metadata and PDF conversion support" width="1838" height="1412" data-path="images/available-documents-screenshot.png" /></li>
</ul>
<h3>⚠️ Field Updates</h3>
<ul>
<li><strong>Removed <code>isConsolidated</code> field</strong> - This field has been removed from the API response as we were unable to provide consistently accurate information across different jurisdictions and document types. We plan to revisit this feature in future updates with improved data validation and source-specific accuracy indicators.</li>
</ul>
<h2>Countries</h2>
<h3>🇮🇹 Italy</h3>
<ul>
<li><strong>Added support for closed/inactive companies</strong> - Implemented fallback mechanism to retrieve data for closed/inactive companies not available in InfoCamere blocchi</li>
<li><strong>Enhanced shareholder data structure</strong> - Fixed missing <code>id</code> and <code>countryCode</code> fields for company shareholders to ensure consistent data structure</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 37, 2025: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-37-2025</link>
            <guid>https://docs.topograph.co/changelog#week-37-2025</guid>
            <pubDate>Mon, 15 Sep 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇫🇷 France</h3>
<ul>
<li><strong>Improved KBis retrieval</strong> - We&#39;ve made K-Bis acquisition both faster and more resilient</li>
</ul>
<h3>🇮🇪 Ireland</h3>
<ul>
<li><strong>Enhanced search robustness</strong> - Improved error handling for company searches, ensuring more reliable search results when companies are not found</li>
<li><strong>Better not found company handling</strong> - Search operations now return empty results instead of errors when companies don&#39;t exist in the CRO register, while company profile requests properly throw not found exceptions</li>
<li><strong>Improved address parsing</strong> - Enhanced address geocoding accuracy by including Eircode (Irish postal codes) in the address parsing process</li>
</ul>
<h3>🇮🇹 Italy</h3>
<ul>
<li><strong>Fixed financials retrieval bug</strong>. We fixed the bug that prevented the retrieval of financial statements for Italian companies.</li>
</ul>
<h3>🇨🇿 Czechia</h3>
<ul>
<li><strong>Initial support for Czechia</strong> - We&#39;re excited to announce support for Czech companies with our integration of the Czech business registers (ARES &amp; RZP)! Currently available features:<ul>
<li><strong>Company search by name</strong> - Find Czech companies using their registered business names</li>
<li><strong>Company search by registration number</strong> - Direct lookup using Czech company registration numbers</li>
<li><strong><code>companyProfile</code></strong> - Access comprehensive company information from both ARES (Administrative Register of Economic Subjects) and RZP (Trade Register) registers</li>
<li><strong>Trade register extract support</strong> - Full document retrieval functionality for Czech companies from the RZP register</li>
</ul>
</li>
</ul>
<h3>🇦🇹 Austria</h3>
<ul>
<li><strong>Added trade register extract support</strong> - Full document retrieval functionality for Austrian companies from the Firmenbuch register</li>
</ul>
<h3>🇵🇱 Poland</h3>
<ul>
<li><strong>Restored and enhanced Poland support</strong> - Complete rewrite of Poland integration with improved data mapping and document retrieval</li>
<li><strong>Dual register support</strong> - Full integration with both KRS (National Court Register) and CEIDG (Central Registration of Business Activity) registers</li>
<li><strong>Enhanced document retrieval</strong> - Now supports multiple document types:<ul>
<li>Trade register extracts (current) for both KRS and CEIDG companies</li>
<li>Historical trade register extracts (full) for KRS companies</li>
<li>Representatives/proxy documents for CEIDG sole proprietorships</li>
</ul>
</li>
<li><strong>Improved data mapping</strong> - Better handling of company statuses, legal forms, and registration numbers with proper prefix support (krs- and nip-)</li>
<li><strong>Fixed PDF document downloads</strong> - Resolved issues with document retrieval returning JSON instead of PDF files</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 36, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-36-2025</link>
            <guid>https://docs.topograph.co/changelog#week-36-2025</guid>
            <pubDate>Mon, 08 Sep 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<h3>🔍 Enhanced Search Error Management</h3>
<ul>
<li><strong>Improved error handling and user guidance</strong> - Search operations now provide clearer, more actionable error messages when queries fail due to user input issues</li>
<li><strong>Better API documentation</strong> - OpenAPI specifications now include comprehensive error response examples for both 400 (user errors) and 500 (server errors) status codes</li>
<li><strong>Consistent error format</strong> - Streamlined error response structure with unified guidance messages</li>
</ul>
<h3>📊 Shareholder Capital Fields Restructuring</h3>
<ul>
<li><strong>Replaced <code>shareNominalPrice</code> with two distinct fields:</strong><ul>
<li><code>nominalCapitalHeld</code> - Total face value or par value of all shares owned by the shareholder</li>
<li><code>paidInAmount</code> - Actual amount paid by the shareholder, including any share premium</li>
</ul>
</li>
<li><strong>Key improvements:</strong><ul>
<li>Better support for complex shareholding structures with multiple share classes</li>
<li>Clear distinction between legal capital (nominal) and actual investment (paid-in)</li>
<li>More accurate representation of shareholder contributions</li>
<li>Alignment with international accounting standards</li>
</ul>
</li>
</ul>
<h3>📅 Enhanced Company Date Tracking</h3>
<ul>
<li><strong>Introduced <code>incorporationDate</code> field</strong> - Now clearly distinguishes between when a company was legally incorporated/founded versus when it was registered with trade authorities</li>
</ul>
<h2>Countries</h2>
<h3>🇲🇹 Malta</h3>
<ul>
<li><strong>Much improved robustness</strong> - Significantly enhanced system stability and reliability for Malta company data retrieval with better error handling and recovery mechanisms.</li>
<li><strong>Restored document retrieval</strong> - Fixed document access functionality that was experiencing issues, ensuring reliable document retrieval for Maltese companies.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 31, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-31-2025</link>
            <guid>https://docs.topograph.co/changelog#week-31-2025</guid>
            <pubDate>Mon, 04 Aug 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<ul>
<li><strong>Fixed webhook delivery issues</strong> - Resolved an issue affecting webhook delivery for asynchronous job completions and failed jobs. Webhooks are now reliably sent for all job status updates, ensuring dependable real-time notifications.</li>
</ul>
<h2>Countries</h2>
<h3>🇨🇳 China</h3>
<ul>
<li><strong>Enhanced robustness and improved identifier standardization</strong> - Strengthened China implementation with better error handling and system stability. Standardized company identification around the <strong>Unified Social Credit Code</strong> as the single, authoritative 18-character alphanumeric identifier for all Chinese companies and organizations, replacing previous inconsistent identifier formats.</li>
</ul>
<h3>🇲🇹 Malta</h3>
<ul>
<li><strong>Improved data accuracy and performance</strong> - Enhanced Malta company data retrieval with more reliable parsing and faster processing times.</li>
</ul>
<h3>🇩🇰 Denmark</h3>
<ul>
<li><strong>Financial statements and trade register extract support</strong> - Enhanced Denmark implementation with full document retrieval capabilities. Added support for financial statements (annual reports) and official CVR trade register extracts, completing our comprehensive Danish business register integration.</li>
</ul>
<h3>🇪🇸 Spain</h3>
<ul>
<li><strong>Enhanced robustness</strong> - Improved stability and reliability of Spanish company data retrieval with better error handling and system resilience.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 30, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-30-2025</link>
            <guid>https://docs.topograph.co/changelog#week-30-2025</guid>
            <pubDate>Mon, 28 Jul 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<ul>
<li>Improved document download experience in the customer portal, ensuring faster and more reliable access to retrieved files.</li>
</ul>
<h2>Countries</h2>
<h3>🇫🇷 France</h3>
<ul>
<li>Significantly improved the speed and reliability of Ultimate Beneficial Owner (UBO) data parsing for French companies.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 28, 2025: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-28-2025</link>
            <guid>https://docs.topograph.co/changelog#week-28-2025</guid>
            <pubDate>Mon, 14 Jul 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇩🇰 Denmark</h3>
<p><strong>Complete Danish Business register Support</strong></p>
<p>We&#39;re excited to announce support for Danish companies through our integration with the Danish Central Business Register (CVR)! This implementation features a sophisticated hybrid approach combining formal data mapping with AI-powered enrichment.</p>
<p><strong>Available Data Points:</strong></p>
<ul>
<li><strong><code>companyProfile</code></strong> - Complete company information with legal representatives, shareholders, establishments, and other key personnel from the CVR register</li>
<li><strong><code>ultimateBeneficialOwners</code></strong> - Dedicated extraction of beneficial owners (UBOs) separate from legal shareholders, providing enhanced ownership transparency</li>
</ul>
<p><strong>Technical Implementation:</strong></p>
<ul>
<li><strong>Direct CVR Integration</strong> - Real-time access to Denmark&#39;s authoritative business database</li>
</ul>
<p><strong>Coming soon</strong></p>
<ul>
<li><em><strong>Documents support</strong></em></li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 27, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-27-2025</link>
            <guid>https://docs.topograph.co/changelog#week-27-2025</guid>
            <pubDate>Mon, 07 Jul 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<h3>💳 New Billing Dashboard &amp; Analytics (Admin-only)</h3>
<p>Your organisation admins now have access to a brand-new billing section that makes it easier than ever to understand how credits are being used.</p>
<ul>
<li><strong>Flexible global filters</strong> – Pick any date range (or quick presets) and choose exactly which users – plus the API – you want to analyse.</li>
<li><strong>Usage analytics</strong> – Interactive bar chart that flips between daily, weekly, or monthly views and can be split by individual user or total.</li>
<li><strong>Per-request cost tracking</strong> – A detailed table shows the exact credit cost for every request, including ones that incurred no charge.</li>
<li><strong>CSV export</strong> – Download the full, filtered history (not just the current page) for deeper analysis in your favourite BI tool.</li>
</ul>
<p>Head over to <em>Billing → Dashboard</em> (admins only) to explore the new insights.</p>
  <img src="https://mintcdn.com/semaphore/KkXf_mDSDAj2VADj/images/billing-dashboard-overview.png?fit=max&auto=format&n=KkXf_mDSDAj2VADj&q=85&s=7fb79b5f86815ea623e2b3959ceb3a4e" alt="Billing dashboard – usage analytics" width="2418" height="1640" data-path="images/billing-dashboard-overview.png" />

<div className="mt-2" />

  <img src="https://mintcdn.com/semaphore/KkXf_mDSDAj2VADj/images/billing-dashboard-history.png?fit=max&auto=format&n=KkXf_mDSDAj2VADj&q=85&s=7ea69030cc8fe4e62ed83c730d5834c1" alt="Billing dashboard – request history" width="2434" height="1624" data-path="images/billing-dashboard-history.png" />

<h3>🔧 Field Naming Standardization</h3>
<ul>
<li><strong>Renamed <code>englishName</code> to <code>englishTranslation</code></strong> - Updated field naming to align with our API naming strategy, maintaining consistency with other translated fields like <code>legalForm</code>. This change ensures a more coherent and predictable API structure across all data points.</li>
</ul>
<h2>Countries</h2>
<h3>🇮🇹 Italy</h3>
<ul>
<li><strong>Enhanced search validation</strong> - Search queries must now be at least 2 characters long and cannot be overly broad. Clear error messages guide users when queries are too short or return too many results</li>
<li><strong>Improved legal form parsing</strong> - Enhanced accuracy and standardization of 70+ Italian legal forms for better company classification. See complete list in our <a href="/essentials/italy#legal-forms">Italy documentation</a></li>
<li><strong>Added establishments support</strong> - Integrated establishment data with comprehensive location and activity information, including active status indicators</li>
<li><strong>Enhanced shareholder parsing</strong> - Significant improvements to shareholder data extraction, now enabling full support for <code>graph</code> ownership tree analysis</li>
<li><strong>Added search by VAT and tax code</strong> - New search functionality allowing company lookup using Italian VAT numbers (Partita IVA) or tax codes (Codice Fiscale)</li>
</ul>
<h3>🇬🇧 United Kingdom</h3>
<ul>
<li><strong>Improved legal form and role mapping</strong> - Enhanced accuracy and standardization of 40+ legal forms and 60+ officer roles with direct mapping to Topograph standards. See complete lists in our <a href="/essentials/uk#legal-forms">UK documentation</a></li>
<li><strong>Standardized company identifiers</strong> - Cleaned up identifier structure with consistent naming (<code>companiesHouseNumber</code> and <code>jurisdiction</code>)</li>
<li><strong>Guaranteed SIC codes</strong> - Direct SIC codes from Companies House with AI mapping to NACE and ISIC international standards</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 26, 2025: ✨ Week 26 Highlights, Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-26-2025</link>
            <guid>https://docs.topograph.co/changelog#week-26-2025</guid>
            <pubDate>Mon, 30 Jun 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>✨ Week 26 Highlights</h2>
<ul>
<li><strong>🇮🇪 Ireland Launch</strong> - New support for Irish entities with CRO register integration for company search and profiles</li>
<li><strong>🚀 New Topograph Portal</strong> - Deployed a heavily improved version of our customer portal with enhanced performance, better async handling, and modern design</li>
<li><strong>🔧 Enhanced Activity Code Mapping</strong> - Improved standardization and accuracy of business activity codes across France, Belgium, and Switzerland</li>
</ul>
<h2>Platform</h2>
<h3>🚀 Portal Redesign (app.topograph.co)</h3>
<p>We&#39;ve completely redesigned and rebuilt our customer portal from the ground up, delivering a significantly improved user experience with modern architecture and enhanced capabilities.</p>
  <img src="https://mintcdn.com/semaphore/KkXf_mDSDAj2VADj/images/screenshot-2025-06-26-17-01-34.png?fit=max&auto=format&n=KkXf_mDSDAj2VADj&q=85&s=c97701cd8b219e9dc230a32f702ecb4f" alt="Redesigned Topograph customer portal" width="3024" height="1646" data-path="images/screenshot-2025-06-26-17-01-34.png" />

<p><strong>Key Improvements:</strong></p>
<ul>
<li><strong>Enhanced Performance</strong> - Faster navigation and reduced loading times across all portal features</li>
<li><strong>Granular Data Point Control</strong> - Precise selection and management of requested data points for optimized queries</li>
<li><strong>First-Class Async Support</strong> - Built-in asynchronous request handling with real-time progress tracking and status updates</li>
<li><strong>Modern Design</strong> - Refreshed interface with improved usability and visual hierarchy</li>
<li><strong>New Data Points Integration</strong> - Native support for Establishments and Other Key People with dedicated UI components</li>
</ul>
<p><strong>Coming Soon:</strong></p>
<ul>
<li><strong>Usage Tracking</strong> - Comprehensive analytics and monitoring of API consumption</li>
<li><strong>Request History</strong> - Detailed audit trail of all API requests and responses</li>
<li><strong>Interactive Ownership Graph</strong> - Visual representation of company ownership structures powered by our enhanced graph engine</li>
</ul>
<h2>Countries</h2>
<h3>🇮🇪 Ireland</h3>
<ul>
<li><strong>Initial support for Ireland</strong> - We&#39;re excited to announce support for Irish companies with our integration of the Companies Registration Office (CRO)! Currently available features:<ul>
<li><strong>Company search by name</strong> - Find Irish companies using their registered business names</li>
<li><strong>Company search by registration number</strong> - Direct lookup using CRO registration numbers</li>
<li><strong><code>companyProfile</code></strong> - Access comprehensive company information from the Companies Registration Office</li>
<li><strong>Document support coming soon</strong> - Full document retrieval functionality will be available in upcoming releases</li>
</ul>
</li>
</ul>
<h3>🇫🇷 France</h3>
<ul>
<li><strong>Fixed activity code mapping</strong> - Resolved issues with business activity code standardization and improved accuracy of sector classification for French companies</li>
</ul>
<h3>🇧🇪 Belgium</h3>
<ul>
<li><strong>Fixed activity code mapping</strong> - Enhanced processing and standardization of Belgian NACE codes, ensuring better alignment with international classification standards</li>
</ul>
<h3>🇨🇭 Switzerland</h3>
<ul>
<li><strong>Fixed activity code mapping</strong> - Improved mapping of Swiss business activity codes (NOGA) to standardized formats, providing more accurate industry classification</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 25, 2025: ✨ Week 25 Highlights, Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-25-2025</link>
            <guid>https://docs.topograph.co/changelog#week-25-2025</guid>
            <pubDate>Mon, 23 Jun 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>✨ Week 25 Highlights</h2>
<ul>
<li><strong>🎯 Enhanced Ownership Graph Analysis</strong> - Improved UBO identification with dual calculation methods and better data visualization</li>
<li><strong>🇩🇪 Intelligent German Shareholder Computation</strong> - Multi-source extraction strategy with automatic fallbacks</li>
<li><strong>🇵🇱 Poland Launch</strong> - Full support for Polish entities with CEIDG and KRS register integration</li>
<li><strong>🇦🇹 Austria Launch</strong> - We&#39;re excited to announce support for Austrian companies, financial statements and company informations are available.</li>
<li><strong>🇱🇺 Luxembourg Trade register Extract</strong> - New comprehensive document access (up to 1 hour retrieval time)</li>
</ul>
<h2>Platform</h2>
<h3>🎯 Enhanced Ownership Graph Analysis</h3>
<p>We&#39;ve launched improved ownership graph analysis with better UBO identification and cleaner data presentation, tested with German companies and providing cross-checking capabilities against Transparenzregister data.</p>
<p><strong>Key Improvements:</strong></p>
<ul>
<li><strong>Dual calculation methods</strong> - Accumulation and domination approaches with 25% ownership threshold</li>
<li><strong>Corporate UBO flagging</strong> when ownership chains end at companies rather than individuals</li>
<li><strong>Nodes and edges structure</strong> for clearer ownership visualization with cross-border support</li>
<li><strong>Better error handling</strong> with partial results, circular ownership detection, and entity deduplication</li>
</ul>
<h2>Countries</h2>
<h3>🇩🇪 Germany</h3>
<p><strong>Enhanced Multi-Source Shareholder Data Extraction</strong></p>
<ul>
<li><strong>Three-source strategy</strong> - Gesellschafterliste extraction, trade register analysis, and financial statement analysis <em>(NEW)</em></li>
<li><strong>Multi-source validation</strong> combines results from different document types for better accuracy</li>
<li><strong>Transparenzregister cross-checking</strong> and automatic fallbacks when primary data sources are unavailable</li>
<li><strong>Improved Handelsregister fallback</strong> for document listing and retrieval with exponential backoff retry logic</li>
</ul>
<h3>🇵🇱 Poland</h3>
<p><strong>Comprehensive Polish Business register Support</strong></p>
<ul>
<li><strong>Dual register coverage</strong> - CEIDG (individual businesses) and KRS (companies) with smart ID prefixes</li>
<li><strong>Complete data points</strong> - <code>companyProfile</code> and <code>availableDocuments</code> tailored to entity type</li>
<li><strong>Document support</strong> - Trade register extract for both registers, historical extracts for KRS entities</li>
</ul>
<h3>🇪🇸 Spain</h3>
<ul>
<li><strong>Fixed document retrieval and listing</strong> - Resolved deployment issue affecting Spanish document access</li>
<li><strong>Improved parsing of activities</strong> - Enhanced extraction and processing for better accuracy</li>
</ul>
<h3>🇮🇹 Italy</h3>
<ul>
<li><strong>Improved parsing of activities</strong> - Enhanced extraction and processing for better accuracy</li>
</ul>
<h3>🇫🇷 France</h3>
<ul>
<li><strong>Fixed Ultimate Beneficial Owner retrieval</strong> - Resolved UBO data extraction issues for reliable beneficial ownership information</li>
</ul>
<h3>🇲🇹 Malta</h3>
<ul>
<li><strong>Switched companyProfile to async process</strong> - Automatic retry mechanism to overcome register instability</li>
</ul>
<h3>🇵🇹 Portugal</h3>
<ul>
<li><strong>Improved shareholder parsing</strong> - Enhanced extraction and processing of shareholder data</li>
</ul>
<h3>🇱🇺 Luxembourg</h3>
<ul>
<li><strong>Added trade register extract support</strong> - Comprehensive functionality for Luxembourg companies <em>(Note: May take up to one hour due to register processing time)</em></li>
</ul>
<h3>🇦🇹 Austria</h3>
<ul>
<li><strong><code>companyProfile</code></strong> - Access comprehensive company information and legal representatives from the Austrian Firmenbuch</li>
<li><strong><code>availableDocuments</code></strong> - Document categorization for financial statements and other documents</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 24, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-24-2025</link>
            <guid>https://docs.topograph.co/changelog#week-24-2025</guid>
            <pubDate>Mon, 16 Jun 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<ul>
<li><strong>Renamed mostCompleteStatus</strong>: The mostCompleteStatus document category has been renamed to mostCompleteArticleOfAssociation to better align with our naming conventions.</li>
</ul>
<h2>Countries</h2>
<h3>🇳🇱 Netherlands</h3>
<ul>
<li><strong>Improved system reliability</strong> for Dutch company data retrieval, enhancing stability and reducing error rates.</li>
<li><strong>Fixed trade register extract ID consistency</strong> - Resolved an issue where document IDs would change when only the document was required, ensuring stable document references.</li>
</ul>
<h3>🇬🇧 United Kingdom</h3>
<ul>
<li><strong>Added establishments support</strong> - Integrated with the UK Companies House establishments endpoint to retrieve branch offices, subsidiaries, and other affiliated locations for UK companies.</li>
<li><strong>Many improvements</strong> - Enhanced documents metadata accuracy, fixed trade register extract listing issues, and improved overall system reliability for UK company data retrieval.</li>
</ul>
<h3>🇫🇷 France</h3>
<ul>
<li><strong>Fixed establishments data</strong> - Resolved establishment identification by adding SIRET as ID and corrected establishment names for improved accuracy and consistency.</li>
</ul>
<h3>🇳🇴 Norway</h3>
<ul>
<li><strong>Added establishment IDs</strong> - Enhanced establishments data by adding proper unique identifiers, improving data structure and referencing capabilities.</li>
</ul>
<h3>🇩🇪 Germany</h3>
<ul>
<li><strong>Fixed company status for cached requests</strong> - Resolved an issue where company status might be returned as unknown when retrieving stored company data, ensuring accurate status information.</li>
</ul>
<h3>🇵🇹 Portugal</h3>
<ul>
<li><strong>Restored document retrieval</strong> - Fixed document access functionality after adapting to changes in the Portuguese register&#39;s retrieval workflow, ensuring reliable document retrieval for Portuguese companies.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 23, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-23-2025</link>
            <guid>https://docs.topograph.co/changelog#week-23-2025</guid>
            <pubDate>Mon, 09 Jun 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<p>  <strong>Major Data Model Enhancements</strong></p>
<p>We are progressively rolling out these data model enhancements to our supported countries, depending on the availability of data in the currently connected registers. This means that not all enhancements may be available for every country immediately, but coverage will expand as register data allows.</p>
<ul>
<li><p><strong>Establishments</strong>  - Now you can retrieve all establishments associated with a company, including branch offices, subsidiaries, and other affiliated locations that operate under the parent company&#39;s legal identity. This helps you understand a company&#39;s physical presence and operational footprint.</p>
</li>
<li><p><strong>Other Key People</strong>  - Introducing a new data point to capture important company personnel beyond legal representatives. This includes board members, auditors, commissioners, and other significant roles. Unlike legal representatives who have binding authority, Other Key People provides visibility into the broader governance and oversight structure of a company.</p>
</li>
<li><p><strong>Phone Numbers</strong>  - Companies can now include multiple phone numbers in E.164 format (e.g., +33123456789), making it easier to establish contact through official channels.</p>
</li>
<li><p><strong>Website</strong>  - Retrieve the official company website URL directly from the API response, providing quick access to the company&#39;s online presence.</p>
</li>
<li><p><strong>Status Details (Beta)</strong>  - We&#39;re introducing <code>statusDetails</code>, which provides enriched information about company status changes, including closure reasons, liquidation details, and important dates. <strong>The data model for status details is highly likely to evolve</strong> as we gather feedback and adapt to the diversity of register data. As this feature is in beta, we&#39;re actively collecting feedback to refine the data structure and ensure it meets your needs.</p>
</li>
<li><p><strong>Topograph Standard Roles Revision</strong>  - The roles in Topograph Standard for legal representatives have been revised to cover a broader range of situations and to ensure there is no overlap with Other Key People. This provides clearer, more accurate role classification across jurisdictions.</p>
</li>
</ul>
<h2>Countries</h2>
<h3>🇳🇴 Norway</h3>
<ul>
<li><strong>Initial support for Norway</strong> - We&#39;re excited to announce support for Norwegian companies, with our integration of the Norwegian Business register (Brønnøysundregistrene)! Currently available data points:<ul>
<li><code>companyProfile</code> - Access comprehensive company information, legal representatives, other key people and establishments from the Norwegian Business register (Brønnøysundregistrene)</li>
<li>Official trade register extract - Access an official PDF extract providing comprehensive company information including all registered data, roles, and establishments. Available in English.</li>
</ul>
</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 22, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-22-2025</link>
            <guid>https://docs.topograph.co/changelog#week-22-2025</guid>
            <pubDate>Mon, 02 Jun 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<ul>
<li><strong>Extended data model to include establishment logic</strong>, enhancing our ability to capture and process subsidiary and branch office information across all supported countries.</li>
<li><strong>New values in Topograph Standard for roles</strong></li>
</ul>
<h2>Countries</h2>
<h3>🇫🇷 France</h3>
<ul>
<li><strong>Added establishments support</strong>, enabling retrieval of subsidiary and branch office information for French companies.</li>
<li><strong>Fixed UBO parsing</strong>, improving accuracy and reliability of Ultimate Beneficial Owner data extraction.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 21, 2025: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-21-2025</link>
            <guid>https://docs.topograph.co/changelog#week-21-2025</guid>
            <pubDate>Mon, 26 May 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇫🇷 France</h3>
<ul>
<li><strong>Fixed access to UBO extract</strong>, ensuring reliable retrieval of Ultimate Beneficial Owner information.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 16, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-16-2025</link>
            <guid>https://docs.topograph.co/changelog#week-16-2025</guid>
            <pubDate>Mon, 21 Apr 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<ul>
<li><strong>Enhanced financial statement metadata quality</strong> for availableDocuments, improving accuracy and consistency of document classification and information retrieval.</li>
</ul>
<h2>Countries</h2>
<h3>🇪🇸 Spain</h3>
<ul>
<li><strong>Improved document retrieval system</strong> with enhanced robustness and significantly faster processing times, ensuring more reliable access to Spanish company documents.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 15, 2025: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-15-2025</link>
            <guid>https://docs.topograph.co/changelog#week-15-2025</guid>
            <pubDate>Mon, 14 Apr 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇳🇱 Netherlands</h3>
<ul>
<li><strong>Fixed document retrieval and companyProfile</strong> to adapt to recent changes on the KVK website, restoring full functionality for Dutch company data access.</li>
</ul>
<h3>🇭🇰 Hong Kong</h3>
<ul>
<li><strong>Restored <code>companyProfile</code> and <code>registerExtract</code> functionality</strong> and significantly improved system robustness for Hong Kong data retrieval.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 14, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-14-2025</link>
            <guid>https://docs.topograph.co/changelog#week-14-2025</guid>
            <pubDate>Mon, 07 Apr 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<p>  <strong>Key Feature Release</strong></p>
<ul>
<li><p><strong>Company Detention Tree (Beta)</strong>  - Introducing <code>graph</code>, a new datapoint that allows you to retrieve the complete detention tree of a company. This feature helps visualize company ownership structures and can assist in identifying potential Ultimate Beneficial Owners (UBOs). To use this feature, simply include the &quot;graph&quot; datapoint in your API calls.</p>
<p>This feature is currently in early beta. As it requires retrieving
companyProfile data for each entity in the ownership tree, usage may incur
significant costs. We recommend reaching out to become a design partner to
help shape this feature&#39;s development and discuss optimal usage patterns.</p>
</li>
</ul>
<h2>Countries</h2>
<h3>🇩🇪 Germany</h3>
<ul>
<li><strong>Enhanced detention tree reconstruction</strong> by incorporating control statements from Register Extract documents, enabling more accurate ownership structure analysis.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 13, 2025: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-13-2025</link>
            <guid>https://docs.topograph.co/changelog#week-13-2025</guid>
            <pubDate>Mon, 31 Mar 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇪🇸 Spain</h3>
<ul>
<li><strong>Improved robustness and scalability</strong> of data processing systems, enhancing overall performance and reliability of Spanish company data retrieval.</li>
</ul>
<h3>🇨🇳 China</h3>
<ul>
<li><strong>Enhanced error handling</strong> for cases where company is not found but register is accessible, providing clearer feedback and improved user experience.</li>
</ul>
<h3>🇬🇧 United Kingdom</h3>
<ul>
<li><strong>Enhanced error handling</strong> for cases where companies are not found in the register, providing more informative and user-friendly error messages.</li>
</ul>
<h3>🇩🇪 Germany</h3>
<ul>
<li><strong>Improved shareholder data extraction</strong> from documents, adding support for rotated document processing.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 12, 2025: Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-12-2025</link>
            <guid>https://docs.topograph.co/changelog#week-12-2025</guid>
            <pubDate>Mon, 24 Mar 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Countries</h2>
<h3>🇩🇪 Germany</h3>
<ul>
<li><strong>Enhanced robustness</strong> of shareholders computation system, improving reliability and accuracy of ownership data processing.</li>
</ul>
<h3>🇪🇸 Spain</h3>
<ul>
<li><strong>Improved system resilience</strong> for document access and retrieval, implementing additional error handling and recovery mechanisms.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 11, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-11-2025</link>
            <guid>https://docs.topograph.co/changelog#week-11-2025</guid>
            <pubDate>Mon, 17 Mar 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<ul>
<li><strong>Implemented embedding reuse system</strong> for standardized activity codes, legal forms, and roles processing, saving up to 1.5 second of processing time per query.</li>
<li><strong>Fixed error handling</strong> for cases when companies are not found, eliminating 500 errors. Users now see a generic &quot;An Error has occurred in the job status&quot; message. We&#39;re working on improving generic error messages.</li>
</ul>
<h2>Countries</h2>
<h3>🇩🇪 Germany</h3>
<ul>
<li><strong>Major Update: Shareholders now derived from Gesellschafterliste</strong>. This is preliminary work to enable detention tree reconstruction and UBO identification in Germany. Coming soon!</li>
<li>Improved robustness of company data retrieval by implementing additional error handling and fallback mechanisms.</li>
<li>Improved parsing of shareholders data, enhancing accuracy and completeness of ownership information.</li>
<li>Improved handling of german id including parenthesis.</li>
</ul>
<h3>🇬🇧 United Kingdom</h3>
<ul>
<li>Fixed Register Extract functionality to adapt to the new Companies House website flow, ensuring reliable document retrieval.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 10, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-10-2025</link>
            <guid>https://docs.topograph.co/changelog#week-10-2025</guid>
            <pubDate>Mon, 10 Mar 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<ul>
<li><strong>Fixed error handling</strong> for cases when companies are not found, eliminating 500 errors. Users now see a generic &quot;An Error has occurred in the job status&quot; message. We&#39;re working on improving generic error messages.</li>
</ul>
<h2>Countries</h2>
<h3>🇪🇸 Spain</h3>
<ul>
<li>Fixed financial document listing functionality to correctly retrieve and display available financial documents.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Week 09, 2025: Platform, Countries]]></title>
            <link>https://docs.topograph.co/changelog#week-09-2025</link>
            <guid>https://docs.topograph.co/changelog#week-09-2025</guid>
            <pubDate>Mon, 03 Mar 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>Platform</h2>
<ul>
<li><p><strong>Optimized request processing pipeline</strong>, resulting in an average <strong>2 seconds reduction</strong> in response time across all endpoints.</p>
</li>
<li><p><strong>Fixed performance bottlenecks</strong> when processing companies with large document collections by implementing a <strong>faster inference endpoint</strong> for document metadata processing.</p>
</li>
<li><p><strong>Enhanced performance logging</strong> across the application to better identify and address bottlenecks.</p>
<p>We are actively working on improving overall performance, with a focus on
inference speed optimization. A <strong>faster inference solution</strong> is currently in
development.</p>
</li>
</ul>
<h2>Countries</h2>
<h3>🇮🇹 Italy</h3>
<ul>
<li>Added support for asynchronous data retrieval from the Italian Chamber of Commerce (Camerale). As a result, <strong>companyProfile for Italy is now an asynchronous data point</strong>.</li>
</ul>
<h3>🇩🇪 Germany</h3>
<ul>
<li>Implemented fallback to Handelsregister when Unternehmensregister is unavailable for search and companyProfile.</li>
</ul>
<h3>🇪🇸 Spain</h3>
<ul>
<li>Improved overall speed and reliability of Spanish company data retrieval through infrastructure optimizations.</li>
<li>Added support for asynchronous data retrieval for legalRepresentatives in Spain. Note that base companyProfile data still remains synchronous. This change prevents blocking access to base company data when fetching many legal representatives, which could be time-consuming for companies with extensive representative lists.</li>
<li>As a result, <strong>companyProfile for Spain is now a partially asynchronous data point</strong>.</li>
</ul>
<h3>🇨🇳 China</h3>
<ul>
<li>Improved overall speed and reliability of Chinese company data retrieval through infrastructure optimizations.</li>
</ul>
<h3>🇳🇱 Netherlands</h3>
<ul>
<li>Updated document listing functionality to match KVK&#39;s new API specifications, restoring the ability to list available documents for Dutch companies.</li>
</ul>
]]></content:encoded>
        </item>
    </channel>
</rss>