# Sreality.cz Scraper - Czech Property and Leads (`benthepythondev/sreality-scraper`) Actor

Scrape Sreality.cz listings with price, GPS, photos, description, parameters, agency website, and listing-agent email and phone for Czech real-estate research.

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

## Pricing

from $4.00 / 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/platform/actors/running/actors-in-store#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.cz Scraper - Czech Property and Leads

Scrape Czech property listings from Sreality.cz with full public listing details and real-estate contact data. Paste any Sreality search URL and export prices, price per square meter, address, GPS coordinates, disposition, photos, description, property parameters, agency website, and the listing agent's public name, email, and phone numbers.

The Actor supports homes for sale and rent, apartments, houses, land, commercial property, projects, and the location and filters selected on Sreality. It uses the structured Next.js state embedded in the public search and detail pages, so it is faster and less expensive than browser automation and requires no account or API key.

### Why use this Actor?

Sreality is a major Czech real-estate marketplace. Its search interface is useful for browsing, but extracting thousands of comparable listings, tracking changes, or collecting agency leads manually is impractical. The Actor converts the public data into one consistent row per property and optionally enriches every result from its detail page.

Typical uses include:

- monitoring sale and rental inventory by city or district;
- comparing price per square meter across Czech neighborhoods;
- building a property research dataset or dashboard;
- collecting public agent and agency contacts for relevant B2B workflows;
- tracking listing prices, discounts, and availability over time;
- mapping listings using exact latitude and longitude;
- studying property features such as condition, construction type, energy class, balcony, cellar, parking, and floor;
- feeding listings into Sheets, Airtable, a warehouse, Make, Zapier, n8n, or a custom application.

### Input

Open Sreality.cz, select your transaction, property type, location, price, size, and other filters, then paste the resulting search URL.

```json
{
  "searchUrls": [
    "https://www.sreality.cz/hledani/prodej/byty/praha"
  ],
  "includeDetails": true,
  "maxResultsPerUrl": 20,
  "maxPagesPerUrl": 10,
  "detailConcurrency": 4
}
```

#### Input fields

| Field | Description |
|---|---|
| `searchUrls` | One or more complete Sreality search-result URLs. |
| `includeDetails` | Add full description, parameters, media, agency, and agent contacts. |
| `maxResultsPerUrl` | Maximum unique listings saved for each search. |
| `maxPagesPerUrl` | Pagination safety limit for each search URL. |
| `detailConcurrency` | Maximum simultaneous public detail requests, capped at 8. |

The Actor preserves existing query parameters and changes only Sreality's `strana` page parameter. Default limits are bounded for reliable scheduled runs and Apify's daily automated test.

### Search-level output

Even without detail enrichment, each result can include:

- public listing ID, title, transaction, property type, and disposition;
- asking price, price summary, and CZK per square meter;
- street, city, district, region, country, and a normalized address;
- latitude, longitude, and source geo hash;
- main photo and all search-result photos;
- Matterport/video availability flags;
- agency ID and logo;
- direct detail URL and source search URL.

### Detail and contact enrichment

When `includeDetails` is enabled, the Actor reads the public detail state and adds:

- full listing description;
- old price when published;
- all high-resolution images;
- Matterport and video URLs;
- the complete structured property-parameter object;
- agency name, Czech company ID, website, logo, and review fields;
- listing agent ID, name, public email, phones, and image;
- a transparent `lead_score` from 0 to 100;
- `detail_enriched: true` so downstream workflows can distinguish enriched rows.

The lead score awards points only for fields actually found: email, phone, agency website, description, and GPS. It is a completeness score, not a prediction about whether somebody will reply or convert.

Example result:

```json
{
  "title": "Prodej bytu 2+kk 43 m2",
  "price_czk": 7890000,
  "price_per_sqm_czk": 183488,
  "address": "Chribska 59, Dablice",
  "latitude": 50.1503555,
  "longitude": 14.4887331,
  "agency_name": "Connecte REALITY",
  "agency_website": "https://connectereality.cz",
  "agent_name": "Rudolf Vyhnalek",
  "agent_email": "vyhnalek.r@connectereality.cz",
  "agent_phones": ["+420221343345"],
  "lead_score": 100
}
```

The live source preserves Czech accents; the example above is ASCII-only for portability.

### Property parameters

Sreality exposes a large structured parameter object on detail pages. Depending on the listing, it can include usable area, building condition and type, floor, ownership, energy rating, elevator, balcony, terrace, cellar, parking, utilities, furnishing, project information, edit date, and many other source fields. The Actor keeps this object in `property_parameters` rather than discarding uncommon attributes.

This makes the output resilient across apartments, houses, land, and commercial property: consumers can select the parameters relevant to their own model without requiring a new Actor field for every property subtype.

### Monitoring workflow

To monitor a Czech market segment:

