🧪 Skills
ARES Business Registry (CZ)
Query Czech ARES business registry by ICO or name with human/JSON/raw outputs, retries, and legal-form decoding.
v0.2.0
Description
name: ares-business-registry description: Query Czech ARES business registry by ICO or name with human/JSON/raw outputs, retries, and legal-form decoding.
ARES Business Registry (CZ)
Use scripts/ares_client.py for ICO lookup and business search.
Working directory
- From workspace root:
python3 skills/ares-business-registry/scripts/ares_client.py ...
- From
skills/ares-business-registry:python3 scripts/ares_client.py ...
Commands
You can run via the wrapper (recommended):
./ares ico <ico>./ares name "NAME" [--nace CODE ...] [--city CITY] [--limit N] [--offset N] [--pick INDEX]
The underlying script also supports:
python3 scripts/ares_client.py search --name "NAME" ...python3 scripts/ares_client.py search --nace CODE [CODE ...] ...python3 scripts/ares_client.py search --name "NAME" --nace CODE ...(combined)
Output modes
- default: human-readable summary
--json: normalized JSON output (stable keys)--raw: full raw ARES payload
Examples
# ICO lookup
python3 scripts/ares_client.py ico 27604977
python3 scripts/ares_client.py ico 27604977 --json
python3 scripts/ares_client.py ico 27604977 --raw
# Search by name
python3 scripts/ares_client.py search --name Google
python3 scripts/ares_client.py search --name Google --limit 3 --json
python3 scripts/ares_client.py search --name Google --city Praha --limit 10 --offset 0
python3 scripts/ares_client.py search --name Google --limit 3 --pick 1
# Search by NACE code (CZ-NACE, exactly 5 digits)
python3 scripts/ares_client.py search --nace 47710 --limit 10 # all clothing retailers
python3 scripts/ares_client.py search --nace 47710 --city Praha --json # clothing retailers in Praha
python3 scripts/ares_client.py search --nace 47710 47910 --limit 5 # clothing retail + mail order
# Combined: name + NACE (AND filter)
python3 scripts/ares_client.py search --name sport --nace 47710 --json # "sport" in clothing retail
Normalized JSON
icooutput:{ "subject": { "name", "ico", "dic", "datumVzniku", "address", "codes", "decoded" } }
searchoutput:{ "query", "total", "items", "picked?" }queryincludes:name(nullable),city(nullable),nace(nullable array),limit,offset
diccan benull.datumVznikucan benull.
Error JSON contract (--json only)
{
"error": {
"code": "validation_error | ares_error | network_error",
"message": "Human readable message",
"status": 429,
"details": {}
}
}
Validation and exits
- ICO: exactly 8 digits + mod11 checksum
- Search: at least
--name(length >= 3) or--nacerequired; both can be combined --nace: exactly 5 digits per code (CZ-NACE format, e.g.47710); multiple codes accepted (space-separated)--limit: default 10, capped to 100--offset: must be >= 0- Exit codes:
0success1validation error2ARES non-OK response3network/timeout
Caching and decoding
- Legal form decoding (
PravniForma) is loaded via POST/ciselniky-nazevniky/vyhledat - Cache path:
skills/ares-business-registry/.cache/pravni_forma.json - Cache TTL: 24h
- In-memory fallback is used if cache file is stale/unavailable
- Curated overrides:
112 -> s.r.o.121 -> a.s.141 -> z.s.701 -> OSVČ301 -> s.p.331 -> p.o.
NACE code search
--nacesends theczNacefield to the ARES complex filter endpoint- Codes must be exactly 5 digits (CZ-NACE_2025 format)
- Multiple codes can be passed (space-separated) — ARES returns entities matching any of them
- When combined with
--name, both filters apply as AND (entities must match name AND have the NACE code) - NACE-only search (without
--name) is supported — useful for browsing all entities in a sector - Common e-commerce NACE codes:
47710— Retail sale of clothing47910— Retail sale via mail order or internet47410— Retail sale of computers and software47750— Retail sale of cosmetic and toilet articles46420— Wholesale of clothing and footwear
- Full CZ-NACE list: https://www.czso.cz/csu/czso/klasifikace_ekonomickych_cinnosti_cz_nace
City filter limitation
--citymaps tosidlo.nazevObce(structured filter).- Matching remains best-effort only; ARES server-side matching/ranking can still return records outside the expected municipality.
Retries and rate limits
- HTTP timeout: connect 5s, read 20s
- Retries for transient failures:
429/502/503/504+ network timeout/connection issues - Backoff:
1s,2s,4s - Honors
Retry-Afterfor 429 where provided
Reviews (0)
Sign in to write a review.
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!