Czech ARES Company Registry Scraper
Pricing
Pay per event
Czech ARES Company Registry Scraper
Look up Czech companies in the official ARES registry by IČO or free-text business name — identity, registered address, NACE activity codes, and active registry sub-sources, as clean, flattened JSON/CSV/Excel rows for KYC, AML, and B2B lead-gen workflows.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
🎯 What this scrapes
The Czech Ministry of Finance publishes company records through ARES (Administrativní registr ekonomických subjektů), a keyless, unauthenticated JSON API with a documented, generous 500-requests/minute ceiling and both ID-lookup and name-search in the same API. No visible rival currently holds a Czech ARES-specific listing on the Apify Store. This Actor takes a batch of IČOs and/or free-text business names, flattens each match into a single typed row, and lets you pick exactly which sections you need so you never pay transfer for data you didn't ask for.
🔥 What we handle for you
- 🧊 Flattens ARES's nested JSON envelope into one clean row — identity, address, NACE codes, and active registrations, picked via a Sections filter so you only pay transfer for what you need.
- 🔢 IČOs stay strings, always — leading zeros never get stripped by a spreadsheet export or an overeager number cast.
- 🔁 We retry transient 429/5xx responses with exponential backoff, honouring Retry-After when ARES sends one.
- 🩹 Per-item fault isolation — one bad IČO or missing sub-key logs a warning and moves on; it never crashes the run.
- 🧱 Honest not-found handling — an unknown IČO or a zero-match search still finishes SUCCEEDED with found: false, never a crashed run.
- 💰 Pay-Per-Event pricing — a delivered answer (found or not) still costs you $0.01; invalid input costs nothing.
- 🧱 Rate-limit-aware pacing — concurrency capped well under ARES's documented 500-requests/minute ceiling, so a big batch never trips the Ministry's throttle.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, ready for JSON / CSV / Excel export straight from the Apify Console.
💡 Use cases
- Run a KYC/AML check on a Czech counterparty by IČO before onboarding.
- Build a Czech B2B prospect list from a batch of business names.
- Verify NACE activity codes and active registrations for a due-diligence file.
- Screen a supplier or partner list for companies missing from the register.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
icos | array | no | ['27074358', '45317054', '00000000'] | Czech IČO company IDs to look up directly via the detail endpoint. Normalized to exactly 8 digits (zero-padded string,… |
searchQueries | array | no | [] | Free-text business names to search via the name-search endpoint. Up to 50 per run, 200 chars each. |
enrichWithDetail | boolean | no | False | For search-mode hits only: follow up each match with a detail lookup (adds VAT ID, founding date, NACE codes, active… |
resultsPerQuery | integer | no | 20 | Page size per search query. v1 fetches one page per query; total_matches on each row tells you if more exist. |
sections | array | no | ['identity', 'address', 'nace', 'registrations'] | Which flattened sections to project per row — the fewer you request, the leaner (and cheaper to transfer) each row is. |
proxyConfiguration | object | no | {'useApifyProxy': False} | ares.gov.cz is a public keyless government JSON API with no anti-bot observed — leave this off unless your account… |
Example input
{"icos": ["27074358","45317054","00000000"],"searchQueries": [],"enrichWithDetail": false,"resultsPerQuery": 20,"sections": ["identity","address","nace","registrations"],"proxyConfiguration": {"useApifyProxy": false}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
query_type | string | Which input list produced this row: 'ico' or 'search'. |
ico | string | 8-digit IČO — the input value (ico-mode) or the matched company's IČO (search-mode). |
ico_id | string | ARES's alternate id for entities lacking a plain ico (search-mode only). |
search_query | string | The free-text query that produced this row (search-mode only). |
total_matches | integer | pocetCelkem for this query (search-mode only). |
found | boolean | False for a 404'd IČO or a zero-match search query — not a failure. |
warning | string | Populated when found is false, a lookup failed after retries, or a requested section degraded. |
name | string | Registered entity name (identity section). |
legal_form_code | string | Legal form code (identity section). |
founding_date | string | ISO YYYY-MM-DD, detail-only (identity section). |
vat_id | string | VAT ID, detail-only (identity section). |
tax_office | string | Tax office, search-mode-only field (identity section). |
last_updated | string | Last-updated date (identity section). |
address_street | string | Registered street (address section). |
address_house_number | string | Registered house number (address section). |
address_orientation_number | string | Registered orientation number (address section). |
address_city | string | Registered city (address section). |
address_postal_code | string | Registered postal code (address section). |
address_country_name | string | Registered country name (address section). |
address_country_code | string | Registered country code (address section). |
address_full_text | string | Full registered address as a single string (address section). |
nace_codes | array | NACE business-activity codes, detail-only (nace section) — empty list when not requested or none on file. |
active_registrations | array | Simplified names of registry sub-sources currently active, detail-only (registrations section) — empty list when not… |
source_url | string | The exact detail or search URL queried for this row. |
scraped_at | string | ISO 8601 UTC timestamp when this row was recorded. |
Example output
{"query_type": "ico","ico": "27074358","ico_id": null,"search_query": null,"total_matches": null,"found": true,"warning": null,"name": "Asseco Central Europe, a.s.","legal_form_code": "121","founding_date": "2004-06-25","vat_id": "CZ27074358","tax_office": null,"last_updated": "2026-08-30","address_street": "Bud\u011bjovick\u00e1","address_house_number": "778","address_orientation_number": "3","address_city": "Praha","address_postal_code": "14000","address_country_name": "\u010cesk\u00e1 republika","address_country_code": "CZ","address_full_text": "Bud\u011bjovick\u00e1 778/3, 14000 Praha","nace_codes": ["6201Z","6202Z"],"active_registrations": ["Obchodn\u00ed rejst\u0159\u00edk","Registr pl\u00e1tc\u016f DPH"],"source_url": "https://ares.gov.cz/ekonomicke-subjekty-v-be/rest/ekonomicke-subjekty/27074358","scraped_at": "2026-09-08T12:00:00+00:00"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.2 | One-off warm-up charge per run |
result-scraped | $0.01 | Per unique dataset item |
Example: 1 000 results at the rates above ≈ $10.20. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
- No auto-pagination across multiple search pages per query in v1 — resultsPerQuery caps at 100 and total_matches tells you if more exist.
- Search is by business name only — not by IČO substring, VAT ID, or address.
- Only current-state data is returned; no historical/change-log data.
- ARES documents a 500-requests/minute ceiling in the Ministry of Finance's open-data docs — we keep concurrency well under it by default, so very large batches take proportionally longer rather than risking a throttle.
❓ FAQ
Do I need an API key?
No. ares.gov.cz is a public Czech Ministry of Finance API and needs no credentials — leave the proxy setting off too.
What happens if an IČO doesn't exist?
The row comes back with found: false and a warning describing what was queried — the run still finishes SUCCEEDED, you're never billed for a failed run just because one IČO was wrong.
Can I search by VAT ID or address instead of a name?
Not in v1 — ARES's keyless search endpoint takes a business name only. Look up the IČO first if you only have a VAT ID or address.
Why do some fields come back null in search mode?
Search rows are lighter than detail records. Set enrichWithDetail to true to fetch the full detail record for each match, or look the company up directly by IČO.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.