Bezrealitky Real Estate Scraper
Pricing
Pay per event
Bezrealitky Real Estate Scraper
Scrape direct-owner property listings from Bezrealitky search pages with prices, locations, photos, amenities, and listing URLs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape public direct-owner real estate listings from Bezrealitky search pages into clean, analysis-ready data.
Use this actor when you need current Czech, Slovak, or German property inventory from Bezrealitky without copying listings by hand. It accepts one or more public search URLs, follows listing pagination, normalizes pricing and property attributes, and returns one dataset row per listing.
What does Bezrealitky Real Estate Scraper do?
Bezrealitky Real Estate Scraper extracts structured data from public Bezrealitky listing/search pages.
It is designed for repeatable monitoring, spreadsheet exports, and API workflows:
- 🏠 Scrapes public sale and rental search URLs.
- 📍 Captures address text and GPS coordinates when Bezrealitky exposes them.
- 💰 Normalizes price, currency, monthly charges, original price, and discount flags.
- 📐 Extracts floor area, land area, disposition, estate type, and offer type.
- 🖼️ Returns main image and image gallery URLs.
- 🔁 Follows pagination until
maxResultsis reached. - ⚡ Uses HTTP extraction from server-rendered page data, so runs are fast and inexpensive.
Who is it for?
Real estate investors
Track direct-owner apartments and houses before they are manually entered into your own valuation model.
Typical investor questions:
- Which Prague 2+kk listings were newly added this week?
- Which apartments have a lower price than similar units in the same district?
- Which listings include parking, balcony, terrace, or garden tags?
Brokers and buyer agents
Monitor owner-listed inventory and keep clients informed about new opportunities that are not always visible in agency feeds.
Useful broker workflows:
- Daily watchlists for client search criteria.
- Quick exports for comparable listings.
- Lead prioritization based on price, surface, location, and listing age signals.
Proptech and analytics teams
Feed public listing data into dashboards, pricing models, internal APIs, or market intelligence products.
Common proptech use cases:
- Inventory trend tracking by offer type and city.
- Direct-owner supply monitoring.
- Geo-analysis using latitude and longitude.
- Enrichment pipelines that combine listings with neighborhood or transport data.
Relocation consultants and researchers
Create repeatable snapshots of rental or sale markets for specific regions, budgets, and property types.
Research examples:
- Compare rental availability across Prague, Brno, Bratislava, or Berlin-focused pages.
- Track surface and price distribution by disposition.
- Build recurring datasets for market reports.
Why use this actor?
Manual copy-paste from real estate portals is slow, inconsistent, and hard to repeat. This actor gives you a stable dataset structure that works in exports, APIs, and scheduled runs.
Key benefits:
- ✅ Fast HTTP runs — no browser is launched for normal search scraping.
- ✅ Normalized output — numbers are numbers, booleans are booleans, and URLs are complete.
- ✅ Direct-owner focus — Bezrealitky specializes in owner-to-buyer/renter listings.
- ✅ Pagination support — start from a search URL and let the actor collect more rows.
- ✅ Optional detail pages — enable richer descriptions only when you need them.
- ✅ Low-cost monitoring — pay per run and per listing, with tiered per-result discounts.
What data can you extract?
The default dataset contains one row per property listing.
| Field | Type | Description |
|---|---|---|
id | string | Bezrealitky listing identifier |
url | string | Canonical listing URL |
title | string | Listing title as shown by Bezrealitky |
offerType | string | Sale/rent offer type, for example PRODEJ |
estateType | string | Property category, for example apartment or house |
disposition | string | Layout/disposition value when available |
address | string | Public address/locality text |
price | number | Asking price |
originalPrice | number | Previous/original price when exposed |
currency | string | Currency code, usually CZK |
charges | number | Monthly charges/fees when exposed |
surface | number | Interior floor area in square meters |
surfaceLand | number | Land area in square meters when available |
latitude | number | Latitude when available |
longitude | number | Longitude when available |
tags | array | Listing tags such as parking, furnished, new building |
imageUrls | array | Image gallery URLs |
mainImageUrl | string | Primary listing image URL |
isNew | boolean | Whether Bezrealitky marks the listing as new |
isReserved | boolean | Whether the listing is reserved |
isHighlighted | boolean | Whether Bezrealitky highlights the listing |
isDiscounted | boolean | Whether the listing is discounted |
description | string | Detail-page text when includeDetails is enabled |
scrapedAt | string | ISO timestamp of extraction |
How much does it cost to scrape Bezrealitky listings?
This actor uses Apify pay-per-event pricing:
- Start event: $0.005 per run.
- Result event: charged once for each listing extracted.
- Bronze per-listing price: $0.00007641.
- Free tier per-listing price: $0.000087872.
- Higher Apify subscription tiers receive lower per-listing prices.
Approximate user-facing cost examples before any Apify platform credits or discounts:
| Run size | Formula at Free tier | Estimated charge |
|---|---|---|
| 20 listings | $0.005 + 20 × $0.000087872 | $0.0068 |
| 100 listings | $0.005 + 100 × $0.000087872 | $0.0138 |
| 500 listings | $0.005 + 500 × $0.000087872 | $0.0489 |
| 1,000 listings | $0.005 + 1,000 × $0.000087872 | $0.0929 |
If you are on Apify's Free plan, your included platform credits should cover many small monitoring runs. For example, a 100-listing run is roughly one to two cents at the Free-tier event price. Your final bill can also include Apify platform usage according to your account plan.
Pricing tiers
Per-listing result prices currently configured for this actor:
| Tier | Price per listing |
|---|---|
| FREE | $0.000087872 |
| BRONZE | $0.00007641 |
| SILVER | $0.0000596 |
| GOLD | $0.000045846 |
| PLATINUM | $0.000030564 |
| DIAMOND | $0.000021395 |
The actor also charges the fixed $0.005 start event once per run.
How to use
- Open Bezrealitky and create the search you want to monitor.
- Copy the public search/listing URL from your browser.
- Paste it into
startUrls. - Set
maxResultsto control run size and cost. - Keep
includeDetailsdisabled for broad, fast monitoring. - Enable
includeDetailsonly if you need long descriptions from detail pages. - Run the actor.
- Download results from the dataset as JSON, CSV, Excel, XML, or RSS.
Input configuration
| Input | Type | Default | Description |
|---|---|---|---|
startUrls | array | sample sale URL | One or more public Bezrealitky search URLs |
maxResults | integer | 50 | Maximum listings to return across all URLs |
includeDetails | boolean | false | Open listing detail pages for richer text |
maxRequestRetries | integer | 3 | Retry count for transient HTTP failures |
Example input:
{"startUrls": ["https://www.bezrealitky.cz/vypis/nabidka-prodej/byt"],"maxResults": 100,"includeDetails": false,"maxRequestRetries": 3}
Search URL examples
Use URLs copied from Bezrealitky after applying your filters.
Good inputs include:
- Public sale apartment search pages.
- Public rental apartment search pages.
- City or region filtered searches.
- Search pages with price, layout, or surface filters already applied.
Avoid inputs that require login, saved-account state, or private user sessions.
Output example
A typical dataset item looks like this:
{"id": "1015032","url": "https://www.bezrealitky.cz/nemovitosti-byty-domy/1015032-nabidka-prodej-bytu-holeckova-praha","title": "Prodej bytu 2+kk 38 m², Holečkova, Praha","offerType": "PRODEJ","estateType": "BYT","disposition": "DISP_2_KK","address": "Holečkova, Praha - Košíře","price": 7290000,"currency": "CZK","charges": 0,"surface": 38,"latitude": 50.0722981,"longitude": 14.3881939,"tags": ["Novostavba", "Částečně vybaveno", "Parkování"],"mainImageUrl": "https://api.bezrealitky.cz/media/cache/record_thumb/data/images/advert/1015k/1015032/1776776931-agvowzcuqc-7-2.jpg","isNew": false,"isReserved": false,"isDiscounted": false,"scrapedAt": "2026-05-21T12:24:05.616Z"}
Tips for better results
- Start with a filtered Bezrealitky search URL instead of a broad homepage URL.
- Use smaller
maxResultsvalues for daily monitoring and larger values for one-off market snapshots. - Keep
includeDetailsoff unless descriptions are required; search pages already contain most structured fields. - Use multiple start URLs when you want to compare different cities, offer types, or property categories.
- Schedule the actor daily or weekly and compare datasets over time.
- Export CSV for quick spreadsheet work; use JSON for downstream APIs.
Integrations
Apify datasets can be sent into the tools your team already uses.
Common integration patterns:
- 📊 Google Sheets — export current listings for analysts and agents.
- 🧱 BigQuery / Snowflake — append recurring snapshots for market analytics.
- 🐘 PostgreSQL — store normalized rows for internal applications.
- ⚙️ Make or Zapier — trigger notifications when new listings match your filters.
- 🔔 Slack or email alerts — send summaries for newly scraped listings.
- 🗺️ GIS tools — map latitude and longitude for location analysis.
API usage
You can run this actor from the Apify Console, API, CLI, or official clients. The actor ID is:
automation-lab/bezrealitky-real-estate-scraper
Node.js example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const input = {startUrls: ['https://www.bezrealitky.cz/vypis/nabidka-prodej/byt'],maxResults: 50,includeDetails: false,};const run = await client.actor('automation-lab/bezrealitky-real-estate-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems({ limit: 50 });console.log(`Scraped ${items.length} Bezrealitky listings`);console.log(items[0]);
Python example
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/bezrealitky-real-estate-scraper').call(run_input={'startUrls': ['https://www.bezrealitky.cz/vypis/nabidka-prodej/byt'],'maxResults': 50,'includeDetails': False,})items = client.dataset(run['defaultDatasetId']).list_items(limit=50).itemsprint(f'Scraped {len(items)} Bezrealitky listings')print(items[0] if items else 'No listings returned')
cURL example
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~bezrealitky-real-estate-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"startUrls": ["https://www.bezrealitky.cz/vypis/nabidka-prodej/byt"],"maxResults": 50,"includeDetails": false}'
After the run finishes, download dataset items with the defaultDatasetId from the run response:
$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json&token=$APIFY_TOKEN"
MCP usage
Use Apify MCP to let Claude run the scraper and inspect fresh listing data.
Claude Code command:
$claude mcp add apify https://mcp.apify.com/?tools=automation-lab/bezrealitky-real-estate-scraper
Claude Desktop configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/bezrealitky-real-estate-scraper"}}}
Example MCP prompts:
- "Scrape 50 sale apartment listings from this Bezrealitky URL and summarize median price per square meter."
- "Find listings with parking or terrace tags and return a table with price, surface, and URL."
- "Compare two Bezrealitky search URLs and tell me which one has cheaper apartments by m²."
Data quality and limitations
The actor extracts data that Bezrealitky exposes publicly in page data and listing/detail pages.
Quality notes:
- Missing source values are omitted rather than guessed.
- Numeric values are parsed into numbers when possible.
- Image URLs are returned as absolute URLs.
- Detail descriptions require
includeDetails: true. - Results depend on the filters and availability of the Bezrealitky URL you provide.
Performance notes
For broad monitoring, use search-page extraction only. It is faster and cheaper because it avoids one request per detail page.
Recommended settings:
- Daily monitoring:
maxResults20–100,includeDetailsfalse. - Weekly market snapshot:
maxResults100–500,includeDetailsfalse. - Enriched lead list:
maxResults20–100,includeDetailstrue.
Legality
This actor is intended for scraping publicly available listing data. You are responsible for using the output lawfully, respecting privacy rights, and complying with applicable terms, regulations, and internal policies.
Do not use scraped data for spam, harassment, discrimination, or unlawful profiling. If you store or share personal data, make sure your workflow has an appropriate legal basis.
FAQ
Why did my run return fewer listings than maxResults?
The source search may have fewer public listings than requested, or filters may be very narrow. Try a broader Bezrealitky search URL and run again.
Should I enable includeDetails?
Enable it when you need long descriptions or extra detail-page attributes. Leave it disabled for fast, low-cost market monitoring.
Can I scrape multiple cities in one run?
Yes. Add multiple filtered Bezrealitky search URLs to startUrls. The actor collects listings across all URLs until maxResults is reached.
Can I schedule recurring runs?
Yes. Use Apify schedules to run the actor daily, weekly, or monthly, then compare datasets over time.
Troubleshooting
The run returns no listings
Check that the URL is a public Bezrealitky search/listing URL. If the page requires login or only works with private account state, the actor cannot access it.
Prices or locations look different from the website
Bezrealitky can update listings between runs. Re-run the actor with a small maxResults value and compare the item URL directly with the live page.
The run is slower than expected
Disable includeDetails, reduce maxResults, or split very broad monitoring into multiple scheduled runs.
Related scrapers
Other Automation Lab real-estate actors that may complement this one:
- Zillow Scraper — US property listings and property detail data.
- Booking Scraper — accommodation and hospitality market data.
- Google Maps Lead Finder — local business and location lead generation.
For more actors, visit Automation Lab on Apify.
Changelog
- Initial version extracts public Bezrealitky listing/search data with normalized property, pricing, location, image, and status fields.