This project collects real-estate listings from the Sreality website and turns them into structured, ready-to-use data. It handles apartments, houses, and land offers across Czech regions with fast execution and minimal memory requirements. The scraper focuses on delivering clean, consistent records that are easy to analyze or integrate.
Created by Bitbash, built to showcase our approach to Scraping and Automation!
If you are looking for Sreality scraper you've just found your team — Let’s Chat. 👆👆
The tool automates retrieval of real-estate listings, letting users specify regions, cities, property types, and transaction modes. It’s built for analysts, developers, and professionals who need reliable property data without manual searching.
- Filters results by region, city, property category, and sale/lease.
- Outputs clean, normalized datasets in EN or CZ format.
- Supports exporting everything into a single key-value storage file.
- Optionally extracts full listing descriptions and seller contact information.
- Efficient enough to run on just 256–512 MB RAM.
| Feature | Description |
|---|---|
| Region & city filtering | Choose one or multiple Czech regions or valid city names to target specific locations. |
| Multi-category scraping | Collect Apartments, Houses, and Lands, each with unique attribute sets. |
| Sale or lease modes | Toggle between sale listings and rental listings. |
| Text & contact extraction | Optionally gather full ad text plus seller contact details. |
| Dataset exporting | Save all scraped results into a single unified export file. |
| Language support | Get data in Czech or English field naming. |
| Dataset reset option | Automatically drop previous datasets before running new jobs. |
| Lightweight performance | Designed to run on extremely low memory environments. |
| Field Name | Field Description |
|---|---|
| Hash_id | Listing identifier assigned by the platform. |
| Date / Datum | Date when the listing was captured. |
| Area / Kraj | Region where the property is located. |
| Category | Property type group (Apartments, Houses, Lands). |
| Type | Sale or Lease mode. |
| Sub_Type / Dispozice | Layout or subtype of the listing. |
| Name / Titulek | Display title of the offer. |
| Text | Full listing description (optional). |
| Price / Cena | Total price of the listing. |
| m2 | Size in square meters. |
| Price_m2 | Price per square meter. |
| Structural flags | Boolean attributes (Balcony, Terrace, Elevator, etc.). |
| Locality | Full address or locality description. |
| GPS_lat / GPS_lon | Property coordinates. |
| Contact fields | Seller contact details and company information. |
| URL_AD | Full link to the listing. |
| Rus | Internal relevance flag. |
[
{
"Hash_id": 581132875,
"Datum": "2025-05-22",
"Kraj": "Praha",
"Kategorie": "Byty",
"Typ": "Prodej",
"Dispozice": "1+kk",
"Titulek": "Prodej bytu 1+kk 34 m²",
"Text": "Byt č. 2096: Kompaktní 1+kk se západní orientací ....",
"Cena": 6133658,
"m2": 34,
"Cena_m2": 180402,
"Garaz": false,
"Vytah": false,
"Balkon": false,
"Sklep": false,
"Lodzie": false,
"Parkovaci_misto": false,
"Terasa": false,
"Zarizene": false,
"Castecne_zarizeno": false,
"Neni_zarizeno": false,
"Panel": false,
"Cihla": false,
"Novostavba": true,
"Po_rekonstrukci": false,
"V_rekonstrukci": false,
"Osobni": true,
"Statni": false,
"Spolecne": false,
"Lokalita": "Vosátkova, Praha 8",
"GPS_lat": 50.014977,
"GPS_lon": 14.437129,
"Exklusivni_rk": false,
"URL_AD": "https://www.sreality.cz/detail/prodej/byt/1+kk/praha-kamyk-vostkova/581176",
"Contact_id": 123456,
"Contact_name": "Karel Novak",
"Contact_email": "email@seznam.cz",
"Contact_phone": ["420737123456", "420773000001"],
"Company_id": 1234,
"Company_name": "Krapol a.s.",
"Company_url": "https://www.sreality.cz/adresar/Krapol-a-s/123",
"Rus": false
}
]
Sreality scraper/
├── src/
│ ├── main.py
│ ├── engine/
│ │ ├── listing_extractor.py
│ │ ├── parser_apartments.py
│ │ ├── parser_houses.py
│ │ └── parser_lands.py
│ ├── utils/
│ │ ├── geo_utils.py
│ │ └── text_cleaner.py
│ ├── exporters/
│ │ └── dataset_exporter.py
│ └── config/
│ └── settings.example.json
├── data/
│ ├── inputs.sample.json
│ └── sample_output.json
├── requirements.txt
└── README.md
- Analysts use it to gather regional pricing data so they can compare market trends across Czech districts.
- Real-estate agencies use it to monitor competitor listings, helping them adjust pricing and portfolio strategies.
- Investors use it to identify attractive areas or undervalued properties, improving decision-making.
- Data engineers integrate the scraper into ETL pipelines to keep property datasets continuously updated.
- Researchers use it to study housing availability, rental patterns, and urban development changes.
Does it support multiple regions at once? Yes. You can provide an array of Czech regions, and the scraper fetches results for all of them in one run.
Do all property types return the same fields? No. Apartments, Houses, and Lands each include different attributes depending on what the listing provides.
Can I collect seller contact data? Yes. Enable the text-and-contact extraction option to save descriptions and contact details.
Do I need high hardware resources? Not at all. It’s optimized to run smoothly on just 256–512 MB of RAM.
Primary Metric: The scraper processes typical region-level queries at an average speed of several hundred listings per minute, depending on filters applied.
Reliability Metric: In controlled runs, listings were successfully captured more than 98 percent of the time without interruption.
Efficiency Metric: Engineered to operate on extremely low memory consumption, often remaining under 400 MB even during large pulls.
Quality Metric: Field completeness for supported categories consistently reaches above 95 percent due to structured attribute detection.
