We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect
Czech Business Registry Integration: ARES, Justice, and Beyond
Connecting to Czech government data sources for comprehensive business intelligence
Prismatic Engineering
Prismatic Platform
Czech Government Data Landscape
The Czech Republic maintains several publicly accessible registries that
provide rich data for business intelligence and due diligence. These
registries are operated by different government agencies, each with its
own API format, authentication requirements, and rate limits. Integrating
them into a unified intelligence pipeline requires careful attention to
data normalization, error handling, and compliance with terms of service.
ARES: Administrative Registry of Economic Subjects
ARES (Administrativni registr ekonomickych subjektu) is the primary Czech
business registry, operated by the Ministry of Finance. It aggregates data
from multiple source registries and provides a unified search interface.
The ARES API accepts queries by company name, ICO (identification number),
or address and returns XML responses containing company details, legal form,
registered address, NACE activity codes, and registration dates.
defmodule PrismaticOsintSources.Adapters.CzechAres do
@ares_base_url "https://ares.gov.cz/ekonomicke-subjekty-v-be/rest"
def search(query, _opts) do
url = "#{@ares_base_url}/ekonomicke-subjekty/vyhledat"
params = %{
obchodniJmeno: query,
start: 0,
pocet: 25
}
case HTTPClient.get(url, params: params) do
{:ok, %{status: 200, body: body}} ->
{:ok, parse_ares_response(body)}
{:ok, %{status: 429}} ->
{:error, :rate_limited}
{:error, reason} ->
{:error, {:ares_unavailable, reason}}
end
end
end
ARES rate limits are generous for individual queries but restrict bulk
downloads. The adapter implements exponential backoff with jitter for
rate-limited responses and caches successful results in ETS with a
configurable TTL (default 24 hours for company data that changes
infrequently).
Justice.cz: Commercial Register
The Justice.cz portal (operated by the Ministry of Justice) provides access
to the full commercial register (obchodni rejstrik), including company
constitutive documents, shareholder information, board member details,
and historical changes.
Unlike ARES which provides summary data, Justice.cz contains the full
legal record: articles of incorporation, annual reports, ownership
transfer documents, and liquidation proceedings. This makes it essential
for deep due diligence but harder to parse.
The Justice.cz data is structured by courts (krajske soudy) and file
numbers (spisova znacka). A company registered at the Municipal Court
in Prague has a file reference like "C 12345 vedena u MestskΓ©ho soudu
v Praze". The adapter normalizes these references into a canonical
format for cross-referencing.
|-----------|--------|-----------------|
ISIR: Insolvency Registry
The ISIR (Insolvenni rejstrik) provides real-time data on insolvency
proceedings in the Czech Republic. For due diligence, this is a critical
data source as it reveals financial distress that may not yet appear in
financial statements.
The ISIR API supports both pull-based queries (search by name or ICO)
and push-based notifications (WebSocket events for new filings). The
adapter subscribes to relevant WebSocket channels for monitored entities,
enabling real-time alerts when a watched company enters insolvency
proceedings.
Czech Sanctions Lists
The Czech National Bank maintains a national sanctions list that
supplements EU and UN sanctions. The adapter fetches this list in CSV
format, parses it into entity records, and makes it searchable through
the standard search/2 interface.
Sanctions matching requires special handling of Czech names with
diacritics. The adapter normalizes names by removing diacritics,
expanding common abbreviations, and generating multiple name variants
for comparison. A match against "Novak" also checks "NovΓ‘k" and
vice versa.
Data Normalization
Each Czech data source returns data in a different format: ARES uses
JSON (recently migrated from XML), Justice.cz provides HTML pages
requiring scraping, ISIR offers a REST API with JSON responses, and
the cadastral office provides XML. The normalization layer transforms
all of these into a unified entity schema.
Address normalization is particularly challenging for Czech addresses.
The system handles street names with Czech-specific conventions
(descriptive numbers vs. orientation numbers), municipality parts
(mistni casti), and postal districts. Addresses are geocoded and
stored with both raw and normalized forms to support both exact
matching and proximity searches.
Rate Limiting and Resilience
Czech government APIs have varying availability and rate limits. The
integration layer implements a circuit breaker pattern per data source:
after 3 consecutive failures, the circuit opens and requests are served
from cache (if available) or return a degraded response indicating the
source is temporarily unavailable.
This resilience pattern is critical for production use where DD reports
must be generated on demand regardless of individual source availability.
The report clearly indicates which sources were consulted, which returned
cached data, and which were unavailable at the time of generation.