# Czech Company Data API: ARES Register Search (`smoked_drift/czech-company-data`) Actor

Czech companies from the official ARES register (Ministry of Finance). Search by name, ICO, legal form, NACE code, tax office or address. Returns ICO, VAT id, address, legal form, dates, register status. CC BY 4.0.

- **URL**: https://apify.com/smoked\_drift/czech-company-data.md
- **Developed by:** [Titouan MARTY](https://apify.com/smoked_drift) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 company records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Czech Company Data API: ARES Register Search

Search Czech companies from **ARES**, the administrative register of economic subjects run by the Czech Ministry of Finance, which consolidates the commercial register, the trade licensing register and several others behind one interface. Filter by name, ICO, legal form, NACE code, tax office or address, and get ICO, VAT id, registered address, legal form, dates and register status as clean JSON.

**No scraping, no API key.** The source is a documented public API under CC BY 4.0, which permits commercial reuse.

***

### What you get

One dataset item per economic subject:

| Group | Fields |
| --- | --- |
| **Identity** | ICO, ARES id, registered name, VAT id |
| **Legal form** | Czech legal form code and the parallel ROS code |
| **Address** | registered address and delivery address, each with street, house and orientation number, municipality, district, region, postcode and country |
| **Dates** | established, dissolved, last updated |
| **Activity** | CZ-NACE codes, plus the older CZ-NACE 2008 set |
| **Administration** | tax office |
| **Register status** | one status per source register: commercial (ROS), public (VR), statistical (RES), trade licensing (RZP), VAT (DPH) and more |
| **Supplementary data** | the per-source record set ARES keeps for the entity |
| **Provenance** | source, licence, attribution and last update date on every row |

***

### Sample output

Real row, trimmed:

```json
{
  "ico": "27074358",
  "name": "Asseco Central Europe, a.s.",
  "vatId": "CZ27074358",
  "legalForm": { "code": "121" },
  "registeredAddress": {
    "text": "Budějovická 778/3a, Michle, 14000 Praha 4",
    "street": "Budějovická",
    "houseNumber": 778,
    "orientationNumber": 3,
    "orientationLetter": "a",
    "municipality": "Praha",
    "municipalityPart": "Michle",
    "postalCode": 14000,
    "region": "Hlavní město Praha",
    "country": "Česká republika",
    "countryCode": "CZ"
  },
  "establishedDate": "2003-08-06",
  "dissolvedDate": null,
  "registrations": {
    "stavZdrojeRos": "AKTIVNI",
    "stavZdrojeVr": "AKTIVNI",
    "stavZdrojeRes": "AKTIVNI",
    "stavZdrojeRzp": "AKTIVNI",
    "stavZdrojeDph": "AKTIVNI"
  },
  "source": {
    "provider": "ARES — Administrativní registr ekonomických subjektů (Czech Ministry of Finance)",
    "licence": "CC BY 4.0"
  }
}
```

***

### Usage

#### Look up specific companies by ICO

```json
{ "ico": ["27074358", "27123707", "29162670"] }
```

The fastest and most precise path.

#### Limited companies matching a name

```json
{ "name": "Stavebni", "legalForm": ["112"], "maxItems": 1000 }
```

`112` is s.r.o., the most common Czech company form; `121` is a.s.

#### Companies in a region

```json
{ "regionCode": "10", "legalForm": ["112", "121"], "maxItems": 1000 }
```

#### VAT-registered businesses in an industry

```json
{ "naceCodes": ["62010"], "maxItems": 1000 }
```

Check the `registrations.stavZdrojeDph` field on the results: `AKTIVNI` means the entity is live in the VAT register, which is a good proxy for actually trading.

***

### Filters

| Field | Notes |
| --- | --- |
| `name` | Registered company name, partial match |
| `ico` | One or more 8-digit ICO numbers |
| `legalForm` | `121` a.s., `112` s.r.o., `101` sole trader, `421` foreign branch… |
| `naceCodes` | CZ-NACE activity codes |
| `taxOffice` | Czech tax office code |
| `addressText` | Free-text address match |
| `municipalityCode`, `districtCode`, `regionCode`, `postalCode` | Structured geography |
| `sort` | By ICO, name or establishment date |
| `maxItems` | Hard cap; ARES itself caps a query at 1000 |

***

### Pricing

| Event | Charged | Covers |
| --- | --- | --- |
| `company-record` | once per company returned | the normalised record |

No scan surcharge. You pay only for the rows you keep.

***

### Reliability

- A **documented public API**, not a web page. No browser, no proxy, no selectors.
- The search endpoint returns the same field set as the per-company detail endpoint — verified — so no second request is needed per row.
- Requests are retried, capped at four in flight, and errors are logged rather than silently dropped.
- Duplicate ICOs across pages are removed before pushing.

***

### Notes and limits

- **ARES caps a single query at 1,000 records.** Ask for more and it returns a 400 with the real count rather than truncating silently — the Actor surfaces that message. To go deeper, slice by region, legal form or name prefix and run several times. This is a property of the source, not of this Actor.
- **An empty query is rejected.** Supply at least one filter.
- **Entities without an ICO are skipped.** ARES also lists foreign companies with a Czech branch that carry no ICO; without a key they cannot be joined to anything, so the Actor counts and drops them. The count appears in the run log.
- **Legal form and tax office are codes, not labels.** ARES returns the numeric code; the code lists are published separately by the Czech statistical office.
- **Some entities are not companies.** The register also holds sole traders, associations, foundations and public bodies.
- **Attribution is required** by CC BY 4.0 and is included on every row.

***

### Data source

[ARES](https://ares.gov.cz/) is operated by the Ministry of Finance of the Czech Republic. The API is free, requires no key, and the data is published under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which permits commercial reuse provided the source is acknowledged.

***

### Related Actors

From the same publisher:

- [Companies House Data API](https://apify.com/smoked_drift/uk-companies-house-data) — 5M+ UK companies, Open Government Licence v3.0
- [French Company Data API](https://apify.com/smoked_drift/french-company-data) — 26M French companies, SIRENE and RNE, Licence Ouverte 2.0
- [Norway Company Data API](https://apify.com/smoked_drift/norway-company-data) — 1.17M Norwegian entities, Enhetsregisteret, NLOD

***

### Support

Missing a filter, or a register field this Actor does not surface? Open an issue on the **Issues** tab.

# Actor input Schema

## `name` (type: `string`):

Full or partial company name as registered, e.g. 'Asseco' or 'Stavebni'.

## `ico` (type: `array`):

Czech company identification numbers, 8 digits, e.g. 27074358. The fastest and most precise path.

## `legalForm` (type: `array`):

Czech legal form codes: 121 for a.s. (joint stock), 112 for s.r.o. (limited), 101 for sole trader, 421 for a foreign entity branch.

## `naceCodes` (type: `array`):

Czech NACE activity codes, e.g. 62010 for computer programming, 41200 for building construction.

## `taxOffice` (type: `array`):

Czech tax office code, e.g. 451 for the Prague tax office.

## `addressText` (type: `string`):

Free-text match on the registered address, e.g. 'Praha' or 'Brno'.

## `municipalityCode` (type: `string`):

Czech municipality code (kodObce), e.g. 554782 for Prague.

## `districtCode` (type: `string`):

Czech district code (kodOkresu).

## `regionCode` (type: `string`):

Czech region code (kodKraje).

## `postalCode` (type: `string`):

Czech postcode, e.g. 14000.

## `sort` (type: `string`):

Order of the results.

## `pageSize` (type: `integer`):

Rows per request. Leave at the default unless you are debugging.

## `maxItems` (type: `integer`):

Hard cap on returned companies. ARES refuses any single query whose result set exceeds 1000 records, so slice by name, region or legal form to go deeper.

## Actor input object example

```json
{
  "legalForm": [
    "112"
  ],
  "pageSize": 100,
  "maxItems": 1000
}
```

# Actor output Schema

## `companies` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "legalForm": [
        "112"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("smoked_drift/czech-company-data").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "legalForm": ["112"] }

# Run the Actor and wait for it to finish
run = client.actor("smoked_drift/czech-company-data").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "legalForm": [
    "112"
  ]
}' |
apify call smoked_drift/czech-company-data --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,smoked_drift/czech-company-data"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/tN8jcvCVQSWCozq6d/builds/jQSw9LvOlBedG3rn2/openapi.json
