/feed subscribe https://www.topograph.co/changelog/rss.xml in a Slack channel to get each release posted there.
Subsidiaries: preserve disclosed ownership intervals
For France, Belgium, Germany and the United Kingdom,subsidiaries can return a disclosed ownership interval in sharePercentageRange. Its lower and upper bounds preserve the range, with optional lowerInclusive and upperInclusive flags to distinguish โmore than 25%โ from โat least 25%โ.Exact percentages continue to use sharePercentage. When only an interval is disclosed, no midpoint or endpoint estimate is returned as an exact percentage. When ownership is disclosed without a percentage, both fields are omitted and the company can still appear in the list.See Subsidiaries for the response format and how to apply ownership thresholds to a range.๐ฒ๐บ Mauritius: one canonical identifier, and search resolves the rest
Mauritian companies carry several numbers, and the ones printed on the documents you are likely to hold are not the registerโs own key./v2/company now accepts exactly one identifier for Mauritius: the CBRD File No., a register track letter followed by up to 6 digits, ^[A-Za-z]\d{2,6}$ (e.g. C117853, C61811).Anything else returns 400 Bad Request naming the expected format, immediately and without being billed. Previously an unusable identifier came back as a retryable source_unavailable, which read as โthe Mauritian register is downโ, so retrying looked like the right thing to do and never was.Search resolves what /v2/company will not accept
/v2/search now takes the shapes customers actually hold and returns the canonical File No. as the result id:Search first, then call
/v2/company with the id it returns. That id is always the File No.Always search first. Resolving an identifier through
/v2/search before calling /v2/company is the recommended integration pattern for every country, and Mauritius is the clearest illustration of why: a Mauritian company carries several numbers, and the ones printed on the documents you receive are usually not the registerโs key.A Business Registration Number (125473, or C07068818) is a search input rather than a company key. It identifies a business registration under the Business Registration Act, and a company with several registered businesses has several of them. Search resolves it to the File No., the same value identifiers.brn has always returned, so a single pass through search gives you a value you can store permanently.C067973 and BRN C07068818. Different numbers, different lengths, two separate lookups on the registerโs own search. The response field is still spelled identifiers.brn for backwards compatibility, and it has always carried the File No.๐จ๐ญ Switzerland: key persons now come from the cantonal trade register extract
SwisslegalRepresentatives used to be extracted from SOGC gazette publications โ the stream of change notices ZEFIX republishes. ZEFIX has no structured officer roster, so that was the only machine-readable option, but a gazette is a history of amendments rather than a statement of who currently holds office, and it showed: officers were occasionally missed, and appointment dates were often the date of the wrong notice.Switzerland now reads the official cantonal trade register extract instead โ the same document you can order through /v2/documents, whose person table is the registerโs authoritative current state. All 26 cantons are covered, across both cantonal portal families. If a cantonal portal is temporarily unavailable, the answer falls back to the previous SOGC extraction rather than failing.New: otherKeyPersons for Switzerland
Switzerland now serves the otherKeyPersons datapoint, on the existing che-company-data block โ no new charge, and nothing extra to pay if you already request company or legalRepresentatives. It returns the people the register lists without signing authority:- the statutory auditor (Revisionsstelle / organe de rรฉvision), almost always an audit firm, returned with its own Swiss UID;
- board members without signing authority, common on larger companies.
no_document_available and is not billed, rather than returning an empty list.Breaking: board members without signing authority moved to otherKeyPersons
legalRepresentatives now means exactly โcan bind the companyโ: it contains only people the register grants signing authority, and every entry carries a non-null representationMode. Board members the extract lists as โwithout signing authorityโ now appear in otherKeyPersons instead. On a large Swiss company that can move ten or more people between the two arrays.New field: corporateBody, on every key person
Because that split is by signing authority, a board can span both arrays. Every legal representative and other key person now carries an optional corporateBody naming the body they hold a seat on โ board, supervisoryBoard, management or audit โ so you can reassemble a governing body in one pass:Legal form codes are now GLEIF ELF v1.6
legalForm.iso20275Code now comes from version 1.6 of the GLEIF ISO 20275 Entity Legal Forms code list, published 19 February 2026. We were on v1.5, from September 2023.v1.6 adds 169 codes across 12 new countries and retires 18 whose legal forms were abolished. Two additions worth naming, because customers asked for them:- Spain,
UFBWfor a Comunidad de Bienes, and2W1Afor a Sociedad Civil. - Germany,
PDNUfor an eingetragene Gesellschaft bรผrgerlichen Rechts (eGbR). It previously came back asFR3V, the code for a plain unregistered GbR. The unregistered form still returnsFR3V.
iso20275Code is the same optional string it has always been, and a code you have already stored stays valid โ ELF never renumbers or deletes a code, it only retires it. If you parse legal forms today, your integration is unaffected and needs no change.You can now see which version you are getting
The list version was previously knowable only by asking us, which is not a reasonable answer. Each country page and the country manifest behind/v2/catalog now name the exact edition their legal forms were mapped against, so it is something you can check rather than ask.For roles, that edition is ISO 5009 v1.0.0 of June 2023. That is not us lagging: it is the only edition GLEIF has ever published, and it did not change when the legal-form list moved to v1.6. One consequence worth knowing is that none of the 169 new legal forms has role codes behind it yet.Corrections
Auditing our mapping against v1.6 turned up codes we were publishing that exist in no edition of the standard. ISO 20275 is a closed registry, so these were not near-misses:- The standardization guide gave
54RDfor a German GmbH. The real code is2HBR. - Its role table gave one ISO 5009 code for France, Germany and Italy alike. A role code is scoped to a specific legal form, so one code cannot serve three countries; the table now shows the real per-form codes and says which legal form each belongs to.
- Romania, Singapore, Malta and around twenty US states carried placeholder codes in the pricing manifest and country guides. These never appeared in an API response, because invalid codes are dropped before they reach you, so responses do not change. What changes is that we no longer advertise a code we would not have delivered.
- Where a jurisdiction genuinely has no code, we now publish none rather than invent one. Moldova is the clearest case: GLEIF has never assigned it any code.
Development environments
Every account can now create development environments: isolated sandboxes that answer for every country we support with generated data, bill nothing real, and never touch a register.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 Developer in the app, or over the sandbox API โ one per developer, or one per CI run:api.sandbox.topograph.co, 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 sk_dev_.It behaves like the real thing, including when it fails
The data is generated from each countryโs own manifest, so identifiers are in that countryโs real format, under that countryโs real identifier keys, with its real legal forms, roles, activity codes and document catalog. The same identifier always returns the same company.Every public error code has a magic identifier โ useSOURCE_UNAVAILABLE, INSUFFICIENT_FUNDS, ONBOARDING_TIMEOUT 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: SPARSE, UNICODE, LONG_NAMES, MANY_RESULTS. RATE_LIMITED returns a genuine 429 with Retry-After.Billing you can exercise, with virtual credits
Requests are priced at the real catalog rates 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 genuineinsufficient_funds from the same billing path production uses:Companies you define, and a clean slate
Generated data covers everything, which is the wrong tool when you need one specific company โ to reproduce a bug, build a demo, or assert on your own matching logic. Define one, and everything you leave out stays generated:PATCH it and the next request returns the new version, which is what a monitoring integration needs to see a real change detected. POST /v2/sandbox/reset clears an environmentโs history and restores its wallet between CI runs.Coverage gaps are honest
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.Full details in the development environments guide.The TEST country is deprecated
TEST 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โs real formats, and they understand the same magic identifiers plus many more. New integrations should start with a development environment.France: your NACE class is now the one INSEE assigned the company, and the NAF 2025 code is published
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โs exact 4-digit class is right there.NACE and NACE_REV21 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 62.02A can come back as 73.12 (media representation) where a conversion would have said 62.20.The code itself is published under a new field, NAF_2025 (e.g. 86.93Y, with INSEEโ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 NACE described below. Responses cached before this release keep their previous codes until they expire.French activity codes resolve to a precise NACE class more often
The letter on a French APE/NAF code (8690F, 6420Z) is a national subdivision of the NACE class, and until now we dropped it before standardizing. That cost precision: a holding company declared as 6420Z came back as NACE 64.2, the group, because the bare class 64.20 splits into 64.21 and 64.22 in Rev. 2.1 and the code alone cannot say which.Franceโs APE codes are now resolved through INSEEโs own Table de correspondances NAF rev. 2 -> NAF 2025, which names a single NACE Rev. 2.1 class for 541 of the 732 French sub-classes: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โs own APE code is still published in full under
activities.NAFREV2 โ now carrying INSEEโs official French label instead of a placeholder.A 4-digit NACE class on every French company: NACE_REV2
Upconverting to NACE Rev. 2.1 has a hard limit that no mapping can fix: Rev. 2.1 deleted some Rev. 2 classes. 86.90 has no Rev. 2.1 successor of its own, so the most precise honest answer is the group 86.9. For 17 further classes the successors scatter across unrelated divisions and there is no Rev. 2.1 code at all, so activities.NACE was simply absent โ including for construction of residential buildings, car sales and laundry.French companies now also carry NACE_REV2: the NACE Rev. 2 class the register itself recorded. NAF rรฉv. 2 is the French implementation of NACE Rev. 2, so an APE codeโ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.NACE_REV2 if your parser needs four digits for every company; read NACE / NACE_REV21 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: 86.90 is not a Rev. 2.1 code and 86.9 is not a Rev. 2 class. Existing keys are unchanged.Hungary: a fast mode at 0.50 credits
Hungarian company data previously had one path: the certified Cรฉgkivonat, 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.mode: "onboarding" now reads the stored company extract (Tรกrolt cรฉgkivonat) that the Ministry of Justice publishes on Cรฉgportรกl, at a flat 0.50 credits, and returns the same five datapoints: company, legalRepresentatives, shareholders, otherKeyPersons and establishments.mode: "verification" is unchanged: same certified extract, same price, still the default.Hungary: ownership percentages are no longer estimated
Hungarian extracts describe member participation in words rather than as a figure. โA szavazati jog mรฉrtรฉke minลsรญtett tรถbbsรฉgลฑ befolyรกst biztosรญtโ means the voting right confers qualified-majority influence, at least 75%. Where the register publishes no capital contribution per member,sharePercentage is now omitted instead of being reported as a number derived from that wording.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 sharePercentage for Hungarian companies, treat it as optional rather than assuming a value.Italy: share capital now travels with the shareholder list
The Italian register does not publish share capital on the company record. It files it with the shareholder list, which is a separate, separately priced record.Inmode: "verification", company.capital for Italy is now returned when that shareholder record has been retrieved for the company, and omitted when it has not:If you need share capital on every Italian lookup, add
shareholders to dataPoints. You then get the ownership breakdown and the capital figure together, and the capital costs nothing on top of the shareholders block.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 company and shareholders ran the two in parallel and ordered the same record twice. We have stopped ordering it speculatively.We deliberately did not close the gap with a third-party source. Share capital is available from aggregators that resell register data, and in mode: "onboarding" 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.Italian prices are unchanged. Full detail on the Italy page.Workspaces can now turn off UBO data access
Every workspace can request ultimate beneficial owner (UBO) data, on by default. Turn it off per workspace with the newuboEnabled field on the workspace endpoints:datapoint_not_supported when ultimateBeneficialOwners is requested.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โs UBO access if the entity attached to it is not AML-obliged.Activity codes now tell you which classification revision you are holding
A code like SIC62012 or SBI 62010 means different things in different revisions of its classification, and until now company.activities gave you the code without saying which revision it belonged to. Every key that can answer that question now has a revision-explicit sibling:activities.NACE, activities.SIC 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.Two revisions are fixed platform-wide and never vary by country: ISIC_REV5 (ISIC Rev. 5) and NACE_REV21 (NACE Rev. 2.1). A register that publishes NACE Rev. 2 is upconverted before we publish it, so NACE_REV21 is Rev. 2.1 even where the source is not.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โs CVR moved to Dansk Branchekode 2025, Finlandโs YTJ to TOL 2025, and Greeceโs nomenclature to KAD 2025.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 NACE_BEL_2003, NACE_BEL_2008 or NACE_BEL_2025; Croatiaโs court register does the same, giving NKD_1994, NKD_2007 or NKD_2025, and a single company filed across revisions returns one key for each.And where a register genuinely does not record which revision a code belongs to, we publish no revision-explicit key rather than guess one. That is the honest answer for US NAICS (each state records the vintage current when the entity registered and never says which), Polish PKD, Romanian CAEN and Bulgarian NKID. Those keep their original key alone. The country pages and /v2/catalog list the exact keys each country returns, so you can see this per country rather than discover it from a response.One related correction, for Croatia only: codes the court register stamps as NKD 1994 are no longer folded into NACE. NKD 2007 is Croatiaโ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.Shareholders reconstructed from filings: substantially more accurate
In Belgium, France, the United Kingdom and Iceland the register publishes no structured shareholder list, soshareholders is reconstructed by reading the companyโs filings โ articles, notarial deeds, capital increases, confirmation statements โ and folding them forward to todayโs cap table. That reconstruction has been rebuilt.What changes in your responses- Holders we used to miss now appear. The most common failure was reading a companyโs controlling-interest 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.
- Fewer invented figures. 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.
- Partial cap tables now say they are partial. 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
"type": "aggregate"carrying that remainder, instead of a table that silently adds up to less than the company. Treat anaggregateentry as โthese shares exist and the filings do not name their holderโ. - Reconstruction is roughly twice as fast, so requests that include
shareholdersfor these countries return sooner.
Italy: residence addresses, gender and nationality for individual legal representatives
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:birthAddress.countryCode instead of defaulting to Italy.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.Activity codes now identify the companyโs main activity
Every activity code item incompany.activities (and on establishments) can now carry isMainActivity: true, marking the code the register declares as the companyโs main โ primary, prevailing โ activity:- Absence means unknown, not secondary. The flag appears only where the register distinguishes a main activity โ either explicitly (Belgiumโs MAIN classification, Polandโs dziaลalnoลฤ przewaลผajฤ ca, Croatiaโs preteลพita djelatnost, Greeceโs ฮฯฯฮนฮฑ, Hungaryโs fลtevรฉkenysรฉg, Norwayโs first nรฆringskode, Singaporeโs primary SSIC, and more) or because the register publishes exactly one code, which is its declared main activity (Franceโs APE, Finlandโs main business line, Luxembourg, Spain, Ukraine, Serbia, and others). Registers that publish an undifferentiated list โ the UKโs SIC codes, for example โ carry no flag on any code.
- Derived codes inherit it. 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
isMainActivityon the standardized classifications without knowing each countryโs native system. - At most one code per classification carries it, so
activities.NACE.find(a => a.isMainActivity)is a safe way to pick one code per company.
isAIInferred: true alongside, so you can always tell a register-declared main activity from an inferred one.The field is optional and additive โ existing integrations parse responses unchanged. Each country page documents whether its register declares a main activity.Singapore: the Business Profile document is available again
The ACRA Business Profile (trade_register_extract) is back in Singapore. It appears again in GET /v2/company/{id}/documents and can be ordered, and the shareholders and legalRepresentatives datapoints, which are read from it, resolve again with it.It was briefly unavailable earlier this week while we fixed a problem delivering purchased documents from ACRAโs portal. Orders complete reliably again.Search, company in onboarding mode, and the onboarding profile were unaffected throughout, since they come from ACRAโs open dataset (~2.07 million entities) rather than the portal.If you were billed for a Singapore Business Profile that did not arrive during that window, contact us and we will refund it.Ask questions about coverage and pricing in plain English
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.It answers from the live catalog and the documentation, not from a modelโ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.It is the same catalog the Topograph MCP serves, so an answer here and an answer in your editor agree.Conversations are saved to your account. Close the tab, come back next week or on another device, and pick up where you left off.Sign in and open /pricing to try it.Any company request can now be downloaded as a PDF extract
Add/pdf 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:You do not have to wait for the request to finish
By default the extract renders whatever has arrived, matchingGET /v2/company/{requestId}, which has always returned partial results while a request runs.That is safe because a partial extract cannot be mistaken for a complete one. It carries its own disclosure:- The seal reads PARTIAL rather than VERIFIED.
- A Data completeness section lists every requested datapoint and whether it was included, is still being retrieved, or failed โ with the reason it failed.
- The
X-Topograph-Data-Statusresponse header carriescompleteorpartial, so you can branch on it without opening the file.
requireComplete=true and get a 409 naming what it is still waiting on:Poland now covers entities that are in neither KRS nor CEIDG
Polish company data came from two registers: KRS for legal entities and CEIDG for sole traders. An entity in neither was unreachable โ most visibly a spรณลka cywilna (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.We now also read the REGON register (krajowy rejestr urzฤdowy podmiotรณw gospodarki narodowej), 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.Two things change for a spรณลka cywilna, using its own NIP or REGON:The same applies to housing communities, foreign representative offices, schools and public-sector bodies.Data served this way is attributed with a new register code, wherever register codes already appear (
dataSources.<field>.register, and source.register on documents):spรณลka cywilna, so documents are still requested per partner, using that partnerโs own NIP. See Poland.The published OpenAPI spec now matches what the API returns
Several of you told us the spec at docs.topograph.co/openapi.json 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.POST /v2/company documents 201
Creating a request has always answered 201 Created. The spec listed only 200, so a strictly generated client rejected every creation response. Both codes are now documented, and they mean different things:POST /v2/onboarding answers 201 on both paths and now says so. No behaviour changed on either endpoint; only the documentation was wrong.Every datapoint error code is listed
dataStatus could return codes the spec never mentioned, including account_configuration_required, source_unavailable, no_data_available and budget_exceeded. The enum is now derived from our internal registry, so it cannot fall out of step again.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.A monetary amount can arrive without a currency
currency was marked required on MonetaryAmountDTO, 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.currency is now optional. When it is absent, the figure is still exactly what the register published, so keep it:formatted is now always present, falling back to the bare grouped number when there is no currency to format against. amount 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.Control nature uses null, not "unknown"
nature carries three distinct facts, and they matter in compliance: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
"unknown", which was not in the documented enum, so strict clients deleted it and could no longer tell โthe register does not knowโ from โno such informationโ.This applies to requests you made before the change too. Re-fetching an older requestId returns null where it previously returned "unknown".Fields no longer promised
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:company.countryCode, control.description, ultimateBeneficialOwners[].control, companyRelationships[].company, and, on requests, id and countryCode (both derived from the parent on a graph continuation).Two moved the other way, because they are always present: request.companyId and request.requestId.What keeps it honest
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.Country pages and the catalog now publish indicative response times
Every country now carries indicative timings for search, for each datapoint in each mode, and for each document. They appear under Speed on the country pages, in the price list workbook, and on/v2/catalog:withProcessing 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.A datapoint or document with too little traffic to estimate from is left out rather than guessed at, and lowConfidence marks a figure resting on a thin sample. A country with nothing to publish carries no performance block at all.A succeeded datapoint now always carries its list, empty when the register published nothing
The list-shaped fields (legalRepresentatives, otherKeyPersons, establishments, shareholders, subsidiaries, ultimateBeneficialOwners) used to be omitted entirely when they had no entries. A datapoint could therefore report "status": "succeeded" with no corresponding key in the body, which was indistinguishable from a datapoint that never ran.They now follow one rule, in the API response and the webhook payload alike:succeeded with a missing key can no longer happen. If you branch on presence (if (response.shareholders)), note that [] is truthy โ switch to a length check. Nothing changes for a populated list, and no key that was previously present has been removed.Worth knowing when reading an empty list: it means the register holds no such record, which is not always the entity has none. The Dutch KVK, for instance, registers a shareholder only when a company has a single 100% holder, so a BV with several shareholders returns shareholders: []. See Netherlands and Retrieve a company.Every supporting document now names the register it was collected from
When data is derived from documents (reconstructed shareholders, and any otherai_analysis source), dataSources already listed which documents were involved. Each entry now also says where that document came from, via a register code:dataSources.<field>.register and the source.register carried by every document in availableDocuments. The attribution is per-document rather than on the parent source, because a single reconstruction routinely draws on filings from more than one register. register is omitted when the register behind a document isnโt known.This is additive. No existing field changes shape. See Shareholders Extraction.Statutory filing dates now cover four more countries, read directly from the registerโs document
company.statutoryFilings now covers the Netherlands, Jersey, Singapore and Portugal, alongside the register-published countries it already covered.For these four, the filing date comes from the registerโs own document text rather than a structured field, since the underlying registers donโt expose one. See Compliance Signals & Statutory Filings 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.Monitoring now surfaces credential-gated datapoints instead of failing silently
A handful of datapoints require your own account credentials for a third-party register โ most notablyultimateBeneficialOwners 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.POST /v2/monitors now returns a datapointNotices 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โll also receive a one-time monitor.datapoint_blocked webhook when a datapoint becomes unavailable this way, and monitor.datapoint_unblocked once it resumes โ these fire once per transition, not on every recheck.See Company Monitoring and Germany.Statutory filing dates, and three new compliance signals
company.statutoryFilings 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โs particulars are current. Each obligation reports the period last filed and the one next due.company.complianceFlags gains three signals alongside the two overdue flags: registeredCharges (charges or mortgages over the companyโs assets), insolvencyHistory (insolvency proceedings in the companyโs history, so it stays set after a company recovers) and liquidated. All three ship for the United Kingdom.One behavioural change worth reading. A compliance flag now appears whenever the register formally states the signal, carrying the registerโs answer in active, not only when the answer is โyesโ. So a UK company in good standing now returns "registeredCharges": { "active": false }, which is Companies House positively clearing it. An absent key means we hold no formal statement either way, and is not a clearance. This is additive: new keys appear with active: false, and no existing key changes shape. But if you treated the presence of a key as meaning โsomething is wrongโ, switch to reading active.Every countryโs manifest now declares exactly which flags and filing dates it populates, and whether its register ever states the negative, so you can tell โthe register says noโ from โthis country doesnโt publish itโ before you integrate.See Compliance Signals & Statutory Filings.Italy: a wrong identifier now answers immediately
/v2/company 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 IT prefix, surrounding whitespace, dots and hyphens, and lowercase input are all accepted and normalized to the bare uppercase form, so IT01234567890 and 01234567890 are one company and one cache entry rather than two.Anything else now returns 400 invalid_request straight away, naming the expected format, and is not billed. The common case is a REA or CCIAA + REA code such as RM-1734032, which Italian register documents print next to the company name. Sending one used to take around 30 seconds and come back as โthe register is temporarily unavailableโ. A wrong identifier now reads as a wrong identifier.If you hold a REA code, a sole proprietorโs Partita IVA, or a company name, pass it to /v2/search: it resolves all of them to the Codice Fiscale to use on /v2/company. See Italy.Lithuania now available
Company data for Lithuania is available on/v2/company and /v2/search, 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.Legal forms and statuses come from the registerโ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.Two things to know before you integrate:- Request Lithuania in
onboardingmode. Data comes from the registerโ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. - Officers, shareholders and beneficial owners are not available. 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.
Send a test notification for a monitor
You no longer have to wait for a real change to validate a monitoring integration. Open a monitor in the dashboard and click Send Test Notification, or call the new endpoint:monitorId and metadata 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.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 Company Monitoring.One consistent rule for sole entrepreneurs and non-profits
Sole entrepreneurs (entrepreneur individuel, ะะข, ditta individuale, ฮฮคฮฮฮฮฮ, ะคะะ, โฆ) and non-profits now behave the same way in every country:legalRepresentativesalways returns the person behind a sole entrepreneur (with the identity fields the register publishes), and the officers/board for non-profits.ultimateBeneficialOwnersreturns 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 โwho owns this businessโ, even when the register requires no separate UBO declaration for these forms.shareholdersis 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:
datapoint_not_applicable is a definitive, benign answer: donโt retry it, and donโt treat it as an outage. When shareholders is the only datapoint of its billing block in the request, the block is automatically refunded.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 legalRepresentatives / ultimateBeneficialOwners 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.Full behavior matrix: Sole Entrepreneurs & Non-Profits.Metadata on monitors
POST /v2/monitors now accepts an optional metadata object: arbitrary key-value string pairs stored on the monitor and echoed back in monitor responses and in every monitor.notification webhook.metadata; monitors now work the same way. See Company Monitoring for details.Alongside this, the monitorId in monitor.notification webhooks now matches the id returned by POST /v2/monitors. 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 monitorId values, re-key on the ids from GET /v2/monitors.Documents now name their issuing register
Every document returned by/v2/company now carries a source object identifying the register it comes from, in the same format as the dataSources section:availableDocuments and on every downloaded document, across all countries. Use source.register to show the issuing authority to your users, or to tell registers apart in countries where documents come from more than one source.This is an additive change: no existing field moves. See Document Retrieval for details.Company history, filing by filing
Two registers now expose their full change history as a document, joining the Netherlands, Italy, and France underdocuments.tradeRegisterHistory.- Germany: the Chronologischer Abdruck, the chronological register print listing every entry ever made against a company.
- Ukraine: a certified extract from the state register, orderable like any other document.
Czech shareholders
Shareholders (spoleฤnรญci) are now returned for Czech companies. Addshareholders to your dataPoints on any /v2/company request, with ownership stakes as recorded in the Commercial Register.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.Hungarian annual accounts
Annual financial statements for Hungarian companies are now available underfinancialStatements, sourced from the national filing portal.Beneficial ownership in three more jurisdictions
ultimateBeneficialOwners now resolves for Cyprus, Slovenia, and Portugal. Each request returns the parsed owners list plus the official certificate from the local register as a ubo_extract document.These jurisdictions are fulfilled within one to three business days and carry a Manual badge on the pricing page.Every request now ends with a webhook
The terminalcompany.updated 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 request.version (see week 26) to keep your own copy in step.Ownership graphs cross borders
Thegraph 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.Where a country has no shareholder coverage, exploration stops cleanly at that node, so the graph tells you where the trail genuinely ends.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.The ownership graph says why a node stopped
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.Italy: Fascicolo Storico
The Fascicolo Storico is now available on/v2/company. 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.Request it the same way as any other document: ask for availableDocuments, then pass the returned id back in documents: [...].Luxembourg: publications and filings
Official publications and register filings for Luxembourg companies are now retrievable, covering the notices and deposited acts published for each entity.Portugal: publications
Portuguese company publications are now served through a dedicated index, with both a fast and an authoritative mode for company data.France: several INPI accounts on one integration
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โs rate limit no longer caps your throughput.Activity codes per establishment
Establishments now carry their own activity codes, not just the parent companyโ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.Germany: flexible register search
/v2/search now accepts German register references the way people write them: abbreviated court codes, partial register numbers, and the court and number in either order. HRB 12345 Mรผnchen and Mรผnchen HRB 12345 both find the same company.Webhooks: ordering guarantee
Webhook payloads now carryrequest.version, an incrementing counter you can use to order snapshots. When two webhooks for the same request arrive out of order, compare version and keep the higher one. This complements the existing guidance to merge rather than replace on company.updated.Cleaner response shapes
Three corrections to how optional data is represented, so strict consumers and generated clients behave predictably:- Person identifiers are documented as a flat object rather than an array.
- Empty addresses are omitted entirely instead of returning an object of nulls.
- Optional response fields are no longer marked required in the OpenAPI spec.
Faster US responses
Search and profile calls across a large set of US states are now several times quicker, with typical lookups landing in around two seconds.The United States, coast to coast
Company data is now available for all 50 US states and Washington DC, each sourced directly from that stateโs Secretary of State or equivalent business register. Texas, announced in week 18, was the first of the set. The rest are now live.What you get
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 Trade Register Extract bundled with the company data at no extra charge.Where a state issues official certificates (Certificates of Good Standing, Certificates of Existence, status reports, certified copies), they are available as orderable documents.Fast and authoritative modes
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 withmode.Beta
US states ship as beta while coverage settles. Each state page carries the label, and thedevelopmentStatus field on the country catalog exposes it programmatically so you can treat beta jurisdictions differently in your own flows.Every state has its own page under North America, listing accepted identifiers, available datapoints, and documents.New jurisdictions
Antigua and Barbuda and the Marshall Islands are now available on/v2/company and /v2/search.Filing-compliance signals
company.complianceFlags is a new field carrying signals the register reports about a companyโs filing standing. Two kinds ship first, both for the United Kingdom:active plus dueDate, since, and source 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.Belgium: coordinated articles of association
Belgian companies now return their coordinated statutes, the consolidated current text of the articles, underdocuments.articlesOfAssociation.Better ownership and profile data
- Denmark: 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.
- Spain: companies can be found by hoja registral, and it is returned in
company.identifiers.incorporationDateis now the companyโs true constitution date, and a separateregistrationDatecarries the date it entered the register. - Belgium: sole traders and natural-person businesses now carry a
legalForm, standardized as a sole proprietorship, instead of leaving the field empty. - Malta:
/v2/searchmatches registration numbers written without a space, across every register prefix. - China: company data and shareholders are now separate blocks, so you can buy either on its own, and beneficial ownership is available.
- Cayman Islands: a Director Details document is now orderable.
Check your balance from the API
GET /v2/billing/balance returns your accountโ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.Trials no longer switch themselves off
Reaching the end of a trial no longer deactivates an account or blocks API calls. Your integration keeps working while commercial terms are settled.UBO certificates as orderable documents
For Croatia and Serbia, the official beneficial-ownership certificate is now surfaced inavailableDocuments as a ubo_extract you can order on its own, without requesting the parsed ultimateBeneficialOwners datapoint.German WZ 2025 activity codes
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).Both appear undercompany.activities:WZ2008 is unchanged, so existing integrations keep working. WZ2025 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, WZ2025 contains all of them. As with NACE and ISIC, German activity codes are inferred from the company purpose and flagged isAIInferred: true.See Germany for the full reference.Poland: full board and shareholder names
Polish board members and shareholders now come back with their complete names, resolved from the registerโs official extract rather than the abbreviated public listing.Finland: companies awaiting registration
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.Spanish foundations now available
Spanish foundations are now covered on/v2/company and /v2/search. Foundations carry a NIF beginning with G, 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 documents.tradeRegisterExtract.See Spain for the full reference.Italian articles of association (Statuto) available
The Italian Statuto (articles of association) is now available on/v2/company, returned under the existing documents.articlesOfAssociation response key alongside France and the UK.The document is the companyโs constitutional text as filed at the Chamber of Commerce, with every amending protocol indexed inside the PDF.documents.articlesOfAssociation with format: "pdf" and an id. Pass that id back in documents: [...] to order the PDF. The response includes a signed url for download. Delivery time is in line with the other Italian documents.Bosnia and Herzegovina now available
Company data for Bosnia and Herzegovina is now available on/v2/company and /v2/search.The integration covers the unified Registar poslovnih subjekata BiH โ a single portal serving all three entities: Federation of BiH, Republika Srpska, and Brฤko District.Whatโs included
- Company profile: 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.
- Legal representatives: directors, general directors, procurists, executive directors โ with signatory mode (sole / joint) and authorisation details where registered.
- Other key persons: board members (
ฤlan Uprave), supervisory board chairs (Predsjednik nadzornog odbora). - Shareholders: 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.
- Trade Register Extract: full printed PDF covering all 8 register sections (basic data, founders, management, capital, activities, branch offices, foreign trade, notes).
Identifiers
Bosnia uses the MBS (Matiฤni broj subjekta) as its primary identifier. The format varies by sub-register:NN-01-XXXX-YY for private companies in Federation BiH and Brฤko, NN-02-XXXX-YY for joint-stock companies, and N-XXXX 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.See Bosnia and Herzegovina for the full identifier and data availability reference.Consistent identifier keys in company.identifiers
Every companyโs registration numbers are now returned under consistent, local-language keys in company.identifiers, matching each countryโs own terminology. Most countries are unchanged. A few had a key renamed to follow the convention.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.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
VAT.If you parse company.identifiers by key for Belgium, Spain, Italy, or Austria, switch to the new key before 1 September 2026. Each countryโs accepted identifiers are listed on its page.Portugal: two more documents
Portuguese companies now offer an uncertified Trade Register Extract (a compilation of the companyโs register publications) alongside the existing certified extract, and Annual Accounts can be ordered on their own.Faster onboarding mode in more countries
Onboarding mode, which answers in seconds and is what you want behind a signup form, now covers Cyprus, Greece, Latvia, Monaco, Poland, Portugal, France, and Sweden. Verification mode is unchanged and remains the authoritative path. Pick per request withmode.Moldova now available
Company data for Moldova is available on/v2/company and /v2/search, covering the company profile, legal representatives, and shareholders, with activity codes mapped to NACE and ISIC.See Moldova for the full reference.Activity codes now standardized to NACE Rev. 2.1 and ISIC Rev. 5
Every company response now returns activity codes on the current international standards: NACE Rev. 2.1 (the European classification in force since 2025) and ISIC Rev. 5 (the global standard). Previously we returned the prior revisions (NACE Rev. 2 and ISIC Rev. 4).What changes
- The
activities.NACEarray uses NACE Rev. 2.1 codes, andactivities.ISICuses ISIC Rev. 5 codes, for every country. - Where a register still publishes Rev. 2 codes, we upconvert them to Rev. 2.1 using the official Eurostat transition table.
- 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.
- The registerโs own local activity code (NAF, ATECO, ฮฮฮ, CAEN, SBI, and so on) is still returned under its own key, unchanged.
activities.ISICandactivities.NACEare 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.
What to check
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 from62.01 to 62.10). See Data Standardization for how the mapping works.Italian Visura Camerale now ships in Italian, with the full register content
ThecertifiedTradeRegisterExtract 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.New content in the PDF
- Oggetto sociale (corporate object): the full legal scope of the company, verbatim from the articles of association.
- Poteri di firma (board powers): the structured signing powers per officer, including joint vs. several authority and delegation rules.
- ATECO classification: the code is now explicitly labelled โATECOโ alongside the NACE mapping.
- Per-branch activity matrix: primary and secondary ATECO codes for every registered branch.
- Statutory clauses: withdrawal, exclusion, and pre-emption clauses flagged where present.
- Employee distribution: quarterly breakdown by contract type, working hours, qualification, and municipality, on top of the headcount.
- Filing activity indicators: filings in the last 12 months, share transfers, address transfers, holdings.
- Available document inventory: 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.
- Quality and environmental certifications: SOA qualification, ISO and other quality certificates, environmental rolls.
How to request it
The request is unchanged.documents.certifiedTradeRegisterExtract with format: "pdf" and an id. Pass that id back in documents: [...] to order the PDF. The response includes a signed url for download.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.France: Historique des modifications
France joins the Netherlands and Italy underdocuments.tradeRegisterHistory. The Historique des modifications lists every change filed against a French company since registration.Subsidiaries for France, Belgium, Germany, and the UK
Thesubsidiaries datapoint, introduced for Italy in week 18, now answers for France, Belgium, Germany, and the United Kingdom, and can be requested on its own without buying a full company block.Latin-script names for Bulgaria and Greece
companyNameTransliterations now also returns for Bulgaria and Greece, alongside Ukraine. Search matches Latin-script queries against Cyrillic and Greek company records, and the field lists the canonical Latin spellings.Pick documents by type, not by name
Document entries for France, the UK, and Austria now carry adocumentSubType drawn from that countryโs own filing taxonomy. Select on it instead of matching the free-text name field, which varies per filing and is not a stable key.Latin search for Ukrainian companies
Ukrainian companies are registered in Cyrillic. You can now find them with a Latin-script query, and every Ukrainian company response carries a newcompanyNameTransliterations field with the canonical Latin spellings of its name.Search
A search likeNaftogaz, Kyivstar, or Pryvatbank now matches the Cyrillic-only company record. Both common romanisations work: the modern Ukrainian spelling (Naftohaz) and the legacy spelling (Naftogaz). Diacritic forms pasted from academic or EU sources match too.New response field
companyNameTransliterations is a string array on both /v2/search results and /v2/company responses. It lists the deterministic Latin transliterations of the companyโ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.transliterate=true query flag, which romanises the whole response on demand. See Transliteration for how the two features differ.Historical trade register extracts
Two new historical documents are available on/v2/company, returned under a new response key documents.tradeRegisterHistory.Netherlands
Uittreksel Handelsregister Historie 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 tradeRegisterHistory in availableDocuments whenever KVK has a historical record for the company.Italy
Visura Storica 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.How to use it
documents.tradeRegisterHistory with format: "pdf" and an id. Pass that id back in documents: [...] to order the PDF. The response will include a signed url for download.The historical extract sits alongside the existing documents.tradeRegisterExtract (current state only) and documents.certifiedTradeRegisterExtract keys, so you can request either or both depending on whether you need a point-in-time snapshot or the full change history.Test slow deliveries without waiting for one
The TEST country now acceptsDELAY_1M, DELAY_10M, DELAY_1H, and DELAY_10H 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โs pending state against a delivery that genuinely takes an hour.They combine with the existing GRAPH_* fixtures. Build your integration against the slow path before a real register makes you.Ireland: shareholder provenance made explicit
Irish shareholders derived from annual return filings are now labelledinferred 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.Topograph MCP server and Claude Code plugin
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.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/v2/search and /v2/company and it will work from live coverage and pricing rather than from memory.Coverage and pricing, in the open
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.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.Errors name the register that failed
When an upstream register is unavailable, the error now names it. Instead of a generic โthe data source is temporarily unavailableโ, 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.The register name is available both in the error message and as asource field on the error, so you can branch on it in code.Live register availability is published at status.topograph.co, and you can subscribe there to be notified when a register we depend on is disrupted.Friendlier document downloads
Downloaded documents now arrive with a readable filename describing the document and the company, instead of an opaque identifier. No request change: the signedurl simply serves a proper filename.Interactive ownership graph
Two new request fields on/v2/company give you click-by-click control over how deep the ownership graph goes.graphInteractive
Pass graphInteractive: true together with the graph datapoint to fetch only the entry company. Its direct shareholders are returned in the response: individuals as full nodes, companies as budget_truncated placeholders. Each placeholder carries a nodeId, a cost preview, and the depth at which it sits.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.When graphInteractive is set, graphMaxBudget is ignored.graphContinueFromNodeIds
Pass an array of budget_truncated nodeIds from a previous response to extend the graph from those leaves. The new request is linked to its parent via mainRequestId; countryCode and id are derived from the parent automatically. Cost deduplication applies across the full request tree, so already-paid companies are not re-billed.If the parent request was made with graphInteractive: true, every continuation inherits the flag. Each chip click then expands a single level under the chosen node, with the new tierโs company shareholders surfaced as fresh budget_truncated chips.Response field
graph.metadata.interactive is now returned alongside stoppedReason, companiesFetched, and companiesSkipped so you can tell whether a stored result was produced in interactive mode.Texas (US-TX)
Texas company data is now available, with full coverage of both formal entities and sole traders, and two official documents.Authoritative verification via the Secretary of State. 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).Fast onboarding via the Comptroller. 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.Two official documents.- Information Letter โ Secretary of State document confirming entity status, filing date, and registered agent. Formal entities only.
- Sales Tax Permit โ Comptroller record of permit status and outlet locations. Available for all permit holders, including sole traders.
Sweden: sole traders now supported
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/v2/company request.The profile returns personalIdentityNumber in identifiers, 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.New datapoint: subsidiaries
Surface the companies a queried company holds equity in. Each entry carries the subsidiaryโs identifiers, ownership percentage, voting rights, number of shares, nominal capital held, and acquisition or end dates when reported.Add subsidiaries to your dataPoints parameter to include them in any /v2/company request.Italy
First country to shipsubsidiaries, sourced from InfoCamere. We return only current participations, picking the most recent filing per subsidiary and filtering out historical or dissolved holdings.Italy: establishments now available
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.Beneficial ownership data for four new jurisdictions
TheultimateBeneficialOwners datapoint is now answered for Ireland, Portugal, Serbia, and Croatia. Each request returns the parsed beneficial owners list together with the official certificate from the local register, surfaced in documents as a ubo_extract.Ireland
Beneficial ownership data sourced from the Register of Beneficial Ownership (RBO).Portugal
Beneficial ownership data sourced from RCBE (Registo Central do Beneficiรกrio Efetivo).Serbia
Beneficial ownership data sourced from APRโs Centralna evidencija stvarnih vlasnika.Croatia
Beneficial ownership data sourced from the Registar stvarnih vlasnika (RSV).Delivery
These four sources are fulfilled within one to three business days. The pricing page surfaces them with a Manual badge so itโs clear up front when to expect the result.Russia and Serbia now available
Two more jurisdictions are live on/v2/company and /v2/search.- Russia: company and sole-entrepreneur data from the state register, with establishments, legal representatives, and shareholders.
- Serbia: company data from the Business Registers Agency, with establishments, legal representatives, other key persons, and shareholders.
See how a reconstructed shareholding was derived
Where shareholders are reconstructed from filings rather than read from a shareholder register,dataSources.shareholders now explains the reasoning: an overall summary naming the documents used, a limitations list stating what the reconstruction cannot establish, and a per-shareholder narrative on each entry.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.New document coverage across nine countries
Articles of association and annual accounts are now available on more jurisdictions, each retrieved from the countryโs official register.United Kingdom
Articles of association now include amendments filed after incorporation, not just the original filing. Special resolutions that change the articles land inarticlesOfAssociation. Annual accounts unchanged.France
Articles of association (statuts) from INPI are now classified directly from the French registerโs official document dictionary. Statute filings, translations, cross-border merger statutes, and updated statute drafts all route intoarticlesOfAssociation. The same treatment applies to each component of the annual accounts.Slovakia
Annual financial statements (รบฤtovnรฉ zรกvierky) for every registered entity since 2009, from the Slovak financial statements register.Estonia
Annual reports (majandusaasta aruanne) for Estonian entities are now surfaced infinancialStatements. Filings are available since 2010.Greece
First document integration for Greece: bothfinancialStatements and articles of association (ฮบฮฑฯฮฑฯฯฮฑฯฮนฮบฯ) from the GEMI publicity portal.Ukraine
Annual financial statements (ะคัะฝะฐะฝัะพะฒะฐ ะทะฒััะฝัััั ะฟัะดะฟัะธัะผััะฒ) for Ukrainian legal entities, covering 2021 to 2025.Slovenia
Two new sources from AJPES:- Articles of association (akt o ustanovitvi / statut) from the eObjave section.
- Annual reports (letno poroฤilo) from JOLP.
Czech Republic
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 infinancialStatements and articlesOfAssociation.Ireland
Company constitutions filed with the Irish Companies Registration Office (CRO), returned inarticlesOfAssociation. Requesting a constitution triggers retrieval from CRO and returns the PDF like any other document.Germany: paid Hinterlegungen now retrievable
Voluntary ยง326 HGB financial-statement deposits filed by Kleinstkapitalgesellschaften are now part of the standardavailableDocuments response. Requesting one returns the PDF like any other German document. See the live pricing page for current pricing.Retrieve a request with a GET
GET /v2/company/{requestId} 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.The previous approach of POSTing {"requestId": "..."} still works, so nothing breaks. The GET is simply the natural shape for reading a result you already created.Onboarding mode has a firm deadline
Onboarding mode now enforces a 10 second budget per datapoint, end to end. A datapoint that cannot answer in time returnsonboarding_timeout instead of holding your signup form open.This makes onboarding latency predictable by design. When you need completeness over speed, use verification mode, which has no such cap.France: Avis de situation INSEE
Every active French company now carries an Avis de situation INSEE inavailableDocuments, generated on demand from the national business directory. It confirms the companyโs registered identity, address, and activity, and is bundled with the French company data.Isle of Man now available
Company data for the Isle of Man is available on/v2/company and /v2/search, with a Trade Register Extract alongside the company profile.Germany: your own Transparenzregister credentials
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.Latin-script responses for non-Latin countries
Getting company data from Bulgaria, Ukraine, Greece, China, or Hong Kong? You can now ask for the response in Latin characters.Addtransliterate=true to any /v2/search or /v2/company 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.The flag does not change retrieval or billing. It is a presentation option applied to the response on the way out.See the Transliteration guide to learn more.France: customer INPI credentials for AML-obligated entities
AML-obligated entities with their own INPI account carryingROLE_RBE_BENEFICIAL_OWNERS and ROLE_RBE_BENEFICIAL_OWNERS_PDF can now provision those credentials on their Topograph account to unlock the un-redacted INPI dataset.What it grants access to, under your credentials only:ultimateBeneficialOwnerswith 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.ubo_extractsynthesis PDF with the richer INPI content reserved for RBE-authorised accounts, typically around 20% larger than the default PDF.
Billing Notifications
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.Configure everything from the new Billing page in your dashboard or from the REST endpoints at/v2/billing/notifications.Two independent spend budgets
High-usage watches run as two parallel passes, both firing on every billable request:- Account-wide budget: 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.
- Per-workspace budget: 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โt drown out the rest.
scope 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).Per-workspace overrides
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 viaPATCH /v2/billing/notifications/workspaces/{id}/config. Overridden workspaces show an explicit overriding badge in the UI so you can see at a glance which ones have drifted from the account policy.Off by default, admin-controlled
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; addcritical, depleted, or extra high-usage bands from the tier editor as your policy matures.Webhook integration
Four new event types are delivered through the same webhook setup as your existingcompany.updated 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:billing.low_balance.triggeredbilling.high_usage.triggered(carriesscope: "global" | "workspace"so you can route the two budgets independently)billing.auto_topup.succeededbilling.auto_topup.failed
Full audit trail
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 viaGET /v2/billing/notifications/recent returns the same shape, so you can forward events to your observability pipeline alongside company-data webhooks.Getting started
- Open the Billing page in your Topograph dashboard.
- Expand Notification preferences and flip on the kinds you want.
- Adjust tiers, period, and channels in place, or leave the starter defaults.
- If you use webhooks, subscribe the four new event types in your existing endpoint.
Data Product Model
New Data Vocabulary
The API now supports granular datapoints instead of the bundledcompanyProfile:company: company information (name, address, status, legal form, activities)legalRepresentatives: directors, managers, board membersshareholders: shareholder structure and ownership percentagesultimateBeneficialOwners: beneficial owners (unchanged)
otherKeyPersons: board members, auditors, compliance officersestablishments: branch offices and secondary locations
companyProfile datapoint still works and maps to company + legalRepresentatives. No migration required.Monitoring expanded to 6 new countries
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:- Bulgaria (BG)
- Greece (GR)
- Iceland (IS)
- Jersey (JE)
- Netherlands (NL)
- Slovenia (SI)
Retrieval Modes
Newmode parameter replaces fast and authoritative:mode: "verification"(default): picks the authoritative registry sourcemode: "onboarding": picks the cheapest fast source for form prefill and screening
fast and authoritative parameters are deprecated but still accepted./v2/onboarding Deprecated
Use POST /v2/company with mode: "onboarding" instead. Same response format, same speed. See the migration guide.Authoritative Flag in Response
dataStatus.dataPoints now includes authoritative: true/false so you know whether data came from an official registry.Block-Based Pricing
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.The/v2/pricing endpoint now returns a blocks array showing per-mode pricing and block grouping.Budget Cap
NewmaxBudget parameter (in credit cents) lets you cap the cost of a request. Billable blocks 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 budget_exceeded status instead of failing the entire request.Countries
๐บ๐ฆ Ukraine
New Country โ Ukraine IntegrationUkraine is now fully supported, sourcing all data from the Unified State Register (ะะะ โ ะะดะธะฝะธะน ะดะตัะถะฐะฒะฝะธะน ัะตัััั), the official registry of legal entities, individual entrepreneurs, and foreign entity subdivisions operated by the Ministry of Justice of Ukraine.- Search โ By EDRPOU code (exact match, all entity types) or RECORD number (individual entrepreneurs), and by company name in Cyrillic or Latin script
- Three datasets in one integration:
- Legal entities (UO) โ All registered companies: LLCs, joint-stock companies, cooperatives, nonprofits, state bodies, farm enterprises, and 50+ other legal forms
- Individual entrepreneurs (FOP) โ ะคัะทะธัะฝั ะพัะพะฑะธ-ะฟัะดะฟัะธัะผัั, with full support for the unique FOP
RECORDidentifier scheme (prefixed asFOP-{RECORD}to avoid collision with EDRPOU codes) - Foreign entity subdivisions (FSU) โ Representative offices and branches of foreign companies, with parent company details including country code and foreign registry code
- Company profile โ 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
- Shareholders โ Founders for legal entities (individual and corporate, with nominal capital); self-ownership for individual entrepreneurs (100%); foreign parent company for FSU subdivisions
- Legal representatives โ Directors and representatives from the EDR signatories section; individual entrepreneurs are self-represented (role: Owner)
- 5.8M+ individual entrepreneur records โ The FOP dataset is one of the largest in our platform, covering registrations going back to the 1990s
Who can sign, and alone or together
Legal representatives now carryrepresentationMode, stating whether an officer can bind the company alone (sole) or only jointly with others (joint). Where the register publishes the detail, minimumSignatories and namedCoSigners are returned too.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.Hungary: sole traders
Hungarian sole traders from the individual-entrepreneur register are now covered. Look them up by registration number or tax ID.Malta: shareholders
Maltese companies now returnshareholders, with ownership percentages.Countries
๐ง๐ช Belgium
Legal Representative Enrichment (Best Effort)WhenagenticEnrichment: true is passed, the system attempts to enrich legal representative details from eJustice publications (Moniteur Belge). This is best effort. Not all fields are guaranteed, as enrichment depends on which publications are available and what data they contain.- Enriched fields: birth date, nationality, residence address (geocoded)
- New
enrichingdatapoint status: indicates enrichment is in progress after base data has been retrieved - Pricing: fixed 50 cents per request, charged only if at least one field was enriched
- Belgium only for now
๐ง๐ฌ Bulgaria
Full Integration: Bulgarian Trade RegisterBulgaria is now fully supported with company data from the Trade Register (ะขััะณะพะฒัะบะธ ัะตะณะธัััั), operated by the Registry Agency (ะะณะตะฝัะธั ะฟะพ ะฒะฟะธัะฒะฐะฝะธััะฐ).- Search: By UIC/EIK number (exact match) or by company name in Cyrillic (fuzzy match) via pre-indexed Open Data and live Trade Register API
- Company Profile: 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
- Shareholders: 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
- Ultimate Beneficial Owners: Live UBO data from beneficial ownership declarations in the Trade Register
- Onboarding Profile: Fast company lookups from pre-indexed Open Data with live API fallback
- Documents: Trade Register Extract (always available), Articles of Association, Financial Statements, and 25+ additional conditional document types
- Activity Codes: NKID/NACE/ISIC classification chain, all deterministic (no AI inference)
๐ญ๐บ Hungary
Sole Trader (Egyรฉni Vรกllalkozรณ) CoverageHungary now covers sole traders in addition to commercial companies, sourcing data from a second registry, the NAV EVNY (Egyรฉni Vรกllalkozรณk Nyilvรกntartรกsa), operated by the Hungarian Tax Authority.- Search: 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.
- Company profile: 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.
- Documents: EVNY extract available as a PDF (screenshot-based), included free with the profile.
- Status mapping: Supports all EVNY statuses: operating (Mลฑkรถdล), dormant (Szรผnetelล), authority-suspended (Felfรผggesztett), and terminated (Megszลฑnt), with proper
activeflag and closure reason mapping. - Pricing: Sole trader profiles use fixed pricing only (no variable TRE cost). Budget precheck adapted accordingly.
API
Representation Mode for Legal RepresentativesLegal representatives now include arepresentationMode field indicating how a representative can bind the company. The field specifies whether signing authority is sole (can act alone) or joint (must act with others), with optional minimumSignatories for joint representation or namedCoSigners for joint representation with specific named individuals.Available for: Hungary (HU), Latvia (LV), Greece (GR), Germany (DE), Switzerland (CH), Finland (FI), Estonia (EE)- Hungary: Extracted from TRE ยง13 โegyรผttesโ/โรถnรกllรณโ markers (deterministic)
- Latvia: Mapped from UR API
rightsOfRepresentation.type(deterministic) - Greece: Enriched from GEMI boolean flags for ฮฮ companies
- Germany, Switzerland, Finland: AI-extracted from trade register documents (including named co-signers when specified)
- Estonia: Sourced from the RIK
esindus_v1endpoint โsolewhen the person holds exclusive representation rights (ainuesindusoigus_olemas: JAH). Not set forEIorEI TEA(unknown/cannot determine)
Countries
๐ญ๐บ Hungary
- Fixed company status detection for deleted companies. Companies with a deletion date (โTรถrlรฉs hatรกlyaโ) 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 (โMegjegyzรฉsโ) 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).
๐ธ๐ฎ Slovenia
New Country: Slovenia IntegrationWeโve added full support for Slovenia, sourcing all data from AJPES (Agency of the Republic of Slovenia for Public Legal Records and Related Services), the official operator of the Slovenian Business Register (ePRS).- Search: Full-text search by company name, registration number, or tax number across 290,000+ entities
- Company profile: Legal name, status, legal form, registration date, address, share capital, and legal representatives
- Shareholders: Individual and corporate shareholders with equity interests and ownership percentages (d.o.o. companies)
- Trade Register Extract: Digitally signed PDF from AJPES, available for all court-registered entities
- Onboarding profile: Fast company lookup (~1s) from synchronized PRS Open Data
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.
๐ช๐ช Estonia
- Partnership shareholders: General partnerships (Tร) and limited partnerships (Uร) now return shareholders. Partners (TOSAN/UOSAN/EUSOS/EUSOS2) are extracted from
kaardile_kantud_isikudand returned as shareholders alongside their legal representative entries. Limited partners include their capital contribution (nominalCapitalHeld). Partners holding multiple roles (e.g. EUSOS + UOSAN) are deduplicated by registry code, keeping the entry with capital contribution data. - Nominal capital precision fix: Shareholder
nominalCapitalHeldamounts for Oร/AS companies now preserve full decimal precision (e.g.10931254.40instead of being truncated to10931254). - Consistent entity IDs: All person mappers (legal representatives, shareholders, other key persons) now use
isikukood_registrikood(registry code for companies, personal ID for individuals) instead of the internal RIK record ID (kirje_id). This ensures the same entity has a consistent ID across all sections of the response. Falls back tokirje_idfor foreign companies that lack a local registry code. - Birth date extraction: All individual persons (legal representatives, shareholders, other key persons) now include
birthDate. For Estonian nationals, the date is derived from the 11-digit personal identification code (isikukood). For foreign nationals, it is read from thesynniaegfield. - Country of residence: Individual shareholders now include
residenceAddress.countryCodewhen the registry provides theaadress_riikfield (common for foreign shareholders). - Foreign company country codes: Corporate shareholders and legal representatives registered abroad now show their actual country of registration (e.g.
GB,SE,CYM) instead of defaulting toEE. Foreign registration numbers (valis_kood) are also used as the company ID.
New Feature
Workspaces: Per-Client Usage Tracking & Rebilling
Weโve introduced Workspaces, a new feature that lets you split API usage across sub-accounts, clients, or departments for easy cost tracking and rebilling.- Tag requests: Send an
x-topograph-workspace-idheader with any/v2/companyrequest (includingmode: "onboarding") to attribute usage to a specific workspace. The legacy/v2/onboardingroute remains workspace-taggable for backward compatibility. - Manage workspaces: Full CRUD API to create, update, list, and delete workspaces, each with an associated legal entity name
- Usage reporting: New
GET /v2/workspaces/usageendpoint returns per-workspace credit consumption with catalog-item breakdown, filterable by date range - Default workspace: Requests without an
x-topograph-workspace-idheader are automatically tagged to the default workspace (fully backward compatible) - Dashboard support: The billing dashboard now shows a workspace column and supports โSplit by Workspacesโ in the usage graph
Countries
๐ฑ๐ป Latvia
Onboarding Profile & Fast Search: Open Data Batch PipelineLatvia now has synchronized search and an onboarding profile powered by open data from data.gov.lv (~480K entities), providing fast company lookups.- Fast search: Fast search by company name or registration number, with register fallback for supplementary results
- Onboarding profile: Rich company data from synchronized source data (~1s): legal form, status, capital, legal representatives, shareholders (SIA + AS), and ultimate beneficial owners
- 7 data sources: Daily CSV sync: company register, officers, members, stockholders, beneficial owners, equity capitals, and areas of activity
- Address geocoding: Addresses are geocoded with skip-if-unchanged optimization for subsequent refreshes
- Incremental updates: Only companies with actual data changes are reprocessed on refresh runs
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.
Countries
๐ช๐ช Estonia
- Expanded UBO control type coverage: Added support for 5 additional RIK control type codes (
K,C,S,Z,Y), bringing the total from 4 to all 9 codes defined by the Estonian Money Laundering Prevention Act (RahaPTS ยง9). Notably, indirect ownership (K) is now correctly mapped withnature: indirect, and appointment rights (Y) have an explicit mapping instead of relying on the default fallback.
๐ฐ๐พ Cayman Islands
New Country: Cayman Islands IntegrationWeโve added full support for the Cayman Islands, sourcing all data from the General Registry (CIREGISTRY), the official registrar of companies, partnerships, and trusts.- Search - Name-based entity search across 45,000+ registered entities
- Company profile - AI-extracted from the Detailed Search document: legal name, status, legal form, incorporation date, registered office, directors, and shareholders (when disclosed)
- Three document types - Detailed Search, Company Details, and Director Details, all delivered as PDF.
- Fast search - Search sessions are prepared ahead of time to reduce latency.
- Balance monitoring - Internal balance monitoring protects document availability.
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.
Breaking Changes
๐ statusDetailsBeta renamed to statusDetails
The status.statusDetailsBeta field has been promoted to status.statusDetails and is now considered stable. The Beta suffix has been removed.Action required: Update any code reading statusDetailsBeta to statusDetails.All existing values (status, closureReason, closureDate, insolvencyStartDate, additionalInfo) and their semantics are unchanged. A new SPLIT value has been added to closureReason to cover corporate splits.See the Company Status guide for full documentation on the status model, all enum values, country coverage, and usage patterns.Countries
๐ท๐ด Romania
Onboarding Profile: ONRC Open Data Batch PipelineRomania now has an onboarding profile powered by ONRC Open Data (~4.1M entities), providing fast company lookups from synchronized data.- Search: Full-text search by company name, CUI, or registration number
- Onboarding Profile: 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)
- Legal representatives: Individual and corporate representatives with role mapping, birth date, nationality, and addresses
- Activity codes: 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)
- Freshness check: the integration detects new dataset publications on data.gov.ro and refreshes automatically
๐ง๐ช Belgium
Full juridical situation mapping instatusDetailsBelgium now surfaces the complete KBO/CBE juridical situation (A152 code list) in statusDetails, replacing the previous binary active/ceased classification.UNDER_INSOLVENCY_PROCEEDINGfor companies with an open bankruptcy (050) or judicial reorganisation (091) proceeding, withinsolvencyStartDatewhen availableclosureReasonnow populated for closed companies:BANKRUPTCY,VOLUNTARY_DISSOLUTION,ADMINISTRATIVE_DISSOLUTION,COURT_ORDER,LIQUIDATION,MERGER,SPLITlocalNamenow reflects the French juridical situation label (e.g.Ouverture de faillite) instead of the genericActif/Cessรฉ
Features
๐ GPS Coordinates on Addresses
Company addresses now includelatitude and longitude fields, giving you precise geographic coordinates for every geocoded address. These coordinates are derived automatically from the address and are available across all countries.- Ready-to-use coordinates - Latitude and longitude are returned directly in the address object, no extra API call needed
- Map-friendly - Easily plot company locations on a map or calculate distances between companies
Features
๐ Domain-Based Company Search
Search now supports web domain queries. When the search query looks like a domain (e.g.,doctrine.fr, stripe.com, kvk.nl), the system resolves the company behind it and routes to the appropriate countryโs search.- Automatic detection - Domains are detected transparently, including with
https://orwww.prefixes - Cross-country resolution - The resolved companyโs country is used for the search, regardless of the country parameter
- Fallback strategy - If the resolved identifier returns no results, the system retries with the resolved legal name
Countries
๐ซ๐ฎ Finland
Ultimate Beneficial Owners (UBOs)Finland now supports Ultimate Beneficial Owner data, sourced from PRHโs ESR (Beneficial Ownership Register), a separate service from the existing VIRRE Trade Register integration.- Ownership & voting rights - Structured control details with percentage values and nature (direct/indirect)
- Personal details - Name, date of birth, nationality, and residence city (resolved from Finnish municipality codes)
- Entity type awareness - 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 (>25% ownership/voting threshold)
๐ฉ๐ช Germany
WZ 2008 Activity ClassificationGerman 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โs โGegenstand des Unternehmensโ using AI-based classification against all 839 official sub-classes from Destatis.- New
WZ2008field in company profile activities alongside ISIC and NACE - Supports all 839 WZ 2008 sub-classes with German descriptions
- Available in both company profile and onboarding profile
๐ญ๐บ Hungary
Major Rework: Official e-Cรฉgjegyzรฉk API IntegrationWeโ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.- Variable pricing: Unlike flat-rate countries, the Trade Register Extract price depends on the document size. Prices are shown before purchase.
- Budget control: New
profileMaxBudgetparameter lets you set a maximum spend. If the estimate exceeds your budget, the request fails with abudget_exceedederror so you can retry with a higher budget. - Expanded data coverage: 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)
- Field-level data source tracking: Each field in the response includes provenance metadata (
live_from_registryfor TRE-derived data,ai_analysisfor AI-enriched fields like address and legal form,viesfor VAT validation) - Search by VAT number: Search now supports Hungarian VAT numbers (with or without
HUprefix)
๐ซ๐ท France
Deterministic Legal Form & Role Mapping โ AI RemovedWeโ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.- Legal forms โ 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.
- Roles โ 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.
- SIRENE legal forms โ 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.
- Faster response times (no AI calls for legal form or role enrichment)
- Consistent results (deterministic, no variance between requests)
- Lower cost (no LLM token usage for these fields)
- SIRENE-only companies now have the same legal form data quality as RNE companies
๐ฎ๐น Italy
Shareholders as a Standalone DatapointItaly shareholders are now available as an independentshareholders datapoint, separate from the company profile. Previously, shareholder data was bundled into companyProfile and always fetched together. Now you can request shareholders independently or alongside the company profile.- Dedicated
shareholdersdatapoint: fetch shareholders without triggering a full company profile request - Birth data enrichment: individual shareholders are cross-referenced with legal representatives to populate birth date and birth address when available (using the InfoCamere register, which is cached)
- Sole proprietors: correctly return an empty shareholders list, as sole proprietorships have no registered shareholders in the trade register
Countries
๐ธ๐ฌ Singapore
New Country: Full Company Data PlatformSingapore is now available on Topograph, powered by ACRA Open Data (~2.07M entities) and BizFile document purchases:- Search - Full-text search by company name or UEN
- Onboarding Profile - Fast company lookup from ACRA batch data (~3.5s) with formal mappings for status, legal form (ISO 20275), and activity codes (SSIC โ ISIC)
- Company Profile - Detailed company data including shareholders and legal representatives, extracted from purchased Business Profile PDF
- Documents - Business Profile (Trade Register Extract) purchased via BizFile (~60s delivery)
๐ญ๐ท Croatia
Major Performance Improvements & Onboarding ProfileWeโve significantly improved Croatiaโs performance by replacing the browser-based scraper with direct HTTP parsing and optimized API calls. All retrieval times are now dramatically faster:- Onboarding Profile - New lightweight company data endpoint optimized for onboarding flows (~5s)
- Search - ~3-10s
- Company Profile - ~15s (now includes legal representative start dates when available)
- Certified Trade Register Extract - ~5s (previously ~1m30s)
- Shareholders - New standalone shareholders datapoint
- Shared documents information retrieval time - ~7s (previously ~1m30s)
API
๐งพ Expanded VAT Validation to 20 EU Countries
Weโve dramatically expanded VAT validation support from 2 to 20 EU countries. All supported countries now include:- VAT search - Search for companies using their VAT number (with or without country prefix)
- VIES verification - Automatic validation with legally admissible proof (
consultationNumber) - Frontend display - New Tax ID component in company profiles showing verification status with expandable VIES details

