We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect
Czech Business Registry Deep Dive: ARES, Justice.cz, and Beyond
A technical guide to querying Czech business registries programmatically. Covers ARES XML API, Justice.cz scraping patterns, Insolvency Registry, and how Prismatic unifies these sources.
Tomas Korcak (korczis)
Prismatic Platform
The Czech Republic maintains several public business registries that provide rich data about companies, their ownership, financial health, and legal status. For OSINT practitioners, due diligence analysts, and compliance teams, these registries are essential data sources. This guide covers how to query them programmatically and how Prismatic unifies them into a single intelligence feed.
The Czech Registry Landscape
|----------|----------|------|--------|
ARES: The Primary Gateway
ARES (Administrativni Registr Ekonomickych Subjektu) is the Czech government's aggregation point for business data. It pulls from multiple source registries and provides a unified API.
Basic ICO Lookup
defmodule PrismaticOsintSources.Adapters.Czech.ARES do
@base_url "https://ares.gov.cz/ekonomicke-subjekty-v-be/rest"
def search(query, opts \\ []) do
url = "#{@base_url}/ekonomicke-subjekty/vyhledat"
params = %{
"obchodniJmeno" => query,
"start" => Keyword.get(opts, :offset, 0),
"pocet" => Keyword.get(opts, :limit, 25)
}
case HTTPClient.get(url, params: params) do
{:ok, %{status: 200, body: body}} ->
{:ok, parse_ares_response(body)}
{:ok, %{status: status}} ->
{:error, {:http_error, status}}
{:error, reason} ->
{:error, reason}
end
end
end
ARES returns JSON with company details: ICO (identification number), name, registered address, legal form, date of establishment, and industry classification (CZ-NACE codes).
Rate Limiting
ARES does not publish official rate limits but enforces them. Through empirical testing, we have established safe limits:
Prismatic's adapter declares these limits in metadata/0, and the pipeline's circuit breaker enforces them automatically.
Justice.cz: The Commercial Register
The Justice Registry (or.justice.cz) provides the official commercial register with director information, shareholder details, and corporate filings. Unlike ARES, Justice.cz does not provide a clean REST API.
Data Available
Access Pattern
Justice.cz exposes a SOAP endpoint and structured HTML pages. Prismatic's adapter handles both:
def search(query, opts \\ []) do
# First: try the structured endpoint
case fetch_from_api(query) do
{:ok, results} -> {:ok, results}
{:error, _} ->
# Fallback: structured HTML parsing
fetch_from_web(query, opts)
end
end
The HTML parsing extracts structured data from the registry's table-based layout, handling Czech diacritics and date formats.
Insolvency Registry
The Czech Insolvency Registry (ISIR) provides data about insolvency proceedings -- a critical signal for due diligence:
def search(query, opts \\ []) do
url = "https://isir.justice.cz/isir/ueu/vysledek_lustrace.do"
params = %{
"ic" => query, # ICO lookup
"typ_osoby" => "P" # P = pravnicka osoba (legal entity)
}
case HTTPClient.get(url, params: params) do
{:ok, %{status: 200, body: body}} ->
{:ok, parse_insolvency_results(body)}
_ ->
{:error, :insolvency_lookup_failed}
end
end
A clean insolvency record is a positive signal. Active proceedings are a red flag. Historical proceedings require investigation into the resolution.
Unifying Multiple Registries
The real power emerges when you combine data from all registries:
def comprehensive_lookup(ico) do
tasks = [
Task.async(fn -> ARES.search(ico) end),
Task.async(fn -> Justice.search(ico) end),
Task.async(fn -> Insolvency.search(ico) end),
Task.async(fn -> TradeRegister.search(ico) end)
]
results = Task.await_many(tasks, timeout: 15_000)
merge_results(results)
end
The merge_results/1 function applies entity resolution to combine data from all sources into a single company profile with confidence scores per field.
Data Quality Considerations
Czech registries have known quirks:
Prismatic handles these by normalizing all data to a common schema, tracking data freshness per source, and weighting more authoritative sources higher in conflict resolution.
Confidence Scoring for Czech Sources
Czech official registries receive high confidence scores in Prismatic's evidence chain:
|--------|-----------------|-----------|
Getting Started
Query Czech registries through Prismatic's unified OSINT interface:
# Using the OSINT API
curl -X POST http://localhost:4004/api/v1/osint/execute_tool \
-H "Content-Type: application/json" \
-d '{"slug": "czech-ares", "input": {"query": "27082440"}, "params": {}}'
Or use the interactive toolbox at /hub/osint/tools to explore all Czech adapters with a visual interface.
Browse all 157 OSINT adapters at [OSINT Sources](/osint/) or learn adapter development in the [Interactive Academy](/academy/).