# Firmy.cz Business Directory Scraper (`crawlerbros/firmy-cz-scraper`) Actor

Scrape Firmy.cz, the leading Czech business directory. Search by keyword, browse by category and region, or fetch business detail pages directly. Get name, address, phone, email, website, opening hours, IČO, rating and more - no login required.

- **URL**: https://apify.com/crawlerbros/firmy-cz-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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

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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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 Business Directory Scraper

Scrape [Firmy.cz](https://www.firmy.cz), the leading Czech business directory (part of the Seznam.cz network). Search any keyword, browse by category and region, or fetch specific business detail pages — no login, no cookies, no API key required.

### What this actor does

- **Three modes:** `search` (free-text, nationwide), `byCategory` (browse a curated category + one of the 14 Czech regions + optional district), `byUrl` (fetch specific business detail pages)
- **Rich business data:** name, categories, full address (street/city/district/postal code), GPS coordinates, phone, rating and review count, opening status, and more
- **Optional deep enrichment:** turn on `fetchDetails` to additionally pull email, IČO (Czech company ID), a second phone number, and full per-day opening hours from each business's detail page
- **Filters:** city/location text filter, minimum rating, "open now" only, free-text keyword filter
- **Empty fields are omitted** — every record only contains data actually found for that business
- **Full Czech UTF-8 diacritics support** — city names, addresses, and descriptions are preserved exactly (Plzeň, České Budějovice, Žižkov, etc.)

### Output per business

- `businessId`, `sourceUrl` — unique ID and canonical Firmy.cz detail-page URL
- `name`
- `categories[]` — trade/service tags (e.g. `Instalatérství`, `Restaurace`)
- `street`, `postalCode`, `city`, `district`, `fullAddress`
- `latitude`, `longitude`
- `phone`, `phoneSecondary` *(detail only)*, `email` *(detail only)*, `website`
- `icoId` — Czech company registration number (IČO), when the business has one *(detail only)*
- `rating` (0-5), `reviewCount`
- `openNow` (boolean), `openingHoursSummary` (text snippet), `openingHours[]` — per-day breakdown `{day, dayEn, date, hours}` *(detail only)*
- `description`
- `photoUrl`
- `galleryImages[]` — additional photo URLs from the business's detail-page gallery, when published *(detail only)*
- `recordType: "business"`, `scrapedAt`

*(detail only)* fields are only populated when `fetchDetails: true` is set (search/byCategory modes) or when using `mode: byUrl`.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` / `byCategory` / `byUrl` |
| `searchQuery` | string | `instalater` | Free-text keyword (mode=search) |
| `category` | string | `Restauracni-a-pohostinske-sluzby/Restaurace` | Any Firmy.cz category path (mode=byCategory); 41 curated examples listed in the field description |
| `region` | string (enum) | – | One of 14 Czech regions/kraje (mode=byCategory) |
| `district` | string | – | District/city slug within the region, e.g. `praha-1`, `brno-mesto` (mode=byCategory, requires `region`) |
| `urls` | array | – | Firmy.cz detail-page URLs (mode=byUrl) |
| `city` | string | – | Keep only results whose address/city/district contains this text (diacritics-insensitive) |
| `keyword` | string | – | Keep only results whose name/description/categories contain this text |
| `minRating` | number | – | Drop businesses rated below this (0-5) |
| `openNowOnly` | boolean | `false` | Only businesses currently marked open |
| `fetchDetails` | boolean | `false` | Visit each business's detail page for email/IČO/full hours (1 extra request per business) |
| `maxItems` | integer | `30` | Hard cap (1-500) |
| `proxyConfiguration` | object | – | Optional; firmy.cz works without a proxy, the actor auto-escalates to the free AUTO group on 403/429 |

#### Example: search with city + rating filter

```json
{
  "mode": "search",
  "searchQuery": "restaurace",
  "city": "Brno",
  "minRating": 4,
  "maxItems": 50
}
````

#### Example: browse a category by region, with full detail enrichment

```json
{
  "mode": "byCategory",
  "category": "Restauracni-a-pohostinske-sluzby/Restaurace",
  "region": "jihomoravsky",
  "fetchDetails": true,
  "maxItems": 100
}
```

#### Example: fetch specific business pages

```json
{
  "mode": "byUrl",
  "urls": [
    "https://www.firmy.cz/detail/12918549-a-k-servis-praha-stare-mesto.html"
  ]
}
```

### Use cases

- **Lead generation** — build prospect lists of local businesses by trade and region
- **Market research** — analyze business density, ratings, and coverage by city or category
- **Directory aggregation** — mirror or cross-reference Czech business listings
- **Local SEO audits** — check a business's own directory data (address, hours, phone) for accuracy
- **Competitive analysis** — compare ratings and review counts across competitors in a category

### FAQ

**Do I need a Seznam.cz login?** No. Firmy.cz's search, category browsing, and business detail pages are all publicly accessible without an account.

**Does the `city` filter guarantee I only get businesses in that city?** It's a best-effort text filter over the address, city, and district fields. For reliable location scoping, use `mode: byCategory` with `region` (and optionally `district`) — this uses Firmy.cz's own region-scoped URL structure rather than text matching. Note that district names occasionally reference a nearby larger city (e.g. "Plzeňské Předměstí" in Rokycany), so a city filter can rarely surface a match outside the city itself.

**Why does a `website` URL sometimes fail a plain `curl -I` check?** The `website` field links to each business's own external site, not to Firmy.cz. Some small-business sites block simple bot HEAD requests (common shared-hosting/WAF behavior) while working fine in any real browser or a full GET request. `sourceUrl` (the Firmy.cz detail page) and `photoUrl` (Firmy.cz's own CDN) are always directly verifiable.