For countries with โVAT search onlyโ, 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
taxId field wonโt appear in company profiles.๐งพ Tax ID Support (taxId) - France & Spain
Added a newtaxId field to company profiles that provides structured tax identification information.Key features:- Structured tax ID data - Includes type, value, country, and verification status
- Verification with legal proof - Optional VIES validation provides a
consultationNumber(official EU receipt) for audit purposes - No external calls for basic data - VAT numbers are calculated mathematically (France) or derived from NIF (Spain) without API calls
- Search by VAT - Both countries now support searching by VAT number
- ๐ซ๐ท France: VAT calculated from SIREN using the official formula. Search now supports TVA Intracommunautaire format.
- ๐ช๐ธ Spain: VAT value equals NIF (Nรบmero de Identificaciรณn Fiscal). Note: Having a NIF doesnโt guarantee EU VAT registration (requires ROI enrollment).
The
taxId.value field stores the VAT number WITHOUT the country prefix. The
country is stored separately in taxId.country. The identifiers.VAT field
also stores the VAT value without prefix for consistency.Countries
๐ฌ๐ท Greece
Weโre excited to announce support for Greece company data from the GEMI (ฮฮตฮฝฮนฮบฯ ฮฮผฯฮฟฯฮนฮบฯ ฮฮทฯฯฯฮฟ - General Commercial Registry):- Search - Find companies by GEMI number, VAT number (ฮฮฆฮ), or company name
- Onboarding Profile - Fast, lightweight company data optimized for onboarding flows (~7 seconds)
- Company Profile - Comprehensive company data including legal representatives, shareholders, activities (NACE codes), and share capital (~10 seconds)
- Available Documents - List all available documents including financial statements, articles of association, and official GEMI announcements (~6 seconds)
- Document Download - Retrieve financial statements, articles of association, and official publications (~6 seconds) or Trade Register Extract (~10 seconds) as PDFs
OKOIP (Charities register) integration for additional company data is planned
for a future release.
๐ฑ๐บ Luxembourg
- Improved speed & reliability - Weโve made significant improvements to Luxembourg data retrieval. Company searches, profile lookups, and Trade Register Extract orders are now faster and more reliable.
- Onboarding Profile - Added a new fast onboarding profile endpoint that returns basic company data (name, address, legal form, activities) in ~250-500ms.
๐จ๐พ Cyprus
- Shareholders support - 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.
Countries
๐ฎ๐ช Ireland
Legal Representatives & Shareholders Now AvailableWeโve significantly expanded Ireland data coverage with two major additions:- Legal Representatives - 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
companyProfileresponse. - Shareholders - A new
shareholdersdatapoint extracts ownership information from B1C Annual Return documents. The AI parses member details, share counts, and calculates ownership percentages from the issued share capital.
Both extractions use AI parsing from PDF documents. Role standardization and
shareholder type determination are AI-inferred. Shareholders are only
extracted for active companies.
๐ง๐ช Belgium
FixedrepresentedBy 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 representedBy field.Features
Designee Role in Relationships Table
Added a new Designee 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 โDesigneeโ role badge. This provides clearer visibility into who actually represents corporate officers.- Designees are shown as distinct entities in the relationships table
- Expanding a company legal rep now shows the designee in the details section
- Added info tooltips to all role badges explaining their meaning
๐ฐ Financial Data Analysis
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 Financial Data Extraction documentation for details.Platform
๐ Improved PDF Export
Enhanced PDF export with improved visual design, correct logo rendering, and better alignment with the frontend color palette.API
๐ Enhanced Search Results with Match Reason
Search results now include amatchReason field that provides detailed information about why a result was returned:-
matchType- Indicates the type of match:id- Guaranteed 1:1 match from an ID-based search (e.g., VAT number, CCIAA+REA)exactLegalName- The legal name exactly matches the search querypartialId- Matched by a partial identifier not guaranteed unique (e.g., REA without CCIAA)default- Used when the exact matching criteria is unknown
-
identifier- Shows which identifier matched (when applicable), with typed definitions per country
๐ฎ๐น๐ซ๐ท Typed Country Identifiers
Introduced typed identifier definitions with full OpenAPI documentation:- Italy: VAT, Codice Fiscale, CCIAA, REA Code
- France: SIREN, SIRET, TVA Intracommunautaire, RNA, RNA Alsace-Moselle
Countries
๐ป๐ฌ British Virgin Islands
Weโre excited to announce support for British Virgin Islands (BVI) company data from the BVI Financial Services Commission (FSC) Public Search:- Search - Find companies by name or company number (numeric or alphanumeric format like
L658) - Onboarding Profile - Fast, lightweight company data optimized for onboarding flows including legal form, status, and company type classification
- Company Profile - Comprehensive company data including legal representatives and shareholders when disclosed, extracted from the Trade Register Extract using AI parsing
- Trade Register Extract (Certificate of Good Standing) - Official PDF document from the BVI FSC containing company registration information
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.
๐ฑ๐ฎ Liechtenstein
Weโre excited to announce support for Liechtenstein company data from the official Handelsregister (Trade Register):- Search - Find companies by name or FL registration number (e.g.,
FL-0002.658.754-1) - Onboarding Profile - Fast, lightweight company data optimized for onboarding flows including legal form, status, and registration details
- Company Profile - Comprehensive company data including legal representatives, shareholders, and share capital, extracted from the Trade Register Extract using AI parsing
- Trade Register Extract - Official PDF document from the Liechtenstein Handelsregister containing complete company registration information
๐ฑ๐ป Latvia
Weโre excited to announce full support for Latvia company data from the Enterprise Register (Uzลฤmumu reฤฃistrs):- Search - Find companies by name or registration number (11-digit identifier, e.g.,
40103217882) - Company Profile - Comprehensive company data including legal form, status, capital, activities (NACE codes), legal representatives, shareholders, and other key persons (~15 seconds retrieval time)
- Ultimate Beneficial Owners - UBO data with ownership percentages and control details
- Certified Trade Register Extract - Official PDF extract from the Enterprise Register (~25 seconds retrieval time)
- Articles of Association - Company statutes and amendments (~25 seconds retrieval time)
- Financial Statements - Annual reports in PDF format (~25 seconds retrieval time)
- Other Registry Documents - Registration certificates, shareholder registers, board protocols, and more (~ 25 seconds retrieval time)
๐ธ๐ฐ Slovakia
Weโre excited to announce full support for Slovakia company data from the RPO (Register of Legal Entities, Entrepreneurs and Public Authorities) and ORSR (Commercial Register):- Search - Find companies by name (partial match supported) or IฤO (8-digit Organization Identification Number)
- Company Profile - Comprehensive company data including legal representatives, shareholders, share capital, business activities, and more. (~20 seconds retrieval time)
- Trade Register Extract - Official PDF extract from the Commercial Register in mixed English and Slovakian (~15 seconds retrieval time)
๐ฌ๐ฌ Guernsey
Weโre excited to announce full support for Guernsey company data from the Guernsey Registry (GFSC):- Search - Find entities by name or registration number with prefix (e.g.,
CMP10001,FND167,LLP149) - Company Profile - Comprehensive company data including legal representatives, other key persons, activities, and addresses (~15 seconds retrieval time)
- Trade Register Extract - Official Statement of Register PDF for companies, foundations, partnerships, charities, and non-profits (~1-3 minutes retrieval time)
- Certificate of Good Standing - Official certificate confirming current good standing (~1-3 minutes retrieval time)
- Certificate of Incorporation - Historical incorporation certificate (~1-3 minutes retrieval time)
- Articles of Association - Constitutional documents and amendments (~1-3 minutes retrieval time)
- Other Filed Documents - Annual validations, resolutions, and other registry filings (~1-3 minutes retrieval time)
CMP (Companies), FND (Foundations), LLP (Limited Liability Partnerships), LP (Limited Partnerships), CH (Charities), and NP (Non-Profit Organisations).For detailed information about Guernseyโs identifier system and available features, see our Guernsey documentation.๐จ๐ฟ Czechia
- UBO support disabled - 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.
Features
Shareholders Extraction (Alpha)
Weโre introducing a newshareholders 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.Currently available for France (FR), United Kingdom (GB), and Belgium (BE).For more details, see our Shareholders Extraction documentation.Countries
๐จ๐ญ Switzerland
- Trade Register Extract now available for all 26 cantons - 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.
๐ฏ๐ช Jersey
Weโre excited to announce full support for Jersey company data from the Jersey Financial Services Commission (JFSC) Registry:- Search - Find companies by name or registration number (4-7 digit numeric identifier)
- Onboarding Profile - Fast, lightweight company data optimized for onboarding flows including legal form, status, and registration date
- Company Profile - Comprehensive company data including legal representatives (directors, secretary) and shareholders when disclosed (~1 minute processing time)
- Entity Profile Report - Official PDF document from the JFSC containing complete company registration information (~1 minute retrieval time)
๐ฒ๐บ Mauritius
Weโre excited to announce full support for Mauritius company data:- Search - Find companies by name, File Number, Business Name, or BRN
- Onboarding Profile - Fast, lightweight company data optimized for onboarding flows (typically ~3 seconds)
- Company Profile - Comprehensive company data including legal representatives, shareholders, capital, and activities (typically ~15-20 seconds)
- Trade Register Extract - Official PDF document from the Corporate and Business Registration Department (CBRD)
C227332) as the primary identifier, with support for both domestic companies and Global Business Companies (GBC).๐ฒ๐จ Monaco
- Initial support for Monaco - Weโre excited to announce support for Monรฉgasque companies with our integration of the RCI (Rรฉpertoire du Commerce et de lโIndustrie) register! Currently available features:
- Company search by name - Find Monรฉgasque companies using their registered business names
- Company search by RCI number - Direct lookup using Monaco RCI registration numbers (format:
YY[A-Z]{1,2}\\d{4,5}; legacy civil alias likeYYSC#####is normalized toYYC#####) - Fast onboarding-style company data - Lightweight company data optimized for onboarding flows including legal form, activities, and address
companyProfile- Comprehensive company information extracted from the trade register extract, including legal representatives, capital, registration dates, and enriched data (~1 minute processing time)- Trade Register Extract - Official PDF extract from RCI containing complete company registration information including legal representatives, activities, capital, and status (~1 minute retrieval time)
๐ง๐ช Belgium
- Improved performance and robustness - Enhanced speed and reliability for Belgian company data retrieval operations.
๐ญ๐ฐ Hong Kong
- Restored
companyProfileandregisterExtractfunctionality and significantly improved system robustness for Hong Kong data retrieval.
๐ญ๐ท Croatia
- Initial support for Croatia - Weโ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:
- Company search by name - Find Croatian companies using their registered business names
- Company search by MBS - Direct lookup using the 9-digit company registration number (e.g.,
080000376) - Company search by OIB - Direct lookup using the 11-digit tax identification number (e.g.,
81793146560) companyProfile- Comprehensive company information including status, legal form, legal representatives, shareholders, supervisory board members, share capital, and business activities (~15s retrieval time)- Certified Trade Register Extract - Official PDF extract from Sudreg containing current company information (~1m30s retrieval time)
- Financial Statements - Balance sheets, profit & loss statements, notes, and profit distribution decisions from RGFI/FINA (~1m30s retrieval time)
- Constitutional Documents - Articles of association and minutes of establishment
- Registry Documents - Registration decisions, announcements, OIB certificates, and other court filings
Platform
Ownership Graph Enhancements
Weโve significantly improved our ownership graph feature with better control and visualization:- Budget control - Set a maximum credit budget when requesting the ownership graph to control traversal costs
- Interactive visualization - The ownership graph now displays as an interactive diagram with nodes representing companies and individuals, and edges showing ownership percentages
- Traversal transparency - See exactly why the graph stopped (completed, budget exhausted, depth limit) and how many companies were fetched or skipped
Application Redesign
Weโve made numerous improvements to make the experience smoother and the interface has been globally enhanced.Key improvements:- Automatic document listing - Since document listing is free, it is now always requested automatically when you open a company
- New relationships view - People appearing in multiple roles (shareholder + UBO for example) are now automatically grouped together, with advanced filters and customizable columns
- Interactive map for establishments - The establishments section now displays an interactive map with Street View
- Real-time updates - Requested data and documents now appear in real-time, without reloading the page
- Request history improvements - Access all your previous requests through infinite scroll, and switch between โAll requestsโ (organization scope) and โMy requestsโ views
Platform
๐ Legal Representative Data Model Enhancement
- Added
representedByfield for corporate legal representatives - When a company (personne morale) serves as a legal representative, you can now see the physical person who represents that company. This captures the โreprรฉsentant permanentโ (permanent representative) commonly found in French documents or โvertreten durchโ in German documents.
โ ๏ธ Deprecations
- Removed
sourcefield from shareholders - Thesourcefield has been temporarily removed from shareholder data. Weโre working on a more comprehensive solution for tracking data provenance that will be introduced in a future release.
Countries
๐ช๐ธ Spain
- Improved speed and reliability - Spanish company data operations are now significantly faster with parallel request handling and automatic retry on slow connections
- IRUS as primary identifier - 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
- Available documents with pricing - Trade register extracts and financial statements show pricing before download
๐ฎ๐ช Ireland
- Full access to CRO documents - You can now purchase and download documents from Irelandโs Companies Registration Office:
- Company Printout - Official trade register extract with current company details
- Letter of Status - Official letter confirming company standing
- Annual Returns - Yearly company filings including financial statements (B1C, B1)
- Constitutional Documents - Company constitution and incorporation documents
- Director/Secretary Filings - Appointment and resignation records (B10)
- Charge Documents - Mortgage and charge registrations (C1, C6)
- Share Capital Documents - Allotment and capital structure filings (B5, B7)
- Resolutions - Special and ordinary shareholder resolutions (G1, G2)
The average document download time is ~2 minutes.
Platform
๐ Onboarding Profiles
Weโve expanded fast onboarding-style company retrieval (today:POST /v2/company with mode: "onboarding"; previously documented as the Onboarding Profile flow) to support more countries:- ๐ง๐ช Belgium (BE)
- ๐ฉ๐ฐ Denmark (DK)
- ๐ซ๐ท France (FR)
- ๐ณ๐ฑ Netherlands (NL)
- ๐ธ๐ช Sweden (SE)
- ๐ฌ๐ง United Kingdom (GB)
Countries
๐ธ๐ช Sweden
- Offering access to more Bolagsverket documents - You now have access to the following documents from the register :
- Certified Trade Register Extract - Official & certified PDF extract from Bolagsverket containing information about the company (~3 minutes retrieval time)
- Articles of association - Official PDF from Bolagsverket indicating business activities, registered office of the company, and so on (~ 3 minutes retrieval time)
- Statutes - Official PDF from Bolagsverket containing information about the company (~3 minutes retrieval time)
- Ultimate Beneficial Owners extract - Official PDF from Bolagsverket containing information about the ultimate beneficial owners of the company (~3 minutes retrieval time)
- Annual reports (all years compilation) - Official PDF from Bolagsverket containing financial informations of the company (~3 minutes retrieval time)
- Minutes (all years compilation) - Official PDF from Bolagsverket containing notes from board and general meetings (~3 minutes retrieval time)
- Current assignments - Official PDF from Bolagsverket containing information about a personโs or companyโs current assignements in other entities (~3 minutes retrieval time)
- Ultimate Beneficial Owners - Extracted from the Ultimate Beneficial Owners extract: Bolagsverket (the Swedish Companies Registration Office) reports control extent (โOmfattningโ), 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.
Platform
๐ Streaming Search
- Progressive search results - Search endpoints now support streaming mode via the
stream=truequery 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. - Server-Sent Events (SSE) - Streaming search uses SSE format with named events (
progress,complete,error) for real-time result updates - CLI support - The
topoCLI tool now supports--streamflag for streaming search results
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.
Application performance
Minor improvements of the backoffice interface performance.Countries
๐ฉ๐ช Germany
- Hybrid search architecture - Germany now uses three complementary search sources:
- Fast search - Fast results from weekly-refreshed active company data
- Live Unternehmensregister search - Direct API queries for active companies in HRB, HRA, Genossenschaftsregister, Partnerschaftsregister, and Gesellschaftsregister registers
- Live Handelsregister VR search - Direct queries for non-profit organizations in the VR register
- Enhanced search recall and robustness - By combining cached and live sources, search now provides higher recall and better fault tolerance. If one source fails, others continue to provide results.
Platform
๐ณ Auto Top-Up
- Automatic credit replenishment - 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).
Countries
๐ฉ๐ช Germany
- Improved speed - Enhanced performance across all German company data operations, resulting in faster response times for company profile retrieval, document listing, and document downloads.
- Vereinsregister (Non-Profit Register) support - Introduced support for the Vereinsregister (VR register), enabling access to non-profit organization data in Germany. Currently available features:
- Trade Register Extract (Aktueller Abdruck) - Official PDF extract from the Vereinsregister containing current company information
๐ท๐ด Romania
- Initial support for Romania - Weโre excited to announce support for Romanian companies with our integration of the ONRC (Romanian trade register). Currently available features:
- Company search by name - Find Romanian companies using their registered business names
- Company search by tax identification number (CUI) - Find Romanian companies using their Romanian tax numbers
- Company search by Ordine Rc Number (Romanian company registration number) - Find Romanian companies using their national Romanian registration numbers
- Certified Trade Register Extract - Official & certified PDF extract from ONRC containing information about the company (~2 minutes retrieval time)
companyProfile- Access comprehensive company information including status, legal form, address, legal representatives, shareholders, company establishments and much more
Countries
๐ฉ๐ช Germany
- Improved speed and robustness - Enhanced performance and reliability across all German company data operations, including company profile retrieval, document listing, and document downloads.
๐ญ๐บ Hungary
- Initial support for Hungary - Weโre excited to announce support for Hungarian companies with our integration of the Cรฉgszolgรกlat (Hungarian company information register). Currently available features:
- Company search by name - Find Hungarian companies using their registered business names
- Company search by registration number - Find Hungarian companies using Hungarian registration numbers
- Company search by tax number - Find Hungarian companies using their national Hungarian tax numbers
companyProfile- Access comprehensive company information including status, legal form, address, legal representatives and share capital- Trade Register Extract - Official PDF extract from Cรฉgszolgรกlat containing information about the company (~2 minutes retrieval time)
Countries
๐ธ๐ช Sweden
- Initial support for Sweden - Weโre excited to announce support for Swedish companies with our integration of the Bolagsverket (Swedish Companies Registration Office) register! Currently available features:
- Company search by name - Find Swedish companies using their registered business names
- Company search by registration number - Direct lookup using Swedish registration numbers
companyProfile- Access comprehensive company information including status, legal form, address, legal representatives and other key personsavailableDocuments- Access annual reports from Swedish companies when available (ZIP format)
Platform
- Improved stability in Documents section.
- 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.
- Removed last year financial statement shortcut support as part of the document ID cleanup.
Countries
๐จ๐พ Cyprus
- Initial support for Cyprus - Weโ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:
- Company search by name - Find Cypriot companies using their registered business names
- Company search by registration number - Direct lookup using Cyprus registration numbers with Greek prefixes (ฮฮ, ฮฮ, ฮฮ, ฮฃ)
companyProfile- Access comprehensive company information including status, legal form, address, and legal representatives- Trade Register Extract (Study File) - Official PDF extract from DRCOR containing complete company registration history, officers, shareholders, filings, and status since incorporation (~2 minutes retrieval time)
- Multiple company types - Support for Private Limited Companies, Overseas Companies, Sole Traders, and Partnerships
Estonia ๐ช๐ช
- You can now search for available documents !
- Trade Register Extract - Official PDF extract from RIK containing complete and extensive company information
- Articles of Association (PDF)
- Annual reports (PDF or XBRL)
Countries
๐จ๐ญ Switzerland
Enhanced Integration for Speed and ReliabilityWeโ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.Additionally, the certificate of incorporation is now available for Swiss companies, providing access to the official founding document.Platform
- Improved data management in web interface (request status indicator and data refresh)
- Fixed display of the map when a company has registered headquarters
- Fixed data points selection when changing countries, i.e : if โavailable documentsโ 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.
Platform
๐ Request Metadata Field
Weโve introduced a newmetadata field on the /company endpoint that enables stateless request tracking without requiring local state management.Key Features:- Pass custom metadata - Include any JSON-serializable data (object, string, number) with your company data requests
- Automatic passthrough - Your metadata is returned with polling responses and webhook notifications
- Stateless tracking - Associate requests with your internal systems without maintaining a local state database
- Perfect for webhooks - Correlate asynchronous webhook callbacks with the original request context
Countries
๐ฉ๐ช Germany
Improved Document Download RobustnessWeโ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โre ready when you need them.While weโ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.
๐ช๐ธ Spain
Enhanced Document OperationsWeโve significantly improved the speed and reliability of document operations for Spanish companies.Platform
๐ Company Monitoring (Beta)
New Feature: Real-time Company Monitoring with AI-powered Change Detection
- Automated daily checks - Monitors run every 24 hours to detect changes in company profiles, ownership, and legal status
- AI-powered change detection - Intelligently identifies meaningful changes while filtering out noise
- Smart categorization - Changes are classified into 7 categories:
status,address,ownership,financial,legalRepresentatives,other, anddisappeared - Real-time webhooks - Instant notifications via webhook when changes are detected
- Automatic deactivation - Monitors automatically stop when companies cease to exist, with a final notification
This feature is currently in beta. Weโre actively collecting feedback to
refine change detection accuracy and expand country coverage. Contact
support@topograph.co to participate in the beta program.
๐ Document Metadata Simplification
Weโve simplified document metadata fields for better consistency and clarity:- Removed
nameInEnglishanddescriptionInEnglishfields - These redundant fields have been removed from the API response - Standardized
namefield - Now always contains the original document name in the local language of the country where it was issued - Standardized
descriptionfield - Now always contains the document description in English
Countries
๐ฉ๐ช Germany
Intelligent ID-Based Search EnhancementsWeโve significantly improved the German company search with intelligent ID parsing and prioritization:- ID Extraction: 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., โMunchenโ matches โMรผnchenโ).
- Full ID Precision: When all three ID components are detected and yield an exact match, returns a single precise result without name search fallback.
- Partial ID Prioritization: For queries with 1-2 ID components, partial ID matches are ranked first, followed by name search results (deduplicated by ID).
- Robust Fallback: If full ID search fails or query lacks ID components, seamlessly falls back to comprehensive name search.
๐ต๐ฑ Poland
Ultimate Beneficial Owners SupportWeโve added comprehensive UBO (Ultimate Beneficial Owner) support for Polish companies through integration with CRBR (Centralny Rejestr Beneficjentรณw Rzeczywistych):ultimateBeneficialOwners- Access beneficial ownership information from Polandโs official UBO register for both KRS and NIP companiesubo_extractdocument - Official PDF extract from CRBR, conditionally available only when UBO data exists
- Automatic XML conversion - 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 e-sprawozdania.mf.gov.pl
- Dual format availability - Both the original XML and converted PDF are stored and accessible
- Seamless handling - Conversion happens transparently during document retrieval with graceful fallback to XML if conversion fails
Platform
๐ AI-Powered Financial Data Extraction (Beta)
Beta Feature: Structured Financial Data Extraction
- Automatic extraction - No additional configuration needed; extraction happens automatically during document post-processing
- Comprehensive data capture - Extracts income statement items, balance sheet components, fiscal periods, and accounting metadata
- Multi-language support - Works with financial statements in various languages and formats
- Structured output - Financial data is returned in the
extractedData.financialDatafield within financial statement documents
- Income statement: revenue, operating income, depreciation, net income
- Balance sheet: assets (fixed/current), equity, liabilities (current/non-current)
- Metadata: fiscal year dates, approval date, currency, accounting standard, statement type
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.
๐ Automatic PDF Document Conversion
Weโve introduced automatic conversion of non-PDF documents to PDF format for easier handling and viewing. Supported input formats include:Images: JPG, JPEG, PNG, TIFF/TIF Tabular: CSV, XLS, XLSX Documents: DOC, DOCX, RTF, TXT, XPS, PPT, PPTXHow it works: 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.๐จ Improved Document Download Interface
The frontend document download experience has been completely redesigned with significant UX improvements:- Enhanced metadata display - Richer, more organized presentation of document details including descriptions, dates, and periods
- Seamless raw + PDF handling - Clear visual distinction between original documents and their PDF conversions with dedicated download actions for each
- Improved row interactions - Intuitive click-to-request functionality for pending documents with visual feedback
- Better visual hierarchy - Cleaner layout with icon-only type column and expanded space for document names and metadata

