Sreality.cz Scraper — Czech Real Estate Data Extractor avatar

Sreality.cz Scraper — Czech Real Estate Data Extractor

Pricing

from $3.50 / 1,000 results

Go to Apify Store
Sreality.cz Scraper — Czech Real Estate Data Extractor

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

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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.

Apify Actor


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

ParameterTypeDefaultDescription
regionIdsstring[]requiredlocality_region_id values. Each becomes its own task.
transactionenumsalesale / rent / auction (maps to category_type_cb)
categoryenumapartmentapartment / house / land / commercial / other (maps to category_main_cb)
subtypeCodesstring[][]Optional category_sub_cb codes (pipe-joined in request)
priceMin / priceMaxint0CZK range (0 = no bound)
usableAreaMin / usableAreaMaxint0Usable m² range
estateAreaMin / estateAreaMaxint0Land/plot m² range
sortenumnewestnewest / price_asc / price_desc
perPageint60Page size (max 100, 60 safest)
maxListingsint200Total cap across all region tasks (0 = unlimited)
maxPagesPerTaskint10Pages per region. Sreality loops at ~page 100 on broad filters.
requestDelayint (ms)600Delay between page fetches
maxRetriesint3Retries on HTTP errors (rotates proxy IP)
proxyConfigurationobjectRESIDENTIAL+CZRESIDENTIAL recommended; datacenter usually OK at low volume

Region IDs (locality_region_id)

RegionID
Hlavní město Praha10
Středočeský kraj11
Jihočeský kraj13
Plzeňský kraj5
Karlovarský kraj2
Ústecký kraj9
Liberecký kraj4
Královéhradecký kraj3
Pardubický kraj6
Kraj Vysočina14
Jihomoravský kraj1
Olomoucký kraj12
Zlínský kraj15
Moravskoslezský kraj7

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)

CodeSubtype
21+kk
31+1
42+kk
52+1
63+kk
73+1
84+kk
94+1
105+kk
115+1
126 a více
16atypický

Houses (category=house, category_main_cb=2)

CodeSubtype
33rodinný (family)
35vila
37chalupa (cottage)
39chata (chalet)
40na klíč
43usedlost (homestead)
47zemědělská usedlost
48památka (heritage)

Land (category=land, category_main_cb=3)

CodeSubtype
18bydlení (residential)
19komerční
20pole (field)
21louka (meadow)
22les (forest)
23rybník (pond)
24sad (orchard)
25zahrada (garden)
26ostatní

Commercial (category=commercial, category_main_cb=4)

CodeSubtype
27kanceláře (offices)
28sklady (warehouses)
29výroba (production)
30obchodní prostory (retail)
31ubytování (accommodation)
32restaurace
41zemědělský objekt
50činžovní dům
51ostatní

Other (category=other, category_main_cb=5)

CodeSubtype
13garáž
14vinný sklep
15půdní prostor
17ostatní

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

  • adId is sreality's stable hash_id (numeric, but stored as string).
  • detailUrl is built from seo.{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.
  • apiUrl is the JSON detail endpoint — useful for v1.1 enrichment (fetchDetails flag, planned).
  • pricePerSqm is computed (price / usableArea); not provided by the API directly.
  • region / district / city are best-effort parsed from the locality string. For full administrative hierarchy use the detail endpoint (planned).
  • labels contain raw API labels like EXCLUSIVE_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 agentId cluster
  • Price tracking — re-run periodically and diff against prior datasets
  • Auction monitoring — set transaction: auction to track foreclosure inventory
  • Land scoutingcategory: land + estateAreaMin/Max for plot search
  • New-listings feedsort: newest + maxPagesPerTask: 1 for 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 fetchDetails flag.
  • 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_id across pages) and stops. Narrow with priceMin/Max or usableAreaMin/Max for 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 locality field; for guaranteed accuracy use the structured locality IDs from the detail endpoint (planned for v1.1).

Changelog

VersionDateNotes
1.0.02026-05-04Initial 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.