**What's IČO?** The Czech company identification number (Identifikační číslo osoby), roughly equivalent to a US EIN or UK company number. Only returned when `fetchDetails` is on and the business has one on file.

**Why is `rating` on a 0-5 scale when Firmy.cz shows a percentage internally?** Firmy.cz's structured data reports ratings on a 0-100 scale; the actor converts this to the more familiar 0-5 scale (`rating = internalScore / 20`).

**Can I browse categories not in the dropdown?** Yes — type any Firmy.cz category path into the `category` field (e.g. found while browsing the site, like `Remesla-a-sluzby/Astrologicke-sluzby`). The dropdown lists the ~40 most common categories for convenience.

**How fresh is the data?** Firmy.cz listings are maintained by business owners and Seznam.cz's own data team; most information (hours, ratings) is close to real-time.

**Is this actor affiliated with Firmy.cz or Seznam.cz?** No. This is an independent, third-party actor that reads Firmy.cz's publicly available pages. It is not affiliated with, endorsed by, or sponsored by Seznam.cz.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

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

Free-text keyword, e.g. business name, trade, or service ("instalater", "restaurace Praha", "kadeřnictví").

## `city` (type: `string`):

Only keep results whose address/city/district contains this text (case- and diacritics-insensitive), e.g. `Praha`, `Brno`, `Plzeň`, `České Budějovice`. Works with any mode.

## `category` (type: `string`):

A Firmy.cz category path. Type any category path you find while browsing the site (e.g. `Remesla-a-sluzby/Astrologicke-sluzby`), or copy one of the 41 curated examples below into the field.

