# Firmy.cz Scraper (`parsebird/firmy-cz-scraper`) Actor

Scrape Firmy.cz, the Czech business directory: names, addresses, GPS, phones, emails, websites, IČO, ratings, opening hours, and amenities. Search by keyword, city, or category, or paste URLs. Export JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/firmy-cz-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 firmy.cz businesses

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

### Firmy.cz Scraper

Firmy.cz Scraper extracts business listings from [Firmy.cz](https://www.firmy.cz/), the Czech business directory run by Seznam.cz: names, addresses, GPS coordinates, phone numbers, websites, IČO, ratings, weekly opening hours, and amenities, plus emails, data box IDs, and social links when you turn on business details.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Search any Czech keyword, limit it to a city, city district, okres, or kraj, browse one of the 12 main Firmy.cz categories with all of its subcategories, or paste Firmy.cz URLs, and get 40+ fields per business, ready for lead lists, CRM imports, and market research.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
Use Apify Actor parsebird/firmy-cz-scraper to scrape Czech business listings from Firmy.cz. Example with ApifyClient: client.actor("parsebird/firmy-cz-scraper").call(run_input={"searchQuery":"zubař","location":"Praha","includeDetails":true,"maxResults":200}). Inputs: searchQuery string (Czech keyword, e.g. "restaurace", "autoservis"); location string optional (Czech city, city district, okres, or kraj, e.g. "Brno", "Praha 5", "Jihomoravský kraj"; empty = whole Czech Republic); category string default "all" (one of all, restauracni-sluzby, auto-moto, elektro-mobily-pocitace, obchody, sluzby-a-remesla, dum-byt-zahrada, zdravotnictvi, banky-finance, cestovni-sluzby, instituce-urady, vse-pro-firmy, velkoobchod-vyroba; browses the category and all its subcategories; ignored when searchQuery is set); searchUrls array of strings optional (firmy.cz search, category, or business detail URLs; overrides the other search fields); includeDetails boolean default false (adds emails, all phones, DIČ, data box ID, social links, verbal rating, full categories, photo gallery); maxResults integer default 200, 0 = all (max 50,000 per run). Output: one dataset row per unique business with premiseId, name, legalName, mainCategory, categories, description, address, streetAddress, locality, district, postalCode, latitude, longitude, telephone, phones, email, emails, webUrl, socialLinks, bookingUrl, ratingValue (0-5), ratingPercent, reviewCount, ratingText, openingToday, openingHours {monday..sunday}, openingNote, logoUrl, photoUrl, photos, photoCount, ico, dic, dataBoxId, amenities, tags, priceRange, priceLevel, detailPageUrl, mapyUrl, searchQuery, searchUrl, scrapedAt. Price: $3.99 per 1,000 businesses on the Free plan, details included. API docs: https://docs.apify.com/api/client/python/ and https://docs.apify.com/api/client/js/. Token: https://console.apify.com/account/integrations.
```

### What is Firmy.cz Scraper?

**Firmy.cz Scraper** is a Firmy.cz data extraction tool and **Firmy.cz API alternative** for the largest Czech company directory. It collects the same public business profiles you see on firmy.cz, from restaurants and dentists to car repair shops and wholesalers, and saves them as structured data. You don't need a Seznam account or API key.

The easiest way to try it is to open the actor, keep the prefilled input (`restaurace` in `Brno`, 50 results), and click **Start**. The run takes a few seconds.

### What can Firmy.cz Scraper do?

- 🔎 **Search by keyword** across the whole Czech Republic, exactly like the firmy.cz search box. Czech keywords with or without diacritics work.
- 📍 **Limit results to a place**: a city (`Brno`), a Prague district (`Praha 5`), an okres, or a kraj (`Jihomoravský kraj`). Place names are matched with the firmy.cz location search, and the log tells you which place was picked.
- 🗂️ **Browse a whole category**: pick one of the 12 main Firmy.cz categories, and the actor collects businesses from the category and every one of its subcategories, optionally in one location.
- 🔗 **Paste Firmy.cz URLs** for search results, category pages (including subcategories and region pages such as `/kraj-praha`), or single business profiles to reproduce exactly what the site shows.
- 📇 **Rich contact data**: phone, website, IČO, address, postal code, and GPS for every business. Turn on **Include business details** for emails, all phone numbers, DIČ, datová schránka (data box) ID, and Facebook, Instagram, YouTube, TikTok, or LinkedIn links.
- 🕒 **Opening hours and ratings**: a weekly schedule keyed by day, today's hours, the star rating, review count, and the verbal rating ("Výborné", "Fantastické").
- 🧮 **No duplicates**: each business is saved once per run, even when it matches several searches or category chunks.
- ⏰ Run on a schedule with [Apify schedules](https://docs.apify.com/platform/schedules), call it from the [Apify API](https://docs.apify.com/api/v2), connect it with [integrations](https://apify.com/integrations) such as Make, Zapier, Google Sheets, or webhooks, and export to JSON, CSV, Excel, XML, or HTML.

### What data can you extract from Firmy.cz?

| Field | Description |
|-------|-------------|
| `premiseId` | Firmy.cz business ID, stable across runs, good for deduplication |
| `name` / `legalName` | Display name and registered company name (for example `KFC` / `AmRest, s.r.o.`) |
| `mainCategory` / `categories` | Main category and all assigned Firmy.cz categories (Czech) |
| `description` | Business description from the profile (Czech) |
| `address` / `streetAddress` / `locality` / `district` / `postalCode` | Full address and its parts |
| `latitude` / `longitude` | GPS coordinates |
| `telephone` / `phones` | Main phone in `+420 123 456 789` format, plus every listed number in detail mode |
| `email` / `emails` | Business emails (detail mode) |
| `webUrl` / `socialLinks` / `bookingUrl` | Website, social profiles (detail mode), and online booking link when published |
| `ratingValue` / `ratingPercent` / `reviewCount` / `ratingText` | Star rating (0–5, as shown on firmy.cz), rating in percent, number of reviews, verbal rating (detail mode) |
| `openingHours` / `openingToday` / `openingNote` | Weekly hours by day (`monday`–`sunday`, closed days left out), today's hours, and the owner's note |
| `ico` / `dic` / `dataBoxId` | IČO, DIČ (detail mode), and datová schránka ID (detail mode) |
| `amenities` | Amenity labels such as `Wi-Fi`, `Platba kartou`, `Parkoviště`, `Bezbariérové` |
| `tags` / `priceRange` / `priceLevel` | `top-firma-<year>` badge, and price level for restaurants and hotels when published |
| `logoUrl` / `photoUrl` / `photos` / `photoCount` | Logo, main photo, gallery photos (detail mode), and total gallery size |
| `detailPageUrl` / `mapyUrl` / `searchUrl` | Firmy.cz profile, Mapy.com route link, and the firmy.cz URL the row came from |

### How to scrape Firmy.cz

1. Open [Firmy.cz Scraper](https://apify.com/parsebird/firmy-cz-scraper) and click **Try for free** to sign in to Apify.
2. Type a **Search keyword** such as `autoservis`, or leave it empty and pick a **Category**.
3. Optionally enter a **Location** such as `Ostrava` or `Středočeský kraj`.
4. Or paste firmy.cz links into **Firmy.cz URLs** to copy filters you already set up on the website.
5. Turn on **Include business details** if you need emails, data box IDs, or social links.
6. Set **Maximum businesses** (use `0` for everything) and click **Start**.
7. When the run finishes, open the **Output** tab and download your Firmy.cz data as CSV, Excel, or JSON.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `searchQuery` | string | No\* | — | Czech keyword, as you'd type it on firmy.cz |
| `location` | string | No | — | Czech city, city district, okres, or kraj. Empty = whole country |
| `category` | string | No\* | `all` | One of the 12 main categories, including all subcategories. Ignored when `searchQuery` is set |
| `searchUrls` | array of strings | No\* | — | Firmy.cz search, category, or business detail URLs. Override the three fields above |
| `includeDetails` | boolean | No | `false` | Open each profile for emails, phones, DIČ, data box ID, social links, gallery |
| `maxResults` | integer | No | `200` | Businesses to save. `0` = all, up to 50,000 per run |

\* Use a keyword, a category, or URLs. Category values: `restauracni-sluzby` (Restaurants & hospitality), `auto-moto`, `elektro-mobily-pocitace` (Electronics, phones & computers), `obchody` (Shops & retail), `sluzby-a-remesla` (Services & trades), `dum-byt-zahrada` (Home, apartment & garden), `zdravotnictvi` (First aid & healthcare), `banky-finance`, `cestovni-sluzby` (Travel), `instituce-urady` (Institutions & offices), `vse-pro-firmy` (Business services), `velkoobchod-vyroba` (Wholesale & manufacturing).

Example inputs:

```json
{ "searchQuery": "zubař", "location": "Praha", "includeDetails": true, "maxResults": 200 }
```

```json
{ "category": "zdravotnictvi", "location": "Brno", "maxResults": 0 }
```

```json
{
    "searchUrls": [
        "https://www.firmy.cz/?q=lekárna&x=17.250879&y=49.594540&rt=mesto",
        "https://www.firmy.cz/Auto-moto/Auto-moto-sluzby/Autoservisy/Pneuservisy?x=16.6068&y=49.1951&rt=mesto"
    ],
    "maxResults": 0
}
```

You can also fill everything in on the [Input tab](https://apify.com/parsebird/firmy-cz-scraper/input-schema).

### Output example

One row per business. Download the dataset as JSON, CSV, Excel, XML, or HTML. This row comes from a run with **Include business details** turned on:

```json
{
    "premiseId": "300466",
    "name": "Stomatologické centrum Bakon",
    "legalName": "BAKON, s.r.o.",
    "mainCategory": "Stomatologické ordinace a pracoviště",
    "categories": ["Stomatologické ordinace a pracoviště", "Dentální hygiena", "Stomatologické laboratoře"],
    "description": "Stomatologické ordinace, implantologie, dentální hygiena, laboratoře, provádíme veškeré protetické práce. Bezkovová keramika CAD/CAM systém.",
    "address": "Mukařovská 3116/24, 100 00 Praha, Strašnice",
    "streetAddress": "Mukařovská 3116/24",
    "locality": "Praha, Strašnice",
    "district": "Praha 10",
    "postalCode": "100 00",
    "latitude": 50.0641327,
    "longitude": 14.5074186,
    "telephone": "+420 284 819 831",
    "phones": ["+420 284 819 831"],
    "email": "info@stomatologicke-centrum.cz",
    "emails": ["info@stomatologicke-centrum.cz"],
    "webUrl": "https://bakon.cz",
    "socialLinks": [],
    "bookingUrl": null,
    "ratingValue": 4.3,
    "ratingPercent": 86.3,
    "reviewCount": 24,
    "ratingText": "Výborné",
    "openingToday": null,
    "openingHours": {
        "monday": "08:00-15:30",
        "tuesday": "08:00-15:30",
        "wednesday": "08:00-15:30",
        "thursday": "08:00-15:30",
        "friday": "08:00-11:30"
    },
    "openingNote": null,
    "logoUrl": "https://d48-a.sdn.cz/d_48/c_img_H_B/tn4GcS.png",
    "photoUrl": "https://d48-a.sdn.cz/d_48/c_img_QN_BC/TGcGDw.jpeg",
    "photos": ["https://d48-a.sdn.cz/d_48/c_img_QN_BC/TGcGDw.jpeg"],
    "photoCount": 1,
    "ico": "48036455",
    "dic": null,
    "dataBoxId": "qnzqgkp",
    "amenities": ["Parkoviště", "Bezbariérové"],
    "tags": ["top-firma-2025"],
    "priceRange": null,
    "priceLevel": null,
    "detailPageUrl": "https://www.firmy.cz/detail/300466-stomatologicke-centrum-bakon-praha-strasnice.html",
    "mapyUrl": "https://www.mapy.com/zakladni?planovani-trasy&x=14.507419&y=50.064133&z=17&rc=9hChxxXvtO9hN.i1wd&rs=coor&rs=firm&ri=&ri=300466&mrp=%7B%22c%22%3A%20111%7D&rt=&rt=",
    "searchQuery": "zubař",
    "searchUrl": "https://www.firmy.cz/?q=zuba%C5%99&rt=mesto&x=14.434141&y=50.083549",
    "scrapedAt": "2026-10-18T07:44:17Z"
}
```

Without details, `email`, `emails`, `socialLinks`, `ratingText`, `photos`, `dic`, and `dataBoxId` are empty, and `phones` holds the main number only. Every other field is filled from the search results.

### Python API example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("parsebird/firmy-cz-scraper").call(run_input={
    "searchQuery": "autoservis",
    "location": "Ostrava",
    "includeDetails": True,
    "maxResults": 100,
})

for firm in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(firm["name"], firm["ico"], firm["telephone"], firm["email"])
```

### JavaScript API example

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('parsebird/firmy-cz-scraper').call({
    category: 'restauracni-sluzby',
    location: 'Olomouc',
    maxResults: 0,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((f) => `${f.name} | ${f.address} | ${f.ratingValue}`));
```

See Apify's [Python client](https://docs.apify.com/api/client/python/) and [JavaScript client](https://docs.apify.com/api/client/js/) docs for more options.

### Use cases

- **B2B lead generation in Czechia.** Build call and email lists of dentists, car services, accountants, or any other trade in a city or kraj.
- **CRM enrichment.** Match companies by IČO and add phones, websites, data box IDs, and GPS.
- **Local market research.** Count competitors per city, compare ratings and review counts, and map them with GPS coordinates.
- **Location planning.** Find areas with few businesses of a type before opening a new branch.
- **Directory and app data.** Feed opening hours, amenities, and photos into a local search app or map.
- **Monitoring.** Schedule weekly runs and compare `premiseId` lists to spot new and closed businesses.

### How it works

1. The actor reads your keyword, category, location, or URLs. Locations are matched with the same place search the firmy.cz location box uses.
2. It requests search results from the public data service behind firmy.cz, 100 businesses per request, page after page until it reaches your limit or the last result.
3. For category browsing it searches the category and all of its subcategories. Large categories are split into several requests and merged without duplicates.
4. For pasted URLs, it opens each page and reuses that page's exact search, so filters, categories, and regions match the website.
5. With **Include business details**, it also loads each business profile for emails, data box IDs, and the rest of the detail fields.
6. Each unique business is saved once. The run stops at **Maximum businesses**, the last result, or your spending limit.

### How much does it cost to scrape Firmy.cz?

**What is the price per Firmy.cz business?**

| Plan | Price per business | Price per 1,000 businesses |
|------|--------------------|----------------------------|
| Free | $0.00399 | **$3.99** |
| Bronze | $0.00349 | **$3.49** |
| Silver | $0.00299 | **$2.99** |
| Gold | $0.00249 | **$2.49** |

You pay one `business-scraped` event per business saved to the dataset, with or without business details. Compute and proxy usage are included in the event price. For example, the prefilled run (50 restaurants in Brno) costs $0.20 on the Free plan, and 1,000 businesses with full details cost $3.99 on Free or $2.49 on Gold. Apify's free plan includes monthly platform credits you can use on this actor. Set **Maximum businesses** or a spending limit on the run to stay within budget.

### Is it legal to scrape Firmy.cz?

**Is scraping Firmy.cz legal?**

Firmy.cz Scraper only collects business information that Firmy.cz shows publicly to every visitor without logging in. It doesn't access accounts or private data. Scraping publicly available data is generally allowed in many jurisdictions, but business listings can include personal data, such as the names and contacts of sole traders (OSVČ), which is covered by the GDPR. Make sure you have a legitimate purpose, follow Czech and EU rules on direct marketing, and review the [Firmy.cz terms](https://napoveda.firmy.cz/obecna-pravidla-pro-profily/smluvni-podminky/). For more background, read Apify's guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### Other Czech and business directory scrapers / Related Actors

| Actor | Best for |
|-------|----------|
| [Sreality.cz Scraper](https://apify.com/parsebird/sreality-cz-scraper) | Czech property listings from Sreality.cz by location, price, and offer type |
| [Europages Company Scraper](https://apify.com/parsebird/europages-scraper) | European B2B suppliers with phones, websites, and VAT IDs |
| [Apple Maps Scraper](https://apify.com/parsebird/apple-maps-scraper) | Places worldwide with phones, websites, ratings, and opening hours |
| [YellowPages USA Lead Generator](https://apify.com/parsebird/yellowpages-scraper) | US business leads from YellowPages.com |
| [Zefix.ch Scraper](https://apify.com/parsebird/zefix-ch-scraper) | Swiss commercial register companies with UID and legal form |
| [KvK Handelsregister Scraper](https://apify.com/parsebird/kvk-handelsregister-scraper) | Dutch companies by name, keyword, or KvK number |
| [GoodFirms Company Scraper](https://apify.com/parsebird/goodfirms-scraper) | IT and agency companies with ratings, hourly rates, and team size |

### FAQ

**Do I need a Seznam account or API key?**

No. The actor uses the public data that firmy.cz loads for logged-out visitors.

**What's the difference between a keyword and a category?**

A keyword works exactly like the firmy.cz search box. A category returns every business filed under that category or any of its subcategories, which suits "all businesses of this type in this city". If you set both, the keyword is used and the log says the category was skipped. For one specific subcategory, paste its firmy.cz URL, for example `https://www.firmy.cz/Auto-moto/Auto-moto-sluzby/Autoservisy`.

**Why are a few results outside my location?**

The actor returns what firmy.cz returns for that place. For an okres or kraj, firmy.cz also mixes in some businesses from neighbouring areas, and for any place a few businesses registered elsewhere can appear, so some rows can have a different town. Filter on `locality`, `district`, or `postalCode` if you need a strict boundary.

**How many businesses can I get?**

Everything firmy.cz returns for your search, up to 50,000 per run. In our tests, the keyword `restaurace` returned all 16,498 matching businesses nationwide in one run of about 9.5 minutes. For larger exports, split the work by location or category across runs.

**Why is email empty for some businesses?**

Emails are only loaded with **Include business details**, and not every business publishes one. In our tests with details on, 252 of 300 Prague dentists and 989 of 1,000 Brno service businesses had an email.

**Is the rating the same as on firmy.cz?**

Yes. `ratingValue` is the 0–5 star value firmy.cz shows (the percentage divided by 20, one decimal), and `ratingPercent` is the underlying percentage. Both are empty for businesses without reviews.

**Can I use it with Make, Zapier, or my own app?**

Yes. See the [API tab](https://apify.com/parsebird/firmy-cz-scraper/api) for code, or connect the actor through Apify [integrations](https://apify.com/integrations) and webhooks.

**Something doesn't work. Where do I report it?**

Open an issue in the [Issues tab](https://apify.com/parsebird/firmy-cz-scraper/issues) with your run ID and input.

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/firmy-cz-scraper/changelog.md

# Actor input Schema

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

Enter a Czech keyword, as you would type it on firmy.cz (for example 'zubař', 'autoservis', 'kavárna'). Leave it empty to browse a category instead.

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

Enter a Czech city, city district, okres, or kraj to limit results (for example 'Praha', 'Brno', 'Praha 5', 'Jihomoravský kraj'). It's matched with the firmy.cz location search. Leave it empty to search the whole Czech Republic.

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

Browse one of the 12 main firmy.cz categories, including all of its subcategories. Use it instead of a keyword: if you set both, the keyword is used and the category is skipped. For a specific subcategory, paste its firmy.cz URL into Firmy.cz URLs.

## `searchUrls` (type: `array`):

Paste firmy.cz search, category, or business detail URLs, one per row, to reproduce exactly what the site shows (for example 'https://www.firmy.cz/?q=lékárna\&x=17.250879\&y=49.594540\&rt=mesto' or 'https://www.firmy.cz/Auto-moto/Auto-moto-sluzby/Autoservisy'). When you add URLs, the keyword, location, and category fields are ignored.

## `includeDetails` (type: `boolean`):

Turn on to open each business profile and add emails, all phone numbers, DIČ, data box ID (datová schránka), social links, the verbal rating, the full category path, and photos. Slower, same price.

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

Limit the number of businesses saved (and charged) in this run. Set 0 to get everything (up to 50,000 per run).

## Actor input object example

```json
{
  "searchQuery": "restaurace",
  "location": "Brno",
  "category": "all",
  "includeDetails": false,
  "maxResults": 50
}
```

# Actor output Schema

## `results` (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 = {
    "searchQuery": "restaurace",
    "location": "Brno",
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/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": "Brno",
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/firmy-cz-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 '{
  "searchQuery": "restaurace",
  "location": "Brno",
  "maxResults": 50
}' |
apify call parsebird/firmy-cz-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/firmy-cz-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/OaSqCiVN8oeqXQn2b/builds/1EyppxP06kyF3vVwp/openapi.json