1. save the filtered Sreality URLs as an Apify Task;
2. schedule daily or weekly runs;
3. use the listing ID as the stable key;
4. compare current price, old price, and detail availability against the previous dataset;
5. alert only on new listings or changes relevant to your criteria.

Store snapshots in a database if you need true historical analysis. The Actor reports the public state at run time and does not invent prior values that are no longer published.

### Lead-generation workflow

Public agent and agency fields can support legitimate B2B research, supplier discovery, partnership outreach, or CRM enrichment. Filter by region, agency, property type, and contact completeness before using the records. A public listing is not blanket consent for marketing. Follow Czech/EU privacy and electronic-communications law, honor opt-outs, and keep communication relevant to the professional listing context.

### Pricing

The Actor follows the portfolio's real-estate standard: a minimal start event and `$0.005` for each unique property stored in the default dataset. Public detail and contact enrichment is included in that result price when available; there is no hidden extra enrichment event. Duplicate listing IDs within one run are removed before storage.

### Reliability and scope

Sreality currently server-renders structured search and detail data. The Actor uses Chrome-compatible HTTP requests, limited concurrency, retries, and strict page/result limits. It does not use a browser, log in, reveal private contact data, or access Sreality Premium features.

Listings can be edited, reserved, removed, or sold at any time. Coordinates and addresses reflect the precision chosen by the advertiser. Verify important details on the linked listing and with the authorized seller before making financial decisions.

### FAQ

#### Do I need a Sreality account?

No. The Actor reads public listings.

#### Does it work for rentals and sales?

Yes. Paste the corresponding filtered search URL.

#### Are agent emails and phones included?

Yes when they are published in the listing's public structured data.

#### Can I disable detail requests?

Yes. Set `includeDetails` to false for faster card-level collection.

#### Does it paginate?

Yes. It advances Sreality's `strana` parameter until your result/page limit or the source total is reached.

#### Are all images included?

The search result provides many image URLs, and detail enrichment replaces them with the full detail image list when available.

#### Can I export CSV or Excel?

Yes. Apify datasets support JSON, CSV, Excel, XML, RSS, and API access. Nested parameters remain easiest to consume in JSON.

#### How do I report a source change?

Open an issue on the Actor page with the search URL and run ID. If the Actor saved you time, please leave a Store review; reviews help users compare tools and help prioritize maintenance.

### You might also like

- [European Real Estate Scrapers](https://apify.com/store?search=European%20real%20estate)
- [Property Lead Generation Actors](https://apify.com/store?search=property%20leads)
- [Czech Business Data](https://apify.com/store?search=Czech%20business)

**Keywords:** Sreality scraper, Sreality API, Czech real estate scraper, Prague apartments data, Czech property listings, real estate agent leads, property price per square meter, Czech rental scraper, Sreality contacts, Czech housing market data

# Actor input Schema

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

Paste Sreality.cz search-result URLs after applying property type, transaction, location, and other filters.

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

Visit public listing pages to add description, parameters, agency website, agent email and phone, videos, and all photos.

## `maxResultsPerUrl` (type: `integer`):

Maximum unique listings saved for each search URL.

## `maxPagesPerUrl` (type: `integer`):

Pagination safety limit for each search URL.

## `detailConcurrency` (type: `integer`):

Maximum simultaneous public detail-page requests.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.sreality.cz/hledani/prodej/byty/praha",
    "https://www.sreality.cz/hledani/pronajem/byty/praha"
  ],
  "includeDetails": true,
  "maxResultsPerUrl": 10,
  "maxPagesPerUrl": 5,
  "detailConcurrency": 4
}
```

# 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 = {
    "searchUrls": [
        "https://www.sreality.cz/hledani/prodej/byty/praha",
        "https://www.sreality.cz/hledani/pronajem/byty/praha"
    ],
    "includeDetails": true,
    "maxResultsPerUrl": 10,
    "maxPagesPerUrl": 5,
    "detailConcurrency": 4
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/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 = {
    "searchUrls": [
        "https://www.sreality.cz/hledani/prodej/byty/praha",
        "https://www.sreality.cz/hledani/pronajem/byty/praha",
    ],
    "includeDetails": True,
    "maxResultsPerUrl": 10,
    "maxPagesPerUrl": 5,
    "detailConcurrency": 4,
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/sreality-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 '{
  "searchUrls": [
    "https://www.sreality.cz/hledani/prodej/byty/praha",
    "https://www.sreality.cz/hledani/pronajem/byty/praha"
  ],
  "includeDetails": true,
  "maxResultsPerUrl": 10,
  "maxPagesPerUrl": 5,
  "detailConcurrency": 4
}' |
apify call benthepythondev/sreality-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bskhinH9DTlvKn2Mh/builds/4AUagjjVEJxEu3tYT/openapi.json
