Sreality.cz Scraper — Czech Real Estate Data Extractor
Pricing
from $3.50 / 1,000 results
Sreality.cz Scraper — Czech Real Estate Data Extractor
Scrape real estate listings from Sreality.cz — Czech Republic's #1 property portal. Extract apartments, houses, land and commercial properties by region, price (CZK), area and subtype. Direct JSON API access (no browser): price, m², GPS, locality, agency, image gallery and exclusivity flags per ad.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Sreality.cz Real Estate Scraper
Extract property listings from sreality.cz — Czech Republic's #1 real estate portal (Seznam.cz). Scrape apartments, houses, land, commercial space and other property categories by region, transaction type (sale / rent / auction), subtype, price (CZK), surface area and land area.
How It Works
Sreality exposes a public, undocumented JSON API at /api/cs/v2/estates. The actor fetches it directly via got-scraping, paginates by page + per_page, and maps the embedded estates[] array into flat records. No HTML, no browser, no cheerio — purely structured JSON in/out.
GET https://www.sreality.cz/api/cs/v2/estates ?category_main_cb={1=apt|2=house|3=land|4=commercial|5=other} &category_type_cb={1=sale|2=rent|3=auction} &category_sub_cb={pipe|sep|sub|codes} &locality_country_id=10001 &locality_region_id={1..14} &czk_price_from=&czk_price_to= &usable_area_from=&usable_area_to= &estate_area_from=&estate_area_to= &per_page=60&page={N}&sort={0|1|2}
Sreality's API does not deploy heavy bot defense (no DataDome / Reese84 / Akamai). Datacenter Apify Proxy works at low volume; RESIDENTIAL with country=CZ is recommended for sustained scraping.
Input
{"regionIds": ["10"],"transaction": "sale","category": "apartment","subtypeCodes": ["4", "5", "6", "7"],"priceMin": 3000000,"priceMax": 8000000,"usableAreaMin": 40,"usableAreaMax": 120,"estateAreaMin": 0,"estateAreaMax": 0,"sort": "newest","perPage": 60,"maxListings": 500,"maxPagesPerTask": 20,"requestDelay": 600,"maxRetries": 3,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "CZ" }}
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
regionIds | string[] | required | locality_region_id values. Each becomes its own task. |
transaction | enum | sale | sale / rent / auction (maps to category_type_cb) |
category | enum | apartment | apartment / house / land / commercial / other (maps to category_main_cb) |
subtypeCodes | string[] | [] | Optional category_sub_cb codes (pipe-joined in request) |
priceMin / priceMax | int | 0 | CZK range (0 = no bound) |
usableAreaMin / usableAreaMax | int | 0 | Usable m² range |
estateAreaMin / estateAreaMax | int | 0 | Land/plot m² range |
sort | enum | newest | newest / price_asc / price_desc |
perPage | int | 60 | Page size (max 100, 60 safest) |
maxListings | int | 200 | Total cap across all region tasks (0 = unlimited) |
maxPagesPerTask | int | 10 | Pages per region. Sreality loops at ~page 100 on broad filters. |
requestDelay | int (ms) | 600 | Delay between page fetches |
maxRetries | int | 3 | Retries on HTTP errors (rotates proxy IP) |
proxyConfiguration | object | RESIDENTIAL+CZ | RESIDENTIAL recommended; datacenter usually OK at low volume |
Region IDs (locality_region_id)
| Region | ID |
|---|---|
| Hlavní město Praha | 10 |
| Středočeský kraj | 11 |
| Jihočeský kraj | 13 |
| Plzeňský kraj | 5 |
| Karlovarský kraj | 2 |
| Ústecký kraj | 9 |
| Liberecký kraj | 4 |
| Královéhradecký kraj | 3 |
| Pardubický kraj | 6 |
| Kraj Vysočina | 14 |
| Jihomoravský kraj | 1 |
| Olomoucký kraj | 12 |
| Zlínský kraj | 15 |
| Moravskoslezský kraj | 7 |
The above IDs are best-effort based on community references. To verify any ID, open sreality.cz, pick the region in the filter, and inspect the network tab — the request URL contains
locality_region_id={ID}.
Subtype Codes (category_sub_cb)
Apartments (category=apartment, category_main_cb=1)
| Code | Subtype |
|---|---|
| 2 | 1+kk |
| 3 | 1+1 |
| 4 | 2+kk |
| 5 | 2+1 |
| 6 | 3+kk |
| 7 | 3+1 |
| 8 | 4+kk |
| 9 | 4+1 |
| 10 | 5+kk |
| 11 | 5+1 |
| 12 | 6 a více |
| 16 | atypický |
Houses (category=house, category_main_cb=2)
| Code | Subtype |
|---|---|
| 33 | rodinný (family) |
| 35 | vila |
| 37 | chalupa (cottage) |
| 39 | chata (chalet) |
| 40 | na klíč |
| 43 | usedlost (homestead) |
| 47 | zemědělská usedlost |
| 48 | památka (heritage) |
Land (category=land, category_main_cb=3)
| Code | Subtype |
|---|---|
| 18 | bydlení (residential) |
| 19 | komerční |
| 20 | pole (field) |
| 21 | louka (meadow) |
| 22 | les (forest) |
| 23 | rybník (pond) |
| 24 | sad (orchard) |
| 25 | zahrada (garden) |
| 26 | ostatní |
Commercial (category=commercial, category_main_cb=4)
| Code | Subtype |
|---|---|
| 27 | kanceláře (offices) |
| 28 | sklady (warehouses) |
| 29 | výroba (production) |
| 30 | obchodní prostory (retail) |
| 31 | ubytování (accommodation) |
| 32 | restaurace |
| 41 | zemědělský objekt |
| 50 | činžovní dům |
| 51 | ostatní |
Other (category=other, category_main_cb=5)
| Code | Subtype |
|---|---|
| 13 | garáž |
| 14 | vinný sklep |
| 15 | půdní prostor |
| 17 | ostatní |
Output
Example record:
{"adId": "2614321500","detailUrl": "https://www.sreality.cz/detail/prodej/byt/2%2Bkk/praha-5-smichov-stroupeznickeho/2614321500","apiUrl": "https://www.sreality.cz/api/cs/v2/estates/2614321500","title": "Prodej bytu 2+kk 50 m²","category": "apartment","categoryCode": 1,"transactionType": "sale","transactionCode": 1,"subtype": "2+kk","subtypeCode": 4,"price": 5500000,"priceText": "5 500 000 Kč","priceUnit": "Kč","priceNote": null,"currency": "CZK","pricePerSqm": 110000,"usableArea": 50,"estateArea": null,"locality": "Praha 5 - Smíchov, Stroupežnického","region": null,"district": "Praha 5 - Smíchov","city": "Praha","latitude": 50.0729,"longitude": 14.4083,"mainImageUrl": "https://d18-a.sdn.cz/d_18/c_img.../image.jpg","imageUrls": ["https://d18-a.sdn.cz/.../1.jpg", "https://d18-a.sdn.cz/.../2.jpg"],"imageCount": 12,"hasFloorPlan": true,"hasVideo": false,"has3dTour": false,"agentId": "1234","agentName": "Reality XYZ s.r.o.","agentLogoUrl": "https://d18-a.sdn.cz/.../logo.png","agentUrl": "https://www.sreality.cz/firma/reality-xyz/1234","isExclusive": true,"isNew": false,"isAuction": false,"isTopped": false,"labels": ["EXCLUSIVE_OFFER"],"seoLocality": "smichov-praha-5","searchRegionId": 10,"searchCategory": "apartment","searchTransaction": "sale","searchSubtypes": [4],"scrapedAt": "2026-05-04T13:00:00.000Z"}
Notes
adIdis sreality's stablehash_id(numeric, but stored as string).detailUrlis built fromseo.{category_type_cb,category_main_cb,category_sub_cb,locality}+hash_id. If any slug is missing the URL will still resolve — sreality redirects on hash_id alone.apiUrlis the JSON detail endpoint — useful for v1.1 enrichment (fetchDetailsflag, planned).pricePerSqmis computed (price / usableArea); not provided by the API directly.region/district/cityare best-effort parsed from thelocalitystring. For full administrative hierarchy use the detail endpoint (planned).labelscontain raw API labels likeEXCLUSIVE_OFFER,NEW,LOWERED_PRICE,RECOMMENDED.
Use Cases
- Market research — CZK/m² heatmaps by region, district and subtype
- Investment screening — yield = monthly rent / sale price per area
- Lead generation — discover all active agencies via
agentIdcluster - Price tracking — re-run periodically and diff against prior datasets
- Auction monitoring — set
transaction: auctionto track foreclosure inventory - Land scouting —
category: land+estateAreaMin/Maxfor plot search - New-listings feed —
sort: newest+maxPagesPerTask: 1for daily delta
Cost & Performance
- Architecture: pure HTTP + JSON parse. No browser, no DOM, no images downloaded.
- Throughput: 60 listings per page, ≈ 1-2 pages/sec at default
requestDelay=600. ≈ 200 listings in 4-8s. - Memory: 256MB minimum.
- Compute Units: ~0.002 CU per 100 listings.
Limitations
- Listing-level data only in v1.0. Detail-only fields (full description, energy class, floor number, year built, full amenities list, all images at full resolution) require a second per-item API call — planned for v1.1 behind a
fetchDetailsflag. - Pagination ceiling — sreality's API loops at ~100 pages on broad filters (returns the same first page repeatedly). The actor detects this loop (compares the first
hash_idacross pages) and stops. Narrow withpriceMin/MaxorusableAreaMin/Maxfor full coverage of saturated regions. - Subtype codes are documented best-effort. If a code returns 0 results you may need to verify it via DevTools on a live filter.
- Locality parsing (city / district) uses heuristics on the free-text
localityfield; for guaranteed accuracy use the structured locality IDs from the detail endpoint (planned for v1.1).
Changelog
| Version | Date | Notes |
|---|---|---|
| 1.0.0 | 2026-05-04 | Initial release — direct JSON API scraping via /api/cs/v2/estates, 14 regions, 5 categories, 3 transaction types, 40+ subtype codes, full pagination with loop detection, image gallery extraction, agency embedding, structured price/area/GPS output. |