# Firmy.cz Scraper - Czech Business Directory Leads (`studio-amba/firmy-cz-scraper`) Actor

Extract Czech business leads from firmy.cz (Seznam). Search by keyword and city for company name, phone, website, full address, category and rating. Data comes straight from the results page. Optional detail enrichment for email and ICO. Export to CSV, JSON or Excel.

- **URL**: https://apify.com/studio-amba/firmy-cz-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 66.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 result scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Firmy.cz Scraper — Czech Business Directory Leads

Extract business leads from [firmy.cz](https://www.firmy.cz), the Czech Republic's biggest business directory (part of Seznam). Search by keyword and city and get company name, phone, website, full address, category and rating — straight from the results pages.

### Why use this actor?

Firmy.cz is where Czechs look up local businesses, so it is the natural source for Czech B2B lead lists. Phone numbers come already revealed (no click-to-show), websites are attached, and addresses are complete. This actor turns any keyword and city into a clean spreadsheet of Czech businesses ready for sales, research or market mapping.

### How to scrape Firmy.cz data

1. Enter a **search query** in Czech — a business type or keyword such as `restaurace`, `instalater`, `advokat` or `kadeřnictví`.
2. Optionally enter a **city** (for example `Praha` or `Brno`) to narrow the results.
3. Set **max results**.
4. Click **Start**. The actor reads the structured data on each results page and returns one row per business.
5. Download as **CSV, JSON, Excel** or via the API.

Every listing on a Firmy.cz results page is published as schema.org `LocalBusiness` data, so name, phone, address, category, geo-coordinates and website come back in one pass. The optional **Fetch details** toggle opens each business page to also read the email and IČO (registration number).

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchQuery` | String | No | Keyword or business type in Czech (default: `restaurace`) |
| `location` | String | No | City to narrow the search (e.g. `Praha`) |
| `fetchDetails` | Boolean | No | Visit each business page to also collect email and IČO. Slower. Default `false` |
| `maxResults` | Integer | No | Maximum number of businesses to return (default: 100) |
| `proxyConfiguration` | Object | No | Apify proxy settings. Default Apify proxy is enough |

#### Example input

```json
{
    "searchQuery": "restaurace",
    "location": "Praha",
    "maxResults": 100,
    "proxyConfiguration": { "useApifyProxy": true }
}
````

### Output

Each result contains:

| Field | Type | Example |
|-------|------|---------|
| `businessName` | String | `"Amiata - La Cucina Toscana"` |
| `category` | String | `"restaurace"` |
| `address` | String | `"náměstí Republiky 1078/1"` |
| `city` | String | `"Praha"` |
| `postalCode` | String | `"11000"` |
| `region` | String | `""` |
| `phone` | String | `"+420 222514141"` |
| `website` | String | `"https://www.amiata.cz/cs/"` |
| `email` | String | Only when `fetchDetails` is on |
| `registrationNumber` | String | IČO, only when `fetchDetails` is on |
| `extraFields` | Object | `{ "rating": 4.6, "reviewCount": 210, "latitude": 50.089, "longitude": 14.43 }` |
| `url` | String | Business page URL |
| `scrapedAt` | String | ISO timestamp |

#### Example output

```json
{
    "businessName": "Amiata - La Cucina Toscana",
    "category": "restaurace",
    "address": "náměstí Republiky 1078/1",
    "city": "Praha",
    "postalCode": "11000",
    "region": "",
    "phone": "+420 222514141",
    "website": "https://www.amiata.cz/cs/",
    "email": "",
    "registrationNumber": "",
    "extraFields": {
        "rating": 4.6,
        "reviewCount": 210,
        "latitude": 50.0897,
        "longitude": 14.4304,
        "description": "Italská restaurace v centru Prahy."
    },
    "url": "https://www.firmy.cz/detail/2679876-amiata-praha.html",
    "scrapedAt": "2026-07-13T09:28:03.000Z"
}
```

### Pagination and coverage

Firmy.cz shows 14 businesses per results page. The actor keeps loading pages until it reaches your `maxResults` or the results run out. Phone, website and address coverage on the results pages is very high — near complete for most categories. Email and IČO live only on the individual business pages, so they require the **Fetch details** toggle (one extra request per business; these runs are resumable if interrupted).

### Cost estimate

The actor uses plain HTTP (no browser), so it is fast and cheap: one request returns 14 businesses. Expect a few thousand leads per US dollar of Apify usage. `fetchDetails` adds one request per business for email and IČO and raises cost and runtime accordingly.

### Limitations

- **Email and IČO need `fetchDetails`.** They are not on the results page.
- **Region/canton is not published** on the listing; city and postal code are.
- Be considerate with very large runs; the actor paginates politely.

### Related Scrapers

- [Panoramafirm.pl Scraper](https://apify.com/jelle.desramaults/panoramafirm-pl-scraper) — Polish business directory leads
- [Allabolag.se Scraper](https://apify.com/jelle.desramaults/allabolag-se-scraper) — Swedish company data, revenue and leads
- [Local.ch Scraper](https://apify.com/jelle.desramaults/local-ch-scraper) — Swiss business directory leads
- [Companies House Scraper](https://apify.com/jelle.desramaults/companies-house-scraper) — UK company registry data
- [KRS Scraper](https://apify.com/jelle.desramaults/krs-scraper) — Polish National Court Register company data
- [Pappers Scraper](https://apify.com/jelle.desramaults/pappers-scraper) — French company registry data

### FAQ

**Do I need a Firmy.cz account or cookies?**
No. Everything comes from public results pages.

**Are the phone numbers pre-revealed?**
Yes. Firmy.cz publishes phone numbers in the page data, so there is no click-to-reveal step.

**Why is email empty?**
Email is only on each business's own page. Turn on **Fetch details** to collect it along with the IČO.

# Actor input Schema

## `searchQuery` (type: `string`):

Keyword or business type to search for, in Czech (e.g. 'restaurace', 'instalater', 'advokat').

## `location` (type: `string`):

Optional city to narrow the search (e.g. 'Praha', 'Brno'). Leave empty to search the whole country.

## `fetchDetails` (type: `boolean`):

Visit each company page to extract email and ICO (registration number). Slower: one extra request per company. Resumable if interrupted.

## `maxResults` (type: `integer`):

Maximum number of businesses to return.

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

Apify proxy settings. Default Apify proxy works for firmy.cz.

## Actor input object example

```json
{
  "searchQuery": "restaurace",
  "location": "Praha",
  "fetchDetails": false,
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "searchQuery": "restaurace",
    "location": "Praha",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/firmy-cz-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 = {
    "searchQuery": "restaurace",
    "location": "Praha",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/firmy-cz-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchQuery": "restaurace",
  "location": "Praha",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call studio-amba/firmy-cz-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=studio-amba/firmy-cz-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Firmy.cz Scraper - Czech Business Directory Leads",
        "description": "Extract Czech business leads from firmy.cz (Seznam). Search by keyword and city for company name, phone, website, full address, category and rating. Data comes straight from the results page. Optional detail enrichment for email and ICO. Export to CSV, JSON or Excel.",
        "version": "0.0",
        "x-build-id": "iiUhCrS1SbIuWDoo3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~firmy-cz-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-firmy-cz-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/studio-amba~firmy-cz-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-firmy-cz-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/studio-amba~firmy-cz-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-firmy-cz-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Keyword or business type to search for, in Czech (e.g. 'restaurace', 'instalater', 'advokat').",
                        "default": "restaurace"
                    },
                    "location": {
                        "title": "City / Location (optional)",
                        "type": "string",
                        "description": "Optional city to narrow the search (e.g. 'Praha', 'Brno'). Leave empty to search the whole country."
                    },
                    "fetchDetails": {
                        "title": "Fetch details (email, ICO)",
                        "type": "boolean",
                        "description": "Visit each company page to extract email and ICO (registration number). Slower: one extra request per company. Resumable if interrupted.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 20000,
                        "type": "integer",
                        "description": "Maximum number of businesses to return.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify proxy settings. Default Apify proxy works for firmy.cz.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