Curated examples:
`Remesla-a-sluzby/Remesla/Instalaterstvi-a-topenarstvi/Instalaterstvi` (Instalatérství a topenářství), `Remesla-a-sluzby/Remesla/Servisy-a-opravarstvi` (Servisy a opravárenství), `Remesla-a-sluzby/Stavebni-sluzby` (Stavební služby), `Remesla-a-sluzby/Reality` (Reality), `Remesla-a-sluzby/Pravni-sluzby` (Právní služby), `Remesla-a-sluzby/Sluzby-pece-o-telo` (Péče o tělo), `Remesla-a-sluzby/Pocitacove-a-internetove-sluzby` (Počítačové a internetové služby), `Remesla-a-sluzby/Uklidove-a-cistici-sluzby` (Úklidové a čisticí služby), `Remesla-a-sluzby/Bezpecnostni-sluzby` (Bezpečnostní služby), `Remesla-a-sluzby/Fotograficke-sluzby` (Fotografické služby), `Remesla-a-sluzby/Vyukove-sluzby` (Výukové služby), `Remesla-a-sluzby/Krejcovske-a-strihove-sluzby` (Krejčovské a střihové služby), `Remesla-a-sluzby/Jazykove-sluzby` (Jazykové služby), `Remesla-a-sluzby/Pujcovny` (Půjčovny), `Restauracni-a-pohostinske-sluzby/Restaurace` (Restaurace), `Restauracni-a-pohostinske-sluzby/Hospody-a-hostince` (Hospody a hostince), `Restauracni-a-pohostinske-sluzby/Kavarny` (Kavárny), `Restauracni-a-pohostinske-sluzby/Rychla-obcerstveni` (Rychlé občerstvení), `Restauracni-a-pohostinske-sluzby/Cukrarny` (Cukrárny), `Restauracni-a-pohostinske-sluzby/Bary` (Bary), `Restauracni-a-pohostinske-sluzby/Vinarny` (Vinárny), `Restauracni-a-pohostinske-sluzby/Hotelove-restaurace` (Hotelové restaurace), `Auto-moto/Auto-moto-sluzby` (Auto-moto služby), `Auto-moto/Auto-moto-prodejci` (Auto-moto prodejci), `Banky-a-financni-sluzby/Ucetni-sluzby` (Účetní služby), `Banky-a-financni-sluzby/Pojistovaci-sluzby` (Pojišťovací služby), `Banky-a-financni-sluzby/Bankovni-a-sporitelni-sluzby` (Bankovní a spořitelní služby), `Cestovni-sluzby/Cestovni-kancelare-a-agentury` (Cestovní kanceláře a agentury), `Cestovni-sluzby/Ubytovaci-sluzby` (Ubytovací služby), `Dum-byt-a-zahrada/Sluzby-pro-dum-byt-a-zahradu` (Služby pro dům, byt a zahradu), `Dum-byt-a-zahrada/Prodejci-vybaveni-domu` (Prodejci vybavení domu), `Obchody-a-obchudky/Prodejci-potravin` (Prodejci potravin), `Obchody-a-obchudky/Prodejci-textilu-odevu-a-obuvi` (Textil, oděvy a obuv), `Obchody-a-obchudky/Prodejci-drogerie` (Drogerie), `Obchody-a-obchudky/Prodejci-nabytku` (Nábytek), `Obchody-a-obchudky/Knihy-a-tiskoviny` (Knihy a tiskoviny), `Obchody-a-obchudky/Prodejci-klenotu-a-hodinek` (Klenoty a hodinky), `Prvni-pomoc-a-zdravotnictvi/Zdravotnicke-sluzby` (Zdravotnické služby), `Prvni-pomoc-a-zdravotnictvi/Prodejci-zdravotnickeho-zbozi-a-leciv` (Zdravotnické zboží a léčiva), `Elektro-mobily-a-pocitace/Prodejci-vypocetni-techniky` (Výpočetní technika), `Vse-pro-firmy/Sluzby-pro-firmy/Administrativni-sluzby` (Administrativní služby pro firmy), `Vse-pro-firmy/Sluzby-pro-firmy/Reklamni-a-marketingove-sluzby` (Reklamní a marketingové služby)

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

Restrict the category browse to one of the 14 Czech regions (kraje). Leave empty for nationwide.

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

Optional district/city slug within the chosen region, e.g. `praha-1`, `brno-mesto`, `plzen-mesto`. Only applied when `region` is also set.

## `urls` (type: `array`):

Full firmy.cz detail-page URLs, e.g. `https://www.firmy.cz/detail/12918549-a-k-servis-praha-stare-mesto.html`.

## `keyword` (type: `string`):

Only keep results whose name, description, or categories contain this text (case- and diacritics-insensitive).

## `minRating` (type: `number`):

Drop businesses with a review rating below this value.

## `openNowOnly` (type: `boolean`):

Only emit businesses currently marked as open on firmy.cz.

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

For search/byCategory modes: visit each business's detail page to also collect email, IČO, per-day opening hours, and website. Slower (1 extra request per business).

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

Hard cap on emitted records.

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