โ ๏ธ Deprecations
- Removed
jobs_in_progressfield - This legacy internal field has been removed from API responses for security and clarity - Deprecated
main_article_of_associationsmart document mapping - Weโve removed the automatic mapping of document IDs tomain_article_of_association. Weโre revisiting this feature with an improved approach and welcome feedback on your document mapping needs - Removed
isConsolidatedfield - 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.
๐ API Response Improvements
- Cleaner error handling - The
errorsfield is now optional and only appears when errors actually occur, reducing response clutter
Countries
๐ฉ๐ช Germany
- Major rewrite for speed and robustness - We rebuilt the Germany integration to significantly improve performance and reliability across all flows: company data retrieval, document listing, and document downloads.
๐ซ๐ฎ Finland
- Initial support for Finland - Weโre excited to announce support for Finnish companies with our integration of the Finnish business registers! Currently available features:
- Company search by name - Find Finnish companies using their registered business names
- Company search by registration number - Direct lookup using Finnish company registration numbers
companyProfile- Access comprehensive company information from Finnish business registers- Trade register extract support - Full document retrieval functionality for Finnish companies
- Article of Association support - Access to company articles of association documents
Platform
๐ Automatic PDF Document Conversion
Weโve introduced automatic conversion of non-PDF documents to PDF format for easier handling and viewing. Supported input formats include:Images: JPG, JPEG, PNG, TIFF/TIF Tabular: CSV, XLS, XLSX Documents: DOC, DOCX, RTF, TXT, XPS, PPT, PPTXHow it works: 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.๐จ Massively Improved Document Download Interface
The frontend document download experience has been completely redesigned with significant UX improvements:- Enhanced metadata display - Richer, more organized presentation of document details including descriptions, dates, and periods
- Seamless raw + PDF handling - Clear visual distinction between original documents and their PDF conversions with dedicated download actions for each
- Improved row interactions - Intuitive click-to-request functionality for pending documents with visual feedback
- Better visual hierarchy - Cleaner layout with icon-only type column and expanded space for document names and metadata

