Novostavby Byty Scraper ČR avatar

Novostavby Byty Scraper ČR

Under maintenance

Pricing

$4.90 / 1,000 apartment in datasets

Go to Apify Store
Novostavby Byty Scraper ČR

Novostavby Byty Scraper ČR

Under maintenance

Scrape new-build apartments in Czechia from Sreality.cz, Novostavby.com and developer websites into one normalized dataset: prices, price per m², availability, projects — deduplicated across sources.

Pricing

$4.90 / 1,000 apartment in datasets

Rating

0.0

(0)

Developer

Kenny Ha

Kenny Ha

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Novostavby Byty Scraper ČR — Czech New Development Apartments

Scrape Czech new-build apartment inventory — novostavby — from Sreality.cz, Novostavby.com and developer websites into one normalized dataset.

Novostavby is the Czech word for new-build developments, and that is exactly what this Actor covers: new-build apartments (novostavby byty) across Czechia, from Prague (novostavby Praha) to regional cities.

Every run returns:

✓ Apartment prices ✓ Price per m² ✓ Disposition (layout) ✓ Floor ✓ Floor area ✓ Developer ✓ Project and stage ✓ Availability ✓ Location (city, district, GPS where published) ✓ Cross-source deduplication ✓ Price and status monitoring when enabled

Supported sources

SourceWhat it contributes
Sreality.czNew-build apartment listings: price, floor area, floor, ownership, energy class, GPS, description, photos, seller
Novostavby.comDevelopment project database: developer, location, unit count, move-in date, construction start, completion, architect
FINEPDirect developer inventory: official unit number, project and stage, orientation, balcony area, price incl. VAT, real availability

Try it with the Run button — the default input scrapes all three sources and needs no configuration. Results export to JSON, CSV, Excel or XML, and every field is available through the Apify API.

Why use this Actor

Most Czech real estate scrapers give you one portal. This one answers a narrower and more valuable question: what is actually for sale in Czech new developments, and how is it repriced over time.

  • Portal listings and developer inventory. A developer's own site publishes the official unit number, the concrete stage and whether a flat is reserved — a portal listing does not.
  • One schema across sources. Same field names, same units, null where a source does not publish something. No per-source parsing on your side.
  • Values read from labelled fields, never from "the first number on the page". A FINEP apartment page also contains a mortgage calculator; the price is taken only from the Cena vč. DPH field. A Novostavby.com project page also shows a promoted different project; labels are read only from that project's own detail block.
  • Nothing is invented. Floor area comes from the detail payload or the listing title, never divided out of price and price per m². Values outside a plausible range are rejected and stored as null rather than published as facts.
  • Deterministic IDs. canonical_id is derived from stable properties, so the same apartment keeps the same id between runs — which is what makes price history possible.

Example use cases

  • Market research — price per m² by project, district and layout across the Czech new-build market (trh novostaveb).
  • Investment screening — spot repriced units with price_dropped, or fresh inventory with is_new.
  • Developer pricing — compare a project against comparable stages in the same district.
  • Estate agencies and lead generation — units that just came to market or changed availability.
  • Proptech and comparison sites — one normalized feed instead of three site-specific parsers.
  • AI agents and property databases — stable schema with ids that survive across runs.

Ready-to-run examples

ExampleWhat it does
Prague New Build ApartmentsAvailable new-build apartments in Prague from all three sources
Sreality New Build ApartmentsCzech new-build listings from Sreality.cz only
FINEP Available ApartmentsCurrently available units straight from the developer

Also available: Czech New Development Market Monitor (all sources, deduplication and history, built for scheduling) and Prague 2+kk and 3+kk New Apartments.

Input

Everything is optional. The defaults scrape all three sources.

{
"sources": ["sreality", "finep", "novostavby"],
"dealTypes": ["sale"],
"maxItems": 1000,
"includeDetails": true,
"cities": ["Praha"],
"districts": ["Praha 9"],
"dispositions": ["2+kk", "3+kk"],
"minPrice": 4000000,
"maxPrice": 12000000,
"minArea": 40,
"maxArea": 120,
"developers": ["FINEP"],
"onlyAvailable": true,
"deduplicate": true,
"trackHistory": false,
"includeProjectSummaries": false
}

maxItems is the only limit you need to think about. The Actor derives its request budget from it and splits it evenly between the selected sources, so one source cannot consume the budget and starve the others.

Filters are applied after the data is normalized, so they never change how a page is parsed. A listing that simply does not state a value is kept, not dropped.

