The Ultimate Property Scraper
Pricing
from $0.10 / 1,000 results
The Ultimate Property Scraper
Export cleaned property listing records from The Scrape Lab's maintained real estate inventory. Filter by country, website, market, area, price, size, and history.
Pricing
from $0.10 / 1,000 results
Rating
0.0
(0)
Developer
Inus Grobler
Maintained by CommunityActor stats
1
Bookmarked
6
Total users
3
Monthly active users
5 days ago
Last modified
Categories
Share
At a glance: what it does is export structured property listing data from maintained inventory; input examples include countries, websites, markets, area queries, property type, limits, and estimate-only mode; output examples are sale, rental, and historical listing rows; use cases include real estate leads and market research; limitations, troubleshooting, and pricing/cost notes are covered below.
The Ultimate Property Scraper exports clean real estate listing data from The Scrape Lab's maintained property inventory, so teams can get structured sale, rental, and historical property data without waiting for a live crawl during every run.
Use it for real estate lead generation, market research, rental analysis, property price tracking, CRM enrichment, BI dashboards, and country or website-level property datasets.
What You Can Export
- Current property listings for sale or rent
- Historical listing observations and change data
- Property URLs, titles, listing IDs, and source websites
- Country, city, suburb, province, address, and location fields
- Price, currency, price text, and price context
- Property type, bedrooms, bathrooms, parking, floor size, and erf size
- Listing status and freshness timestamps
- Raw historical snapshots when history mode is enabled
Quick Start
For most exports, set only:
countriesorwebsitesmarketsareaQueryor Property Type, if you want a narrower searchlimitestimateOnly, when previewing a larger export
The simplest input is:
{"countries": ["ZA"],"markets": ["for-sale"],"limit": 100}
For a focused Cape Town apartment export:
{"countries": ["ZA"],"websites": ["property24"],"markets": ["for-sale"],"areaQuery": "Cape Town","propertyTypeQuery": "apartment","minBedrooms": 2,"limit": 100}
For rentals:
{"countries": ["ZA"],"markets": ["to-rent"],"areaQuery": "Cape Town","limit": 100}
Preview Before Exporting
Set estimateOnly to true to count matching records without exporting dataset items. This is recommended before large exports because it shows the expected row count and avoids result-item charges.
{"countries": ["ZA"],"markets": ["for-sale"],"areaQuery": "Cape Town","estimateOnly": true,"limit": 1000}
Inputs
Basic Inputs
countries: Country codes to search, such asZA,US,GB,AE, orBR.websites: Optional exact source websites. Leave empty to use the selected countries.markets:for-sale,to-rent, or both.areaQuery: City, suburb, address, or location text.propertyTypeQuery: Property Type dropdown, such asapartment,house,villa, orland.limit: Maximum dataset rows to export.estimateOnly: Preview matching result counts without exporting rows.
Common Filters
minPrice,maxPriceminBedrooms,maxBedroomsminBathrooms,maxBathroomsminParkingSpaces,maxParkingSpacesminSizeM2,maxSizeM2
Advanced Options
includeHistory: Export historical observations instead of only the latest listing row.seenSince: Return rows seen after an ISO timestamp, for example2026-05-01T00:00:00Z.orderBy: Sort by newest seen, price low to high, or price high to low.offset: Skip rows for pagination.includeTotalCount: Add an exact total count to a normal export. Leave off for large runs unless you need the count.currencyCodes: Exact currency filters such asZAR,USD,GBP, orEUR.listingStatus: Exact status filters such asactive,sold, orremoved.
Older integrations that send sources, maxListings, historic, locationQuery, or updatedSince continue to work.
Output Example
{"source": "property24","source_site": "property24.com","country_code": "ZA","country_name": "South Africa","currency_code": "ZAR","listing_id": "117160720","url": "https://www.property24.com/for-sale/harfield-village/cape-town/western-cape/8666/117160720","title": "2 Bedroom Apartment","property_type": "Apartment","market": "for-sale","province_name": "Western Cape","location": "Harfield Village","suburb": "Harfield Village","city": "Cape Town","price": 2795000,"price_text": "R 2 795 000","bedrooms": 2,"bathrooms": 1,"parking_spaces": 1,"floor_size_m2": 79,"listing_status": "active","last_seen_at": "2026-06-16T06:55:21+00:00"}
Run On Apify
- Open the Actor in Apify Console.
- Choose countries or source websites.
- Add optional filters.
- Use Preview Only for large exports.
- Run the Actor and open the Dataset tab.
You can download results as JSON, CSV, Excel, XML, RSS, or HTML from the Dataset tab.
Python API Example
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"countries": ["ZA"],"markets": ["for-sale"],"areaQuery": "Cape Town","propertyTypeQuery": "apartment","limit": 100,}run = client.actor("thescrapelab/the-ultimate-property-scraper").call(run_input=run_input)dataset_id = run["defaultDatasetId"]for item in client.dataset(dataset_id).iterate_items():print(item["title"], item["price"], item["url"])
Pricing
This Actor is best priced per exported result. Preview-only runs export no result items, so they are the safest way to estimate export size before paying for a larger dataset.
Recommended pricing is a simple result event:
- Event:
apify-default-dataset-item - Public price: about
$0.00099per exported property result - Volume discounts: lower per-result prices for higher Apify tiers where configured
Platform usage is low because the Actor streams database results directly to the dataset and does not run a browser during normal exports.
Limits And Caveats
- The Actor exports maintained inventory already collected by The Scrape Lab. It does not guarantee a live website refresh during your run.
- Availability varies by country, website, market, and refresh schedule.
- Some listings can be removed, sold, duplicated by the source website, or changed after collection.
includeHistorycan return multiple rows for the same listing because each row is a historical observation.- Very broad exports should be previewed first and paged with
limitandoffsetwhen needed.
Troubleshooting
If you get too many rows, use Preview Only, lower limit, add a country or website, and narrow with area, property type, price, bedrooms, bathrooms, parking, size, or seenSince.
If you get no rows, remove the strictest filters first. Try one country with markets: ["for-sale"], then add filters back one at a time.
If a country and website combination returns zero rows, the selected website may not belong to that country. Remove one selector or choose a matching pair.
If you need the full match count, enable includeTotalCount. Leave it disabled for large exports when you only need the rows.
FAQ
Can I scrape property listings by country?
Yes. Use countries with one or more country codes, then choose for-sale, to-rent, or both.
Can I export rental listings?
Yes. Set markets to ["to-rent"].
Can I export historical property price data?
Yes. Set includeHistory to true. History mode can return multiple observations for the same listing.
Does this Actor scrape websites live during my run?
No. It exports cleaned records from maintained inventory. This makes runs faster and more predictable than live crawling every source website during each customer run.
Can I download property data as CSV?
Yes. Open the Dataset tab after the run and export the data as CSV, JSON, Excel, XML, RSS, or HTML.
How do I keep costs low?
Run with estimateOnly: true first, use a practical limit, and narrow broad exports with country, website, market, area, property type, or freshness filters.