โ ๏ธ Field Updates
- Removed
isConsolidatedfield - 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.
Countries
๐ฎ๐น Italy
- Added support for closed/inactive companies - Implemented fallback mechanism to retrieve data for closed/inactive companies not available in InfoCamere blocchi
- Enhanced shareholder data structure - Fixed missing
idandcountryCodefields for company shareholders to ensure consistent data structure
Countries
๐ซ๐ท France
- Improved KBis retrieval - Weโve made K-Bis acquisition both faster and more resilient
๐ฎ๐ช Ireland
- Enhanced search robustness - Improved error handling for company searches, ensuring more reliable search results when companies are not found
- Better not found company handling - Search operations now return empty results instead of errors when companies donโt exist in the CRO register, while company profile requests properly throw not found exceptions
- Improved address parsing - Enhanced address geocoding accuracy by including Eircode (Irish postal codes) in the address parsing process
๐ฎ๐น Italy
- Fixed financials retrieval bug. We fixed the bug that prevented the retrieval of financial statements for Italian companies.
๐จ๐ฟ Czechia
- Initial support for Czechia - Weโre excited to announce support for Czech companies with our integration of the Czech business registers (ARES & RZP)! Currently available features:
- Company search by name - Find Czech companies using their registered business names
- Company search by registration number - Direct lookup using Czech company registration numbers
companyProfile- Access comprehensive company information from both ARES (Administrative Register of Economic Subjects) and RZP (Trade Register) registers- Trade register extract support - Full document retrieval functionality for Czech companies from the RZP register
๐ฆ๐น Austria
- Added trade register extract support - Full document retrieval functionality for Austrian companies from the Firmenbuch register
๐ต๐ฑ Poland
- Restored and enhanced Poland support - Complete rewrite of Poland integration with improved data mapping and document retrieval
- Dual register support - Full integration with both KRS (National Court Register) and CEIDG (Central Registration of Business Activity) registers
- Enhanced document retrieval - Now supports multiple document types:
- Trade register extracts (current) for both KRS and CEIDG companies
- Historical trade register extracts (full) for KRS companies
- Representatives/proxy documents for CEIDG sole proprietorships
- Improved data mapping - Better handling of company statuses, legal forms, and registration numbers with proper prefix support (krs- and nip-)
- Fixed PDF document downloads - Resolved issues with document retrieval returning JSON instead of PDF files
Platform
๐ Enhanced Search Error Management
- Improved error handling and user guidance - Search operations now provide clearer, more actionable error messages when queries fail due to user input issues
- Better API documentation - OpenAPI specifications now include comprehensive error response examples for both 400 (user errors) and 500 (server errors) status codes
- Consistent error format - Streamlined error response structure with unified guidance messages
๐ Shareholder Capital Fields Restructuring
- Replaced
shareNominalPricewith two distinct fields:nominalCapitalHeld- Total face value or par value of all shares owned by the shareholderpaidInAmount- Actual amount paid by the shareholder, including any share premium
- Key improvements:
- Better support for complex shareholding structures with multiple share classes
- Clear distinction between legal capital (nominal) and actual investment (paid-in)
- More accurate representation of shareholder contributions
- Alignment with international accounting standards
๐ Enhanced Company Date Tracking
- Introduced
incorporationDatefield - Now clearly distinguishes between when a company was legally incorporated/founded versus when it was registered with trade authorities
Countries
๐ฒ๐น Malta
- Much improved robustness - Significantly enhanced system stability and reliability for Malta company data retrieval with better error handling and recovery mechanisms.
- Restored document retrieval - Fixed document access functionality that was experiencing issues, ensuring reliable document retrieval for Maltese companies.
Platform
- Fixed webhook delivery issues - 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.
Countries
๐จ๐ณ China
- Enhanced robustness and improved identifier standardization - Strengthened China implementation with better error handling and system stability. Standardized company identification around the Unified Social Credit Code as the single, authoritative 18-character alphanumeric identifier for all Chinese companies and organizations, replacing previous inconsistent identifier formats.
๐ฒ๐น Malta
- Improved data accuracy and performance - Enhanced Malta company data retrieval with more reliable parsing and faster processing times.
๐ฉ๐ฐ Denmark
- Financial statements and trade register extract support - 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.
๐ช๐ธ Spain
- Enhanced robustness - Improved stability and reliability of Spanish company data retrieval with better error handling and system resilience.
Countries
๐ฉ๐ฐ Denmark
Complete Danish Business register SupportWeโ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.Available Data Points:companyProfile- Complete company information with legal representatives, shareholders, establishments, and other key personnel from the CVR registerultimateBeneficialOwners- Dedicated extraction of beneficial owners (UBOs) separate from legal shareholders, providing enhanced ownership transparency
- Direct CVR Integration - Real-time access to Denmarkโs authoritative business database
- Documents support
Platform
๐ณ New Billing Dashboard & Analytics (Admin-only)
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.- Flexible global filters โ Pick any date range (or quick presets) and choose exactly which users โ plus the API โ you want to analyse.
- Usage analytics โ Interactive bar chart that flips between daily, weekly, or monthly views and can be split by individual user or total.
- Per-request cost tracking โ A detailed table shows the exact credit cost for every request, including ones that incurred no charge.
- CSV export โ Download the full, filtered history (not just the current page) for deeper analysis in your favourite BI tool.