Optional proxy settings. Leave empty to use no proxy — firmy.cz is publicly accessible without one. The actor automatically escalates to the free AUTO datacenter proxy group if it hits a 403/429.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "instalater",
  "category": "Restauracni-a-pohostinske-sluzby/Restaurace",
  "urls": [],
  "openNowOnly": false,
  "fetchDetails": false,
  "maxItems": 30
}
```

# Actor output Schema

## `businesses` (type: `string`):

Dataset containing all scraped Firmy.cz businesses.

# 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 = {
    "mode": "search",
    "searchQuery": "instalater",
    "category": "Restauracni-a-pohostinske-sluzby/Restaurace",
    "urls": [],
    "openNowOnly": false,
    "fetchDetails": false,
    "maxItems": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/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 = {
    "mode": "search",
    "searchQuery": "instalater",
    "category": "Restauracni-a-pohostinske-sluzby/Restaurace",
    "urls": [],
    "openNowOnly": False,
    "fetchDetails": False,
    "maxItems": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/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 '{
  "mode": "search",
  "searchQuery": "instalater",
  "category": "Restauracni-a-pohostinske-sluzby/Restaurace",
  "urls": [],
  "openNowOnly": false,
  "fetchDetails": false,
  "maxItems": 30
}' |
apify call crawlerbros/firmy-cz-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Firmy.cz Business Directory Scraper",
        "description": "Scrape Firmy.cz, the leading Czech business directory. Search by keyword, browse by category and region, or fetch business detail pages directly. Get name, address, phone, email, website, opening hours, IČO, rating and more - no login required.",
        "version": "1.0",
        "x-build-id": "KT5dlXYBCcklA8bJ8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~firmy-cz-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-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/crawlerbros~firmy-cz-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-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/crawlerbros~firmy-cz-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byCategory",
                            "byUrl"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "search"
                    },
                    "searchQuery": {
                        "title": "Search query (mode=search)",
                        "type": "string",
                        "description": "Free-text keyword, e.g. business name, trade, or service (\"instalater\", \"restaurace Praha\", \"kadeřnictví\").",
                        "default": "instalater"
                    },
                    "city": {
                        "title": "City filter",
                        "type": "string",
                        "description": "Only keep results whose address/city/district contains this text (case- and diacritics-insensitive), e.g. `Praha`, `Brno`, `Plzeň`, `České Budějovice`. Works with any mode."
                    },
                    "category": {
                        "title": "Category (mode=byCategory)",
                        "type": "string",
                        "description": "A Firmy.cz category path. Type any category path you find while browsing the site (e.g. `Remesla-a-sluzby/Astrologicke-sluzby`), or copy one of the 41 curated examples below into the field.\n\nCurated examples:\n`Remesla-a-sluzby/Remesla/Instalaterstvi-a-topenarstvi/Instalaterstvi` (Instalatérství a topenářství), `Remesla-a-sluzby/Remesla/Servisy-a-opravarstvi` (Servisy a opravárenství), `Remesla-a-sluzby/Stavebni-sluzby` (Stavební služby), `Remesla-a-sluzby/Reality` (Reality), `Remesla-a-sluzby/Pravni-sluzby` (Právní služby), `Remesla-a-sluzby/Sluzby-pece-o-telo` (Péče o tělo), `Remesla-a-sluzby/Pocitacove-a-internetove-sluzby` (Počítačové a internetové služby), `Remesla-a-sluzby/Uklidove-a-cistici-sluzby` (Úklidové a čisticí služby), `Remesla-a-sluzby/Bezpecnostni-sluzby` (Bezpečnostní služby), `Remesla-a-sluzby/Fotograficke-sluzby` (Fotografické služby), `Remesla-a-sluzby/Vyukove-sluzby` (Výukové služby), `Remesla-a-sluzby/Krejcovske-a-strihove-sluzby` (Krejčovské a střihové služby), `Remesla-a-sluzby/Jazykove-sluzby` (Jazykové služby), `Remesla-a-sluzby/Pujcovny` (Půjčovny), `Restauracni-a-pohostinske-sluzby/Restaurace` (Restaurace), `Restauracni-a-pohostinske-sluzby/Hospody-a-hostince` (Hospody a hostince), `Restauracni-a-pohostinske-sluzby/Kavarny` (Kavárny), `Restauracni-a-pohostinske-sluzby/Rychla-obcerstveni` (Rychlé občerstvení), `Restauracni-a-pohostinske-sluzby/Cukrarny` (Cukrárny), `Restauracni-a-pohostinske-sluzby/Bary` (Bary), `Restauracni-a-pohostinske-sluzby/Vinarny` (Vinárny), `Restauracni-a-pohostinske-sluzby/Hotelove-restaurace` (Hotelové restaurace), `Auto-moto/Auto-moto-sluzby` (Auto-moto služby), `Auto-moto/Auto-moto-prodejci` (Auto-moto prodejci), `Banky-a-financni-sluzby/Ucetni-sluzby` (Účetní služby), `Banky-a-financni-sluzby/Pojistovaci-sluzby` (Pojišťovací služby), `Banky-a-financni-sluzby/Bankovni-a-sporitelni-sluzby` (Bankovní a spořitelní služby), `Cestovni-sluzby/Cestovni-kancelare-a-agentury` (Cestovní kanceláře a agentury), `Cestovni-sluzby/Ubytovaci-sluzby` (Ubytovací služby), `Dum-byt-a-zahrada/Sluzby-pro-dum-byt-a-zahradu` (Služby pro dům, byt a zahradu), `Dum-byt-a-zahrada/Prodejci-vybaveni-domu` (Prodejci vybavení domu), `Obchody-a-obchudky/Prodejci-potravin` (Prodejci potravin), `Obchody-a-obchudky/Prodejci-textilu-odevu-a-obuvi` (Textil, oděvy a obuv), `Obchody-a-obchudky/Prodejci-drogerie` (Drogerie), `Obchody-a-obchudky/Prodejci-nabytku` (Nábytek), `Obchody-a-obchudky/Knihy-a-tiskoviny` (Knihy a tiskoviny), `Obchody-a-obchudky/Prodejci-klenotu-a-hodinek` (Klenoty a hodinky), `Prvni-pomoc-a-zdravotnictvi/Zdravotnicke-sluzby` (Zdravotnické služby), `Prvni-pomoc-a-zdravotnictvi/Prodejci-zdravotnickeho-zbozi-a-leciv` (Zdravotnické zboží a léčiva), `Elektro-mobily-a-pocitace/Prodejci-vypocetni-techniky` (Výpočetní technika), `Vse-pro-firmy/Sluzby-pro-firmy/Administrativni-sluzby` (Administrativní služby pro firmy), `Vse-pro-firmy/Sluzby-pro-firmy/Reklamni-a-marketingove-sluzby` (Reklamní a marketingové služby)",
                        "default": "Restauracni-a-pohostinske-sluzby/Restaurace"
                    },
                    "region": {
                        "title": "Region / kraj (mode=byCategory)",
                        "enum": [
                            "praha",
                            "stredocesky",
                            "jihocesky",
                            "plzensky",
                            "karlovarsky",
                            "ustecky",
                            "liberecky",
                            "kralovehradecky",
                            "pardubicky",
                            "vysocina",
                            "jihomoravsky",
                            "olomoucky",
                            "zlinsky",
                            "moravskoslezsky"
                        ],
                        "type": "string",
                        "description": "Restrict the category browse to one of the 14 Czech regions (kraje). Leave empty for nationwide."
                    },
                    "district": {
                        "title": "District (mode=byCategory, requires region)",
                        "type": "string",
                        "description": "Optional district/city slug within the chosen region, e.g. `praha-1`, `brno-mesto`, `plzen-mesto`. Only applied when `region` is also set."
                    },
                    "urls": {
                        "title": "Business detail URLs (mode=byUrl)",
                        "type": "array",
                        "description": "Full firmy.cz detail-page URLs, e.g. `https://www.firmy.cz/detail/12918549-a-k-servis-praha-stare-mesto.html`.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "keyword": {
                        "title": "Keyword filter",
                        "type": "string",
                        "description": "Only keep results whose name, description, or categories contain this text (case- and diacritics-insensitive)."
                    },
                    "minRating": {
                        "title": "Minimum rating (0-5)",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Drop businesses with a review rating below this value."
                    },
                    "openNowOnly": {
                        "title": "Open now only",
                        "type": "boolean",
                        "description": "Only emit businesses currently marked as open on firmy.cz.",
                        "default": false
                    },
                    "fetchDetails": {
                        "title": "Fetch full detail page per business",
                        "type": "boolean",
                        "description": "For search/byCategory modes: visit each business's detail page to also collect email, IČO, per-day opening hours, and website. Slower (1 extra request per business).",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 30
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional proxy settings. Leave empty to use no proxy — firmy.cz is publicly accessible without one. The actor automatically escalates to the free AUTO datacenter proxy group if it hits a 403/429."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
