# Sreality Scraper — Czech Real Estate, Prices & Broker Contacts (`haketa/sreality-scraper`) Actor

Scrape Sreality.cz property listings for sale or rent in the Czech Republic — price, price per m², size, layout, location, coordinates and photos, plus optional description, condition, energy rating and broker name, email and phone. Export to JSON, CSV or Excel.

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

## Pricing

from $1.75 / 1,000 results

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Sreality Scraper — Czech Real Estate, Prices & Broker Contacts

Collect property listings from **Sreality.cz**, the biggest real‑estate portal in the Czech Republic, as clean, structured data. Search by location (or paste a search URL) and get every listing back with **price, price per m², size, layout, location and photos** — plus, with details on, the **full description, condition, energy rating and the broker's name, email and phone**.

Built for **real‑estate agencies, lead‑generation teams, property investors, market analysts and data teams** who need Czech housing data — for sale or rent — without copying listings by hand.

***

### ✨ Why use this scraper

- **Full listing records** — price, price per m², property type, layout (disposition), size and location.
- **Lead‑generation data** *(with details)* — the broker's **name, email and phone**, plus the agency.
- **Location & map** — city, district, street, ZIP and latitude/longitude on every listing.
- **Buy or rent** — flats, houses, land or commercial, for sale (prodej) or rent (pronájem).
- **Rich detail** *(optional)* — full description, usable area, floor, building condition, ownership, energy rating and amenities.
- **Fast & cheap** — pure API‑style access (no browser), so runs are quick and low‑cost.
- **Clean, typed output** — price as a number — ready for spreadsheets, databases and BI tools.
- **Export anywhere** — JSON, CSV, Excel, HTML or via the Apify API and integrations.

***

### 🚀 Quick start

1. Choose **Buy** or **Rent** and a **property category**.
2. Enter one or more **locations** (for example `praha`, `brno`) — or paste **Start URLs**.
3. Turn on **Include full details & broker contacts** if you want descriptions and phone numbers.
4. Set **Maximum listings** and click **Start**.

Each listing comes back as one clean record.

***

### 📥 Input

| Field | Type | Description |
|---|---|---|
| **Operation** (`operation`) | select | `prodej` (buy) or `pronajem` (rent). |
| **Property category** (`category`) | select | byty (flats), domy (houses), pozemky (land), komerční, ostatní. |
| **Locations** (`locations`) | array | Sreality location slugs (praha, brno, ostrava …). |
| **Start URLs** (`startUrls`) | array | Paste Sreality search URLs directly. |
| **Include full details & broker contacts** (`includeDetails`) | boolean | Add description, specs and broker name/email/phone. |
| **Maximum listings** (`maxItems`) | integer | Cap the number of listings. |
| **Max pages per search** (`maxPagesPerSearch`) | integer | Result pages per search (~20 listings each). |
| **Concurrency** (`maxConcurrency`) | integer | Parallel detail fetches. |
| **Proxy configuration** (`proxyConfiguration`) | object | Apify Proxy (datacenter is enough). |

#### Example — flats for sale in Prague

```json
{
  "operation": "prodej",
  "category": "byty",
  "locations": ["praha"],
  "maxItems": 300
}
```

#### Example — with broker contacts (lead‑gen)

```json
{
  "operation": "prodej",
  "category": "byty",
  "locations": ["brno", "ostrava"],
  "includeDetails": true,
  "maxItems": 500
}
```

***

### 📤 Output

Each listing is one dataset item. Example (with details on):

```json
{
  "id": 3002483532,
  "operation": "Prodej",
  "propertyType": "Byty",
  "disposition": "3+kk",
  "title": "Prodej bytu 3+kk 77 m²",
  "price": 9287200,
  "pricePerSqM": 189535,
  "priceText": "9 287 200 Kč",
  "city": "Praha",
  "cityPart": "Zličín",
  "district": "Praha 10",
  "region": "Hlavní město Praha",
  "street": "Vřesovická",
  "zip": "155 21",
  "latitude": 50.0597,
  "longitude": 14.2864,
  "image": "https://d18-a.sdn.cz/...jpeg",
  "imageCount": 12,
  "hasVideo": true,
  "description": "Nabízíme k prodeji moderní byt...",
  "usableArea": 77,
  "floorNumber": 3,
  "buildingCondition": "Novostavba",
  "ownership": "Osobní",
  "energyRating": "G - Mimořádně nehospodárná",
  "amenities": ["balcony", "elevator", "parking"],
  "brokerName": "Jan Mahdal",
  "brokerEmail": "prodej@sekyragroup.cz",
  "brokerPhone": "+420800304050",
  "detailScraped": true,
  "scrapedAt": "2026-09-01T10:00:00.000Z"
}
```

#### Field reference

**Listing**