For Prague and other cities, filter with cities rather than region: Sreality publishes a region for every listing, but developer pages and project pages usually do not.

Output

Two real records from a production run (22 August 2026), unchanged.

Developer inventory (FINEP):

{
"source": "finep.cz",
"record_type": "unit",
"unit_id": "302/C3",
"developer": "FINEP",
"project_name": "Byty Britská čtvrť",
"project_stage": "Byty Britská čtvrť XVIII",
"disposition": "2+kk",
"area_m2": 45.7,
"floor": 3,
"orientation": "S",
"balcony_m2": 7.8,
"ownership": "personal",
"price_czk": 8144469,
"price_per_m2": 178216,
"status": "available",
"status_raw": "K prodeji",
"construction_status": "under_construction",
"city": "Praha",
"unit_url": "https://www.finep.cz/cs/byty-britska-ctvrt-xviii/byt-302-c3",
"project_url": "https://www.finep.cz/cs/byty-britska-ctvrt"
}

Portal listing (Sreality.cz):

{
"source": "sreality.cz",
"record_type": "unit",
"listing_id": "1542049868",
"disposition": "2+kk",
"area_m2": 51,
"floor": 1,
"total_floors": 3,
"ownership": "personal",
"energy_class": "B",
"price_czk": 7499000,
"price_per_m2": 147039,
"status": "available",
"city": "Praha",
"city_part": "Bohnice",
"district": "Praha 8",
"region": "Hlavní město Praha",
"address": "V Zámcích 51/34, Praha - Bohnice",
"latitude": 50.13979,
"longitude": 14.397823,
"seller_name": "GEPARD REALITY/Living",
"unit_url": "https://www.sreality.cz/detail/prodej/byt/2+kk/praha-bohnice-v-zamcich/1542049868"
}

Fields a source does not publish are null, never an empty string and never a guess.

Output fields

Apartments (record_type: "unit")

FieldMeaning
canonical_idDeterministic id — developer + project stage + unit number, or source + listing id. Stable across runs.
sourcefinep.cz, sreality.cz
listing_id / unit_idPortal listing id / the developer's own unit designation (e.g. 302/C3)
developer, project_name, project_stageproject_name is the umbrella project, project_stage the concrete building or phase
deal_type, property_type, dispositionsale / rent, apartment, Czech layout such as 2+kk (6+ for six rooms and more)
area_m2, floor, total_floorsApartment floor area; floor number (negative for basement levels)
orientationCompass orientation as published (J, SZ, …)
balcony_m2, loggia_m2, terrace_m2, garden_m2, cellar_m2Auxiliary areas, kept apart from the apartment area
ownership, parking, garagepersonal / cooperative / municipal; booleans
price_czk, price_per_m2Price; price per m² computed only when both price and area are valid
status, status_rawavailable / reserved / sold, plus the original Czech wording
construction_status, construction_status_rawunder_construction / nearing_completion / completed / planned, plus the original wording
city, city_part, district, municipality, region, addressLocation, as granular as the source publishes it
latitude, longitudeOnly where the source publishes real coordinates
energy_classAG
description, seller_name, seller_type, imagesPortal-side context
unit_url, project_url, source_urlListing page, project page, the page the record was discovered on
duplicate_group_id, dedupe_confidence, sources_found, offersDeduplication result and provenance
first_seenis_removedHistory fields, filled only with trackHistory

Development projects (record_type: "project")

project_id, project_name, status, status_raw, developer, district, location, city, region, move_in_from, units_count, price_from_czk, price_to_czk, architect, general_contractor, construction_start, completion, designer, energy_class, description, official_project_url, project_url.

Project summaries (record_type: "project_summary", opt-in)

total_units_seen, available_units, reserved_units, sold_units, price_from_czk, price_to_czk, price_per_m2_min|avg|median|max, dispositions. These describe the units collected in that run, not a developer's full inventory.

Deduplication

The same apartment can be listed by the developer and by a portal. Records are merged only across different sources and only when a location identifier matches — never on layout, area and price alone:

RuleConditiondedupe_confidence
1Same developer + project + unit numberexact
2Same project + layout + area ±1 m² + floor + price ±3 %high
3Same address + layout + area ±1 m² + floor + price ±3 %medium

The developer record wins for identity and availability; the portal record contributes description, seller, photos and coordinates. Every source stays in sources_found and every price in offers, so merging never loses evidence. The rules deliberately merge less rather than risk merging two different flats.

