# CZ Reality Properties and Details Scraper (`realestateapi/cz-reality-properties-and-details-scraper`) Actor

Permission-gated Czech property listing Actor for Sreality and Bezrealitky. Current written authorization is required for automated retrieval and reuse; the default run makes zero source requests.

- **URL**: https://apify.com/realestateapi/cz-reality-properties-and-details-scraper.md
- **Developed by:** [Real Estate API](https://apify.com/realestateapi) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 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.

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

## CZ Reality Properties and Details Scraper

This Actor can normalize public property fields from Sreality and Bezrealitky search and detail pages when you have current written authorization covering automated retrieval and reuse. By default, it completes as `SUCCEEDED` / `SKIPPED_POLICY`, makes zero source requests, and writes no dataset rows. Sreality states on its listing pages that reuse of listings and photos requires Seznam's consent. The authorization checkbox is an operator attestation; it does not grant permission.

When authorized, the Actor reads public search pages and, up to the configured detail limit, public listing pages to collect property characteristics, price and fees, structured location, energy ratings, photos, and public map context. It does not use login bypasses, private endpoints, or proxy-reader fallbacks.

### Input

Confirm applicable written authorization, then choose one or both portals and set the sale/rent category, locality filter, maximum price, minimum area, and listing count. The Actor builds public search URLs from those filters.

The default maxDetails value fetches detail pages for up to 20 listings per portal after authorization. Set it to 0 to use search-page fields only. Detail requests are sequential and spaced to reduce load. A source failure is counted in the run summary; source-backed search listings already parsed are retained. Do not enable retrieval without permission that covers both automated access and the planned reuse of listing data.

### Output

Listing records include stable IDs and URLs, title and description, price and currency, area and room details, structured address and coordinates, agency data where exposed, photos and media metadata, property condition and construction, amenities, energy rating, publication information, fees, and nearby places when the portal publishes them. Optional source fields are omitted when unavailable. Each record may contain more than 20 fields.

The dataset contains property listings only. Failures and counts are summarized in OUTPUT and never written as diagnostic or placeholder dataset rows. A clean bounded search, including an empty result, is `SUCCEEDED` / `COMPLETED`. A failure with zero saved listings is `FAILED` / `FAILED`; a later failure after one or more listings are saved is `SUCCEEDED` / `PARTIAL`. The default permission gate is `SUCCEEDED` / `SKIPPED_POLICY`. Optional local history adds price-change fields when enabled.

The preserved historical output had 20 property listings and 19 detail-unavailable diagnostics. The 20 listing rows remain active; the diagnostics were archived outside the Actor folder and removed from the dataset. That historical summary now reports `SUCCEEDED` / `PARTIAL` with 20 listings and 19 failures.

Respect each portal's terms, robots guidance, rate limits, and applicable law.

### Dependency review — October 3, 2026

The production dependency lock has been refreshed within compatible declared ranges. The `get-uri` dependency uses patched `basic-ftp@6.2.1`; offline tests cover the Client methods consumed by `get-uri`, valid listing fields, and the adversarial listing parser case. Source permissions and access gates remain unchanged.

The remaining `http-cache-semantics` security advisory [GHSA-ch52-4w7c-c8xp](https://github.com/advisories/GHSA-ch52-4w7c-c8xp) has no published patched release. It remains present through the Apify/Crawlee request stack. This project does not claim the finding is fixed or unreachable, and the audit remains part of the release limitations.

# Actor input Schema

## `authorizationConfirmed` (type: `boolean`):

Set true only if current written authorization covers automated retrieval and reuse for each selected portal. This attestation does not grant permission. Defaults to false, which makes zero source requests.

## `portals` (type: `array`):

Property portals to query.

## `categories` (type: `array`):

Property categories to include.

## `offerType` (type: `array`):

Transaction types to include.

## `regions` (type: `array`):

Optional locality or region text filters.

## `maxPrice` (type: `number`):

Exclude listings above this price.

## `minArea` (type: `number`):

Exclude listings below this area in square metres.

## `maxListings` (type: `integer`):

Maximum number of listings emitted per portal.

## `maxDetails` (type: `integer`):

Fetch public property detail pages to add property characteristics, costs, energy, photos, and other details. Set to 0 to use search-page fields only.

## `enableHistory` (type: `boolean`):

Compare listings with records stored from earlier runs.

## `historyStoreId` (type: `string`):

Named key-value store used for optional history tracking.

## `timeoutMs` (type: `integer`):

Maximum time allowed for each public request.

## `userAgent` (type: `string`):

Optional transparent HTTP user-agent string.

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

Accepted for compatibility; public requests remain transparent.

## Actor input object example

```json
{
  "authorizationConfirmed": false,
  "portals": [
    "sreality"
  ],
  "categories": [
    "domy"
  ],
  "offerType": [
    "prodej"
  ],
  "regions": [],
  "maxListings": 20,
  "maxDetails": 20,
  "enableHistory": false,
  "historyStoreId": "cz-reality-history",
  "timeoutMs": 30000
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runSummary` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("realestateapi/cz-reality-properties-and-details-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("realestateapi/cz-reality-properties-and-details-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 '{}' |
apify call realestateapi/cz-reality-properties-and-details-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,realestateapi/cz-reality-properties-and-details-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/fGprgObEPDtroijFa/builds/3LqIg0oJZYzVidhmk/openapi.json