| Field | Description |
|---|---|
| `id` | Sreality listing ID. |
| `operation` | Prodej (buy) or Pronájem (rent). |
| `propertyType`, `disposition` | Type (Byty/Domy …) and layout (2+kk …). |
| `title` | Listing title. |
| `price`, `pricePerSqM`, `priceText` | Price (CZK), per‑m² and as shown. |

**Location**

| Field | Description |
|---|---|
| `city`, `cityPart`, `district`, `region`, `street`, `zip` | Address. |
| `latitude`, `longitude` | Coordinates. |

**Detail** (when enabled)

| Field | Description |
|---|---|
| `description` | Full listing description. |
| `usableArea`, `floorNumber`, `floors` | Size and floor. |
| `buildingCondition`, `ownership`, `energyRating` | Condition, ownership and energy class. |
| `amenities` | Balcony, elevator, garage, parking, terrace … |

**Broker (lead‑gen, when enabled)**

| Field | Description |
|---|---|
| `brokerName` | Broker/agent name. |
| `brokerEmail` | Broker email. |
| `brokerPhone`, `brokerPhones` | Broker phone(s). |

***

### 💡 Use cases

- **Lead generation** — build lists of brokers/agencies with phone and email for outreach.
- **Market & price analysis** — aggregate price and price/m² by city, district and layout.
- **Investment research** — spot new builds, price levels and opportunities by area.
- **Agency intelligence** — see which agencies list what, where and at what price.
- **Data & analytics** — build clean datasets of Czech real estate for models and dashboards.

***

### 🎯 Tips for best results

- **Use location slugs** as in Sreality URLs (praha, brno, ostrava, plzen …), or paste a full search URL.
- **Turn on details** only when you need descriptions and broker contacts — it's slower and costs more.
- **Combine locations** to cover several cities in one run.
- **Filter after export** — pull broadly, then filter on `price`, `usableArea`, `disposition` or `district`.

***

### 🔌 Run it your way

- **Apify Console** — pick buy/rent, category and locations, then Start.
- **API** — start runs and pull the dataset programmatically.
- **Scheduler** — refresh listings and prices on a schedule.
- **Integrations** — push results to Google Sheets, Zapier, Make, webhooks, S3 and more.

***

### ❓ FAQ

**Which country does Sreality cover?**
Sreality.cz covers the Czech Republic — property for sale and rent.

**Do I need an account or API key?**
No. Just pick buy/rent, category and locations (or paste URLs).

**Do I get broker phone numbers?**
Yes — turn on **Include full details & broker contacts** to add the broker's name, email and phone.

**What extra data do details add?**
Full description, usable area, floor, building condition, ownership, energy rating and amenities.

**In what format is the data?**
Structured JSON by default, exportable to CSV, Excel, HTML and more.

**Can I run it on a schedule?**
Yes — use the Apify Scheduler, or start runs through the Apify API and its integrations.

***

### ⚖️ Legal & responsible use

This tool collects **publicly available** property‑listing information for legitimate business use such as market research and real‑estate lead generation. You are responsible for how you use the data and for complying with all applicable laws and regulations, the website's terms, and data‑protection rules (including the GDPR where personal data such as broker phone numbers and emails is involved). Do not use the output to infringe intellectual‑property rights, to send unlawful communications, or for any unlawful purpose. This scraper is not affiliated with, endorsed by, or connected to Sreality or Seznam; all trademarks belong to their respective owners.

***

#### Tags

`sreality` · `sreality scraper` · `czech real estate` · `czech republic property` · `real estate scraper` · `property scraper` · `real estate leads` · `broker contacts` · `property listings` · `reality` · `byty` · `lead generation` · `real estate data` · `prague property` · `property prices`

# Actor input Schema

## `operation` (type: `string`):

Buy or rent listings.

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

Type of property.

## `locations` (type: `array`):

Sreality location slugs (e.g. praha, brno, ostrava, plzen, praha-5). Leave empty for Prague.

## `startUrls` (type: `array`):

Paste Sreality search URLs directly (open sreality.cz, set filters, copy the URL). Overrides operation/category/locations.

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

Fetch each listing's detail to add the full description, area/condition/energy, amenities and the broker's name, email and phone. Slower and costs more.

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

Stop after collecting this many listings.

## `maxPagesPerSearch` (type: `integer`):

Maximum result pages per search (~20 listings each).

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

How many detail pages to fetch in parallel when full details are on.

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

Apify Proxy is recommended (datacenter is enough).

## Actor input object example

```json
{
  "operation": "prodej",
  "category": "byty",
  "locations": [
    "brno",
    "ostrava"
  ],
  "includeDetails": false,
  "maxItems": 200,
  "maxPagesPerSearch": 100,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "locations": [
        "praha"
    ],
    "maxItems": 200,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/sreality-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 = {
    "locations": ["praha"],
    "maxItems": 200,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/sreality-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 '{
  "locations": [
    "praha"
  ],
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/sreality-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/sreality-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/wTOEhbhgFaxCojDNn/builds/g4ZwDo8M65wpyseIg/openapi.json