Price and availability monitoring

Set trackHistory: true and the Actor compares each run against the previous ones, filling in:

first_seen, last_seen, previous_price_czk, price_change_czk, price_change_percent, price_changed, price_dropped, price_increased, previous_status, status_changed, is_new.

The history lives in a named key-value store inside your own Apify account, keyed by canonical_id. It starts with your first run that has it enabled; entries not seen for 180 days are pruned. With includeRemoved: true you also get one row per unit that disappeared from the offer, flagged is_removed.

Example workflows

  • Weekly market snapshot — schedule the market monitor example weekly, then chart price_per_m2 by district from the dataset.
  • Discount watch — run daily with trackHistory: true and filter the dataset for price_dropped: true.
  • New inventory alert — filter for is_new: true and push the rows to Slack or a spreadsheet through an Apify integration.
  • Project deep dive — set developers and includeProjectSummaries: true for per-project price statistics.

API usage

# Run and get results in one call
curl -X POST "https://api.apify.com/v2/acts/huykenny~novostavby-byty-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sources":["sreality"],"cities":["Praha"],"dispositions":["3+kk"],"maxItems":100}'

The dataset is also available as JSON, CSV, Excel and XML, and through the Apify integrations for Make, Zapier, Google Drive, webhooks and MCP.

Scheduling

Price history is only useful when the Actor runs regularly. On the Actor page choose Schedules → Create schedule, point it at a task with trackHistory: true and a fixed historyStoreName, and you get a moving picture of the market rather than a snapshot.

Pricing

This Actor uses pay-per-result pricing: $4.90 per 1,000 dataset items. You pay only for result events actually charged, according to the Apify Store pricing shown above; Apify platform usage is included in that price.

Deduplication reduces the number of billed items. includeProjectSummaries and includeRemoved add rows, which is why both are off by default.

FAQ

What does the Actor cover? New-build apartments and development projects from the three sources listed above. It is not a complete index of the Czech property market, and it does not cover every Czech developer — currently one developer site (FINEP) is integrated directly.

How many results can I get? Sreality lists roughly 5,000 new-build apartments and Novostavby.com around 1,000 projects currently in sale. FINEP publishes about a hundred units at a time. Set maxItems to what you need.

Why are some fields null? Because the source does not publish them. FINEP does not state GPS or energy class per unit; Novostavby.com does not publish per-project coordinates. null means "not published", not "not scraped".

Why is status always available on Sreality? Sreality does not publish reservations. A listing that is online is being offered; reserved and sold come from developer sources.

Do I need the detail pages? For Sreality, yes if you want floor area, floor, ownership or energy class — the listing page does not contain them. includeDetails: false makes runs cheaper and the data thinner.

Hledáte scraper novostaveb? Yes — this is it. The Actor covers novostavby across Sreality.cz, the Novostavby.com project database and developer inventory, with Czech field values (1+kk, 2+kk, K prodeji) preserved in disposition and status_raw alongside the normalized English values.

Can another developer be added? Each source is a self-contained module, so adding one is a contained change. Ask through the Issues tab.

Responsible usage

The Actor reads publicly available pages, the same ones any visitor can open, at a modest request rate. Respect each site's terms of use, do not republish scraped content wholesale, and mind Czech and EU rules on personal data — listing contacts are personal data even when published. You are responsible for how you use the output.


Česky — scraper novostaveb

Sbírá nabídku novostaveb a bytů v novostavbách v ČR ze Sreality.cz, Novostavby.com a z webů developerů (zatím FINEP) do jednoho normalizovaného datasetu: ceny, cena za m², dispozice, patro, plocha, developer, projekt, dostupnost a lokalita. Pokrývá novostavby Praha i krajská města.

  • Hodnoty se čtou z pojmenovaných polí, ne regexem přes celou stránku.
  • Plocha se nikdy nedopočítává z ceny; co zdroj neuvádí, je null.
  • Byt inzerovaný developerem i portálem se spojí do jednoho záznamu, ale zůstane u něj seznam zdrojů (sources_found) i všechny ceny (offers).
  • Volitelná historie cen a stavů (trackHistory) běží v key-value storu vašeho účtu.

Hlavní vstup je maxItems — rozpočet requestů si Actor odvodí sám a rozdělí ho mezi zdroje. Pro Prahu filtrujte přes cities, ne region. Účtuje se $4,90 za 1 000 záznamů.