# Sreality Scraper — Czech Property Listings & Prices, No Phones (`highbrow_fame/sreality-properties`) Actor

Czech property listings from Sreality.cz — sale, rent, auctions: price, area, layout (2+kk), town, district, region, agency, photos, and optionally description, dates and building details. No phones.

- **URL**: https://apify.com/highbrow_fame/sreality-properties.md
- **Developed by:** [yestrue](https://apify.com/highbrow_fame) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.90 / 1,000 property delivereds

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/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

## Sreality Scraper — Czech Property Listings & Prices, No Phones

Get property listings from Sreality.cz, the Czech Republic's largest property portal: price, price per m² and price unit, area and plot area, layout (2+kk, 3+1…), property subtype, region, district, town and city part, the agency, photos, and distances to public transport, schools, shops and doctors — and, if you want, the full description, when it was posted and last edited, postcode, floor, building type, condition, ownership, energy class, price note, deposit and auction terms. For sale, to rent, auctions and shares of a property. Paste your Sreality search links — or just type a place.

**Why this one**

- 🔗 **Your search, as you set it up.** Set every filter you like on sreality.cz and paste the link: the actor reads it the way Sreality itself does, so layouts, price, area, condition, "balcony", "added in the last week" and the rest all carry over. Or type a place here — a region (Jihomoravský kraj), a district (okres Brno-venkov), a town (Kolín) or a city part (Vinohrady) — and choose sale, rent or auction, property type, layouts, price, area, must-haves and "added within" below.
- ⚡ **Fast.** A live test run read four searches — Prague flats to rent, South Moravian houses with at least 500 m² of land, every auction in the country, and building land in okres Brno-venkov up to 5 million CZK — 4,167 properties in 106 seconds.
- 📄 **Details when you need them.** Tick **Open every listing for its details** for the description, dates and building data. A live run read 1,691 listings with details in 87 seconds.
- 🔒 **No phone numbers, no personal names.** Agencies are named by their company; agents and private sellers by nothing. A private seller's street, map point and nearby-distances are left out (the town, city part, district and postcode stay). Phone numbers, e-mail addresses and agents' names written into descriptions are replaced with `[phone removed]`, `[e-mail removed]` and `[name removed]`.
- 💸 **You pay only for properties delivered.** A link that is not a Sreality search, a search page Sreality does not have, or a place it does not know comes back as a free record with the reason.

### What you get

For every property:

| Field | What it is |
|---|---|
| `price`, `priceUnit`, `currency`, `priceOnRequest` | the asking price in CZK, per property or per month; `priceOnRequest` when the listing shows no price |
| `listedPrice`, `listedPriceUnit`, `pricePerSqm` | the price as the seller entered it (e.g. per m² per month for offices) and the price per m² |
| `transaction`, `propertyType`, `subtype`, `layout`, `title` | sale / rent / auction / share; flat, house, land, commercial, other; family house, cottage, building plot, office…; 2+kk, 3+1… |
| `areaSqm`, `plotAreaSqm`, `share` | size, land, and the fraction for a share of a property (1/2) |
| `region`, `district`, `city`, `cityPart`, `street`, `latitude`, `longitude` | where it is (street and map point for agency listings only) |
| `nearbyMeters` | metres to the nearest stop, train, metro, school, kindergarten, shop, restaurant, doctor, ATM, post office, playground (agency listings) |
| `sellerType`, `agency`, `agencyId` | agency or private, and the agency's company name |
| `labels` | discount, video, 3D tour; with details also balcony, cellar, garage, parking, elevator, barrier-free, pool, exclusive, and the listing's own keywords |
| `image`, `photoCount`, `url`, `listingId` | the listing |
| `input`, `searchTitle`, `place`, `position`, `scrapedAt`, `status`, `error` | which search it came from, and why a search gave nothing |

With **Open every listing for its details** also: `description`, `priceNote`, `previousPrice`, `postedDate`, `updatedDate`, `postcode`, `usableAreaSqm`, `floorAreaSqm`, `builtUpAreaSqm`, `gardenAreaSqm`, `floor`, `buildingFloors`, `undergroundFloors`, `buildingType`, `condition`, `ownership`, `furnished`, `energyClass`, `heating`, `availableFrom`, `commission`, `deposit`, `auctionDate`, `auctionMinimumBid`, `auctionKind`, `isNewDevelopment`.

#### Example

A real record from a live run with details — houses for sale in Středočeský kraj, 25 September 2026:

```json
{
  "listingId": 762139468,
  "url": "https://www.sreality.cz/detail/prodej/dum/chalupa/naceradec-naceradec-vlasimska/762139468",
  "title": "Prodej chalupy 88 m², pozemek 504 m²",
  "transaction": "sale",
  "propertyType": "house",
  "subtype": "cottage",
  "price": 4640000,
  "priceUnit": "per property",
  "currency": "CZK",
  "pricePerSqm": 52727,
  "areaSqm": 88,
  "plotAreaSqm": 504,
  "region": "Středočeský kraj",
  "district": "Benešov",
  "city": "Načeradec",
  "street": "Vlašimská",
  "latitude": 49.611815,
  "longitude": 14.903318,
  "sellerType": "agency",
  "agency": "REMAX Alfa",
  "labels": ["video", "3D tour", "cellar", "exclusive"],
  "photoCount": 46,
  "nearbyMeters": { "publicTransport": 77, "school": 414, "smallShop": 211, "doctor": 414, "postOffice": 444, "playground": 395, "…": "…" },
  "description": "Nabízím k prodeji stylovou chalupu s obytnou plochou 88 m² a pozemkem o velikosti 504 m², situovanou v malebné obci v krásné přírodě oblasti Blaník. Nemovitost …",
  "postedDate": "2026-03-07",
  "updatedDate": "2026-09-25",
  "postcode": "25708",
  "usableAreaSqm": 88,
  "builtUpAreaSqm": 136,
  "buildingType": "Smíšená",
  "condition": "Velmi dobrý",
  "furnished": "Ano",
  "energyClass": "G",
  "status": "OK"
}
```

### How to use it

1. Paste **Search links** from sreality.cz, one per line — or type **Places** and choose the filters.
2. Set **Max listings per search**, and tick **Open every listing for its details** if you need the description, dates and building data.
3. Press **Start**, and download the results from the **Output** tab as JSON, CSV or Excel.

To follow new listings in an area, save your input as a task with **Added within (days)** set to 1 and schedule it daily.

You can also call it from the Apify API, from Make, Zapier or n8n, or from an AI agent through the Apify MCP server.

### Pricing

You are charged **per property delivered** — see the price on this page. Opening listings for their details costs nothing extra, only time. Links that are not Sreality searches, search pages Sreality does not have and places it does not know are free.

### FAQ

**How many properties per search?** Sreality lets one search reach its first 10,000 listings. A live run read the first 10,000 of the 20,523 flats for sale in the whole country in 321 seconds, without a duplicate; for everything, split a big search by region or by price — every search you add gets its own 10,000.

**Why does a "balcony" search also bring flats with a loggia or a terrace?** That is how Sreality's own balcony filter works (in a live run, 10 of the 11 flats without a balcony had a loggia or a terrace). The `labels` of each listing say which it has when details are on.

**Why is a price empty?** The listing shows "price on request" — `priceOnRequest` is true (81 of 1,000 Brno flats for sale in a live run).

**Why do so many listings say they were edited today?** `updatedDate` is the last edit Sreality shows; agencies' software sends many listings again every day (1,036 of 2,400 in a live run were edited on the day of the run). `postedDate` is when the listing went online.

**Why no phone numbers or names?** They are personal data. Every listing has its `url`; buyers and tenants contact the seller on Sreality. An agency that trades under a person's name is shown with the name it publishes.

**Is this affiliated with Sreality or Seznam.cz?** No. This is an independent tool that reads public Sreality listings.

**Like it?** A short review on the Store page helps other people find this Actor. Something missing or broken? Tell us on the Issues tab — we read every one.

# Actor input Schema

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

Set up a search on sreality.cz with all the filters you want and paste the address of the results page (https://www.sreality.cz/hledani/…). One per line.

## `places` (type: `array`):

Or search here without a link: a region (Jihomoravský kraj), a district (okres Brno-venkov), a town (Kolín), a city part (Vinohrady), or "Česko" for the whole country. Add ", <region>" when a name is ambiguous (Mikulov, Ústecký kraj). The filters below apply.

## `transaction` (type: `string`):

For the places above.

## `propertyType` (type: `string`):

For the places above.

## `layouts` (type: `array`):

Optional, flats only: any of these layouts (kk = kitchenette).

## `minPrice` (type: `integer`):

Optional. For rent: per month.

## `maxPrice` (type: `integer`):

Optional. For rent: per month.

## `minArea` (type: `integer`):

Optional. Usable area; for land, the plot.

## `maxArea` (type: `integer`):

Optional. Usable area; for land, the plot.

## `features` (type: `array`):

Optional: only listings with all of these. Sreality's own balcony filter also matches a loggia or a terrace.

## `addedWithinDays` (type: `integer`):

Optional: only listings added in the last N days.

## `sortBy` (type: `string`):

For the places above.

## `maxListingsPerSearch` (type: `integer`):

Stops each search after this many listings. Sreality lets one search reach its first 10,000.

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

Adds the full description, posted and updated dates, postcode, usable / floor / plot area, floor, building type, condition, ownership, energy class, heating, price note, deposit and auction terms. One more request per listing, so slower.

## `maxConcurrency` (type: `integer`):

How many searches to work on at the same time.

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

Used only to try again after a network error: the first try goes out directly.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.sreality.cz/hledani/prodej/byty/praha?velikost=2%2Bkk,2%2B1&cena-do=9000000"
  ],
  "transaction": "sale",
  "propertyType": "flat",
  "sortBy": "newest",
  "maxListingsPerSearch": 30,
  "includeDetails": false,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Every result as a JSON record, with a status for each input.

## `resultsCsv` (type: `string`):

The same records as CSV, for a spreadsheet.

# 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 = {
    "searchUrls": [
        "https://www.sreality.cz/hledani/prodej/byty/praha?velikost=2%2Bkk,2%2B1&cena-do=9000000"
    ],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("highbrow_fame/sreality-properties").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 = {
    "searchUrls": ["https://www.sreality.cz/hledani/prodej/byty/praha?velikost=2%2Bkk,2%2B1&cena-do=9000000"],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("highbrow_fame/sreality-properties").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 '{
  "searchUrls": [
    "https://www.sreality.cz/hledani/prodej/byty/praha?velikost=2%2Bkk,2%2B1&cena-do=9000000"
  ],
  "maxListingsPerSearch": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call highbrow_fame/sreality-properties --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,highbrow_fame/sreality-properties"
        }
    }
}
```

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/GFms3NFCxHh6hwofN/builds/rffM8pesNhMwcdeCs/openapi.json
