# Czech Company Registry Scraper for ARES — IČO, VAT & Address (`haketa/czech-ares-scraper`) Actor

Search and scrape the Czech ARES business register: company name, IČO, VAT number (DIČ), address, legal form, NACE industry codes and incorporation date. For KYC, due diligence and B2B. Independent tool, not affiliated with ARES or the Czech government.

- **URL**: https://apify.com/haketa/czech-ares-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Registry Scraper for ARES — IČO, VAT & Address

> **Search and extract the official Czech ARES business register: company name, IČO, VAT number (DIČ), address, legal form, NACE industry codes and incorporation date.** Search by name or look up exact IČO numbers — clean JSON/CSV/Excel in seconds. Built for KYC, due diligence, B2B prospecting and compliance.

[![ARES](https://img.shields.io/badge/Czech-ARES%20Register-11457e)]()
[![IČO & VAT](https://img.shields.io/badge/I%C4%8CO%20%2B%20VAT%20%2B%20Address-2da44e)]()
[![KYC](https://img.shields.io/badge/KYC%20%2F%20Due%20Diligence-8250df)]()
[![Export](https://img.shields.io/badge/Export-JSON%20%2F%20CSV%20%2F%20Excel-fb8500)]()

***

### What This Actor Does

**ARES** is the official register of economic subjects in the Czech Republic. This Actor turns it into structured company data. For each company it returns:

- **Identity** — company name, **IČO** (company ID) and **VAT number (DIČ)**
- **Legal** — legal form (code + label) and incorporation/dissolution dates
- **Location** — full address, street, city, district, region and postal code
- **Industry** — NACE activity codes
- **Link** — the ARES profile URL

Search by company name (paginated across all matches) or look up exact IČO numbers to verify specific companies.

***

### Why Use This

- **KYC & due diligence.** Verify Czech companies by IČO, VAT, address, legal form and status — the identifiers compliance needs.
- **IČO + VAT in one.** The IČO and DIČ are the universal identifiers for Czech businesses — ideal for matching and enrichment.
- **Name search or exact lookup.** Sweep a keyword across the register, or verify a list of IČO numbers.
- **Clean and free.** Reads the official public ARES API — no key, no anti-bot, no browser.

***

### Quick Start

#### Run it in the console (no code)

1. Add **Company name searches** (e.g. `Skoda`, `software`) and/or exact **IČO numbers**.
2. Set **Max companies**, click **Start**.
3. Export as **JSON, CSV, Excel or HTML**, or push to Google Sheets, a webhook or a database.

#### Run it via API (Python)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {"searchTerms": ["software"], "maxItems": 500}

run = client.actor("YOUR_USERNAME/czech-ares-scraper").call(run_input=run_input)

for c in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(c["name"], "·", c["ico"], "·", c["vatNumber"], "·", c["region"])
```

#### Verify a list of IČO numbers (Python)

```python
run = client.actor("YOUR_USERNAME/czech-ares-scraper").call(run_input={
    "icoList": ["00177041", "01731530"],
})
for c in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(c["ico"], c["name"], c["legalForm"], c["address"])
```

***

### Input Parameters

| Field | Type | Description |
|---|---|---|
| `searchTerms` | array | Company names/keywords to search. |
| `icoList` | array | Exact IČO numbers to look up. |
| `maxItems` | integer | Max companies across all searches. `0` = no limit. |
| `maxPages` | integer | Max pages per search (100 per page). Default `40`. |
| `proxyConfiguration` | object | Apify Proxy. Datacenter is enough (public API). |

***

### Output

Each company is one record:

```json
{
  "ico": "00177041",
  "name": "ŠKODA AUTO a.s.",
  "vatNumber": "CZ00177041",
  "legalFormCode": "121",
  "legalForm": "Joint-stock company (a.s.)",
  "address": "tř. Václava Klementa 869, Mladá Boleslav II, 29301 Mladá Boleslav",
  "municipality": "Mladá Boleslav",
  "district": "Mladá Boleslav",
  "region": "Středočeský kraj",
  "postalCode": "29301",
  "naceCodes": ["29100", "45200", "72190"],
  "incorporationDate": "1990-11-20",
  "aresUrl": "https://ares.gov.cz/ekonomicke-subjekty/res/00177041"
}
```

Note: VAT (DIČ) is present for VAT-registered entities; sole traders and non-registered entities may not have one.

***

### Use Cases

#### 1. KYC & onboarding

Verify Czech companies by IČO, VAT, address and legal form for customer/vendor onboarding and compliance.

#### 2. B2B prospecting & enrichment

Build or enrich lists of Czech companies by industry (NACE) and region with their IČO and VAT.

#### 3. Due diligence & risk

Check legal form, incorporation date and status before deals or credit decisions.

#### 4. Market research

Map companies in a sector or region to size a market or track new registrations.

***

### Tips

- **IČO** is the primary company identifier; **DIČ** (VAT) is the tax identifier — both are key for matching.
- **Name search** paginates across all matches; **IČO lookup** verifies exact companies fast.
- **NACE codes** classify each company's activities for sector filtering.
- **Schedule it** with Apify Schedules to monitor changes.

***

### Frequently Asked Questions

**Do I need an account or key?**
No. The ARES API is public and free — no login, key or anti-bot.

**What is IČO / DIČ?**
IČO is the Czech company identification number; DIČ is the VAT number. Together they uniquely identify Czech businesses.

**Does it include directors?**
This Actor returns the core register fields (identity, VAT, address, legal form, NACE, dates). Director/ownership data can be added on request.

**What export formats are supported?**
JSON, CSV, Excel, HTML, or via API — plus Google Sheets, webhooks, Make and Zapier.

***

### Legal & Responsible Use

This Actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by ARES or the Czech government**. All trademarks are the property of their respective owners. It reads only the public ARES register. Comply with applicable terms and data-protection laws.

# Actor input Schema

## `searchTerms` (type: `array`):

Company names or keywords to search (e.g. "Skoda", "stavebni", "software"). Each is searched and paginated.

## `icoList` (type: `array`):

Exact Czech company IČO numbers to look up (e.g. 00177041). Use for verifying specific companies.

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

Maximum companies across all searches. 0 = no limit (100 per page).

## `maxPages` (type: `integer`):

Maximum result pages per search term (100 companies per page).

## `proxyConfiguration` (type: `object`):

Apify Proxy. The ARES API is public — datacenter is enough and enabled by default.

## Actor input object example

```json
{
  "searchTerms": [
    "Skoda"
  ],
  "maxItems": 100,
  "maxPages": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `ico` (type: `string`):

Czech company ID (IČO)

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

Registered name

## `vatNumber` (type: `string`):

VAT number

## `legalFormCode` (type: `string`):

Legal form code

## `legalForm` (type: `string`):

Legal form label

## `address` (type: `string`):

Full address

## `street` (type: `string`):

Street & number

## `municipality` (type: `string`):

Municipality/city

## `district` (type: `string`):

District

## `region` (type: `string`):

Region (kraj)

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

Postal code

## `country` (type: `string`):

Country

## `naceCodes` (type: `string`):

Industry (NACE) codes

## `incorporationDate` (type: `string`):

Incorporation date

## `dissolutionDate` (type: `string`):

Dissolution date

## `lastUpdated` (type: `string`):

Record last updated

## `aresUrl` (type: `string`):

ARES profile URL

## `scrapedAt` (type: `string`):

ISO timestamp

# 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 = {
    "searchTerms": [
        "Skoda"
    ],
    "maxItems": 100,
    "maxPages": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/czech-ares-scraper").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 = {
    "searchTerms": ["Skoda"],
    "maxItems": 100,
    "maxPages": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/czech-ares-scraper").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 '{
  "searchTerms": [
    "Skoda"
  ],
  "maxItems": 100,
  "maxPages": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/czech-ares-scraper --silent --output-dataset

```

## MCP server setup

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

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/nhWLt77iuf4OoI0cX/builds/3ZauCr1OWPdL4ogiF/openapi.json