๐ง Field Naming Standardization
- Renamed
englishNametoenglishTranslation- Updated field naming to align with our API naming strategy, maintaining consistency with other translated fields likelegalForm. This change ensures a more coherent and predictable API structure across all data points.
Countries
๐ฎ๐น Italy
- Enhanced search validation - 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
- Improved legal form parsing - Enhanced accuracy and standardization of 70+ Italian legal forms for better company classification. See complete list in our Italy documentation
- Added establishments support - Integrated establishment data with comprehensive location and activity information, including active status indicators
- Enhanced shareholder parsing - Significant improvements to shareholder data extraction, now enabling full support for
graphownership tree analysis - Added search by VAT and tax code - New search functionality allowing company lookup using Italian VAT numbers (Partita IVA) or tax codes (Codice Fiscale)
๐ฌ๐ง United Kingdom
- Improved legal form and role mapping - Enhanced accuracy and standardization of 40+ legal forms and 60+ officer roles with direct mapping to Topograph standards. See complete lists in our UK documentation
- Standardized company identifiers - Cleaned up identifier structure with consistent naming (
companiesHouseNumberandjurisdiction) - Guaranteed SIC codes - Direct SIC codes from Companies House with AI mapping to NACE and ISIC international standards
โจ Week 26 Highlights
- ๐ฎ๐ช Ireland Launch - New support for Irish entities with CRO register integration for company search and profiles
- ๐ New Topograph Portal - Deployed a heavily improved version of our customer portal with enhanced performance, better async handling, and modern design
- ๐ง Enhanced Activity Code Mapping - Improved standardization and accuracy of business activity codes across France, Belgium, and Switzerland
Platform
๐ Portal Redesign (app.topograph.co)
Weโve completely redesigned and rebuilt our customer portal from the ground up, delivering a significantly improved user experience with modern architecture and enhanced capabilities.
- Enhanced Performance - Faster navigation and reduced loading times across all portal features
- Granular Data Point Control - Precise selection and management of requested data points for optimized queries
- First-Class Async Support - Built-in asynchronous request handling with real-time progress tracking and status updates
- Modern Design - Refreshed interface with improved usability and visual hierarchy
- New Data Points Integration - Native support for Establishments and Other Key People with dedicated UI components
- Usage Tracking - Comprehensive analytics and monitoring of API consumption
- Request History - Detailed audit trail of all API requests and responses
- Interactive Ownership Graph - Visual representation of company ownership structures powered by our enhanced graph engine
Countries
๐ฎ๐ช Ireland
- Initial support for Ireland - Weโre excited to announce support for Irish companies with our integration of the Companies Registration Office (CRO)! Currently available features:
- Company search by name - Find Irish companies using their registered business names
- Company search by registration number - Direct lookup using CRO registration numbers
companyProfile- Access comprehensive company information from the Companies Registration Office- Document support coming soon - Full document retrieval functionality will be available in upcoming releases
๐ซ๐ท France
- Fixed activity code mapping - Resolved issues with business activity code standardization and improved accuracy of sector classification for French companies
๐ง๐ช Belgium
- Fixed activity code mapping - Enhanced processing and standardization of Belgian NACE codes, ensuring better alignment with international classification standards
๐จ๐ญ Switzerland
- Fixed activity code mapping - Improved mapping of Swiss business activity codes (NOGA) to standardized formats, providing more accurate industry classification
โจ Week 25 Highlights
- ๐ฏ Enhanced Ownership Graph Analysis - Improved UBO identification with dual calculation methods and better data visualization
- ๐ฉ๐ช Intelligent German Shareholder Computation - Multi-source extraction strategy with automatic fallbacks
- ๐ต๐ฑ Poland Launch - Full support for Polish entities with CEIDG and KRS register integration
- ๐ฆ๐น Austria Launch - Weโre excited to announce support for Austrian companies, financial statements and company informations are available.
- ๐ฑ๐บ Luxembourg Trade register Extract - New comprehensive document access (up to 1 hour retrieval time)
Platform
๐ฏ Enhanced Ownership Graph Analysis
Weโ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.Key Improvements:- Dual calculation methods - Accumulation and domination approaches with 25% ownership threshold
- Corporate UBO flagging when ownership chains end at companies rather than individuals
- Nodes and edges structure for clearer ownership visualization with cross-border support
- Better error handling with partial results, circular ownership detection, and entity deduplication
Countries
๐ฉ๐ช Germany
Enhanced Multi-Source Shareholder Data Extraction- Three-source strategy - Gesellschafterliste extraction, trade register analysis, and financial statement analysis (NEW)
- Multi-source validation combines results from different document types for better accuracy
- Transparenzregister cross-checking and automatic fallbacks when primary data sources are unavailable
- Improved Handelsregister fallback for document listing and retrieval with exponential backoff retry logic
๐ต๐ฑ Poland
Comprehensive Polish Business register Support- Dual register coverage - CEIDG (individual businesses) and KRS (companies) with smart ID prefixes
- Complete data points -
companyProfileandavailableDocumentstailored to entity type - Document support - Trade register extract for both registers, historical extracts for KRS entities
๐ช๐ธ Spain
- Fixed document retrieval and listing - Resolved deployment issue affecting Spanish document access
- Improved parsing of activities - Enhanced extraction and processing for better accuracy
๐ฎ๐น Italy
- Improved parsing of activities - Enhanced extraction and processing for better accuracy
๐ซ๐ท France
- Fixed Ultimate Beneficial Owner retrieval - Resolved UBO data extraction issues for reliable beneficial ownership information
๐ฒ๐น Malta
- Switched companyProfile to async process - Automatic retry mechanism to overcome register instability
๐ต๐น Portugal
- Improved shareholder parsing - Enhanced extraction and processing of shareholder data
๐ฑ๐บ Luxembourg
- Added trade register extract support - Comprehensive functionality for Luxembourg companies (Note: May take up to one hour due to register processing time)
๐ฆ๐น Austria
companyProfile- Access comprehensive company information and legal representatives from the Austrian FirmenbuchavailableDocuments- Document categorization for financial statements and other documents
Platform
- Renamed mostCompleteStatus: The mostCompleteStatus document category has been renamed to mostCompleteArticleOfAssociation to better align with our naming conventions.
Countries
๐ณ๐ฑ Netherlands
- Improved system reliability for Dutch company data retrieval, enhancing stability and reducing error rates.
- Fixed trade register extract ID consistency - Resolved an issue where document IDs would change when only the document was required, ensuring stable document references.
๐ฌ๐ง United Kingdom
- Added establishments support - Integrated with the UK Companies House establishments endpoint to retrieve branch offices, subsidiaries, and other affiliated locations for UK companies.
- Many improvements - Enhanced documents metadata accuracy, fixed trade register extract listing issues, and improved overall system reliability for UK company data retrieval.
๐ซ๐ท France
- Fixed establishments data - Resolved establishment identification by adding SIRET as ID and corrected establishment names for improved accuracy and consistency.
๐ณ๐ด Norway
- Added establishment IDs - Enhanced establishments data by adding proper unique identifiers, improving data structure and referencing capabilities.
๐ฉ๐ช Germany
- Fixed company status for cached requests - Resolved an issue where company status might be returned as unknown when retrieving stored company data, ensuring accurate status information.
๐ต๐น Portugal
- Restored document retrieval - Fixed document access functionality after adapting to changes in the Portuguese registerโs retrieval workflow, ensuring reliable document retrieval for Portuguese companies.
Platform
Major Data Model Enhancements
- Establishments - Now you can retrieve all establishments associated with a company, including branch offices, subsidiaries, and other affiliated locations that operate under the parent companyโs legal identity. This helps you understand a companyโs physical presence and operational footprint.
- Other Key People - 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.
- Phone Numbers - Companies can now include multiple phone numbers in E.164 format (e.g., +33123456789), making it easier to establish contact through official channels.
- Website - Retrieve the official company website URL directly from the API response, providing quick access to the companyโs online presence.
-
Status Details (Beta) - Weโre introducing
statusDetails, which provides enriched information about company status changes, including closure reasons, liquidation details, and important dates. The data model for status details is highly likely to evolve as we gather feedback and adapt to the diversity of register data. As this feature is in beta, weโre actively collecting feedback to refine the data structure and ensure it meets your needs. - Topograph Standard Roles Revision - 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.
Countries
๐ณ๐ด Norway
- Initial support for Norway - Weโre excited to announce support for Norwegian companies, with our integration of the Norwegian Business register (Brรธnnรธysundregistrene)! Currently available data points:
companyProfile- Access comprehensive company information, legal representatives, other key people and establishments from the Norwegian Business register (Brรธnnรธysundregistrene)- Official trade register extract - Access an official PDF extract providing comprehensive company information including all registered data, roles, and establishments. Available in English.
Platform
- Extended data model to include establishment logic, enhancing our ability to capture and process subsidiary and branch office information across all supported countries.
- New values in Topograph Standard for roles
Countries
๐ซ๐ท France
- Added establishments support, enabling retrieval of subsidiary and branch office information for French companies.
- Fixed UBO parsing, improving accuracy and reliability of Ultimate Beneficial Owner data extraction.
Platform
- Enhanced financial statement metadata quality for availableDocuments, improving accuracy and consistency of document classification and information retrieval.
Countries
๐ช๐ธ Spain
- Improved document retrieval system with enhanced robustness and significantly faster processing times, ensuring more reliable access to Spanish company documents.
Countries
๐ณ๐ฑ Netherlands
- Fixed document retrieval and companyProfile to adapt to recent changes on the KVK website, restoring full functionality for Dutch company data access.
๐ญ๐ฐ Hong Kong
- Restored
companyProfileandregisterExtractfunctionality and significantly improved system robustness for Hong Kong data retrieval.
Platform
Key Feature Release
- Company Detention Tree (Beta) - Introducing
graph, 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 โgraphโ datapoint in your API calls.
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โs development and discuss optimal usage patterns.
Countries
๐ฉ๐ช Germany
- Enhanced detention tree reconstruction by incorporating control statements from Register Extract documents, enabling more accurate ownership structure analysis.
Countries
๐ช๐ธ Spain
- Improved robustness and scalability of data processing systems, enhancing overall performance and reliability of Spanish company data retrieval.
๐จ๐ณ China
- Enhanced error handling for cases where company is not found but register is accessible, providing clearer feedback and improved user experience.
๐ฌ๐ง United Kingdom
- Enhanced error handling for cases where companies are not found in the register, providing more informative and user-friendly error messages.
๐ฉ๐ช Germany
- Improved shareholder data extraction from documents, adding support for rotated document processing.
Platform
- Implemented embedding reuse system for standardized activity codes, legal forms, and roles processing, saving up to 1.5 second of processing time per query.
- Fixed error handling for cases when companies are not found, eliminating 500 errors. Users now see a generic โAn Error has occurred in the job statusโ message. Weโre working on improving generic error messages.
Countries
๐ฉ๐ช Germany
- Major Update: Shareholders now derived from Gesellschafterliste. This is preliminary work to enable detention tree reconstruction and UBO identification in Germany. Coming soon!
- Improved robustness of company data retrieval by implementing additional error handling and fallback mechanisms.
- Improved parsing of shareholders data, enhancing accuracy and completeness of ownership information.
- Improved handling of german id including parenthesis.
๐ฌ๐ง United Kingdom
- Fixed Register Extract functionality to adapt to the new Companies House website flow, ensuring reliable document retrieval.
Platform
- Fixed error handling for cases when companies are not found, eliminating 500 errors. Users now see a generic โAn Error has occurred in the job statusโ message. Weโre working on improving generic error messages.
Countries
๐ช๐ธ Spain
- Fixed financial document listing functionality to correctly retrieve and display available financial documents.
Platform
- Optimized request processing pipeline, resulting in an average 2 seconds reduction in response time across all endpoints.
- Fixed performance bottlenecks when processing companies with large document collections by implementing a faster inference endpoint for document metadata processing.
- Enhanced performance logging across the application to better identify and address bottlenecks.
We are actively working on improving overall performance, with a focus on
inference speed optimization. A faster inference solution is currently in
development.
Countries
๐ฎ๐น Italy
- Added support for asynchronous data retrieval from the Italian Chamber of Commerce (Camerale). As a result, companyProfile for Italy is now an asynchronous data point.
๐ฉ๐ช Germany
- Implemented fallback to Handelsregister when Unternehmensregister is unavailable for search and companyProfile.
๐ช๐ธ Spain
- Improved overall speed and reliability of Spanish company data retrieval through infrastructure optimizations.
- 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.
- As a result, companyProfile for Spain is now a partially asynchronous data point.
๐จ๐ณ China
- Improved overall speed and reliability of Chinese company data retrieval through infrastructure optimizations.
๐ณ๐ฑ Netherlands
- Updated document listing functionality to match KVKโs new API specifications, restoring the ability to list available documents for Dutch companies.