Property24 South Africa Scraper avatar

Property24 South Africa Scraper

Pricing

from $4.00 / 1,000 starter tier per 1k properties

Go to Apify Store
Property24 South Africa Scraper

Property24 South Africa Scraper

Effortlessly extract real estate data from Property24, South Africa's leading property portal. This powerful scraper collects comprehensive property details including prices, locations, descriptions, property types, images, agent contact info, and more.

Pricing

from $4.00 / 1,000 starter tier per 1k properties

Rating

5.0

(5)

Developer

Dhrumil Bhankhar

Dhrumil Bhankhar

Maintained by Community

Actor stats

6

Bookmarked

123

Total users

1

Monthly active users

6 days ago

Last modified

Share

🏡 What is Property24 Real Estate Properties Scraper?

This Property24 properties Scraper will enable you to scrape any sale/rent listing from property24.com, South Africa's leading property portal.

You can simply take your listing URL from browser and enter it into this actor. This actor will crawl through all pages of particular listing and generate dataset for you.

Listing URL is something you get when you perform the search on Property24 site. Example listing URLs:

🚪 What can this Property24 Scraper do?

📈 Extract Property24 market data listings in South Africa

👀 This actor is not just a scraper but also has monitoring capability. You can turn on monitoring mode and it will give you only newly added properties compared to your previous scrapes.

📩 This actor also helps you to identify which properties are not listed anymore. Please refer to Identifying delisted properties

⬇️ Download Property24 real estate data in Excel, CSV, JSON, and other formats

📚 How do I start scraping with this scraper?

  1. Register for your free Apify account here
  2. You don't need to provide your credit card details for free account. Just click on "Get Started" button on above link and complete the registration only.
  3. Free account comes with reasonable credits to try out this actor. This actor also comes with free trial of 3 days without any commitment/upfront charge.
  4. Run this actor and verify the scraped data. Apify has huge integration possibilities. You can download the data or push the data into any 3rd party platform directly.

🌳 What Property24 data can I extract using this tool?

📝📝
Listing TitleProperty ID
Listing URLProperty Type
PriceBedrooms
BathroomsParking Spaces
ERF SizeFloor Size
LocationListing Date
GaragesZoning
DescriptionImages
FeaturesRooms Details
Direct OwnerPoints Of Interest

Direct Owner Field

The directOwner field is a boolean value that indicates whether the property is being sold/rented directly by the owner or through an agent:

  • true - Property is listed by the direct owner or landlord
  • false - Property is listed through a real estate agent

⬇️ Input

For simple usecase, you just need to provide browser URL of Property24 search result page & that's all. You can leave other fields as they are to be sensible defaults.

Input example

{
"listUrls": [
{
"url": "https://www.property24.com/for-sale/val-de-vie-estate/paarl/western-cape/11726?sp=bd%3d5"
}
],
"fullPropertyDetails": true,
"monitoringMode": false,
"enableDelistingTracker" : false,
"maxProperties": 10,
"proxy": {
"useApifyProxy": true
}
}

Understanding the input options:

  • listUrls: Array of Property24 search result URLs you want to scrape
  • fullPropertyDetails: By default it will scrape every single property page to get full details of property. If you don't need full details but basic details is enough for you, it's highly encouraged to turn off this setting. It will run the scraping a lot faster and save cost and resources.
  • monitoringMode: This option when turned on will only scrape newly added property listings compared to previously scraped properties by this actor.
  • enableDelistingTracker : This option when turned on will start tracking date against each property under Apify Key Value store. This KV store can be queried later to find out which properties are delisted.
  • maxProperties: Maximum number of properties to scrape (default: 5)
  • proxy: Proxy configuration for bypassing rate limits and geo-restrictions

⬆️ Output

The scraped data is stored in the dataset of each run. The data can be viewed or downloaded in many popular formats, such as JSON, CSV, Excel, XML, RSS, and HTML.

Output example

The result for scraping a single property like this:

{
"id": "111446108",
"price": "R 39 000 000",
"directOwner" : true,
"url": "https://www.property24.com/for-sale/val-de-vie-estate/paarl/western-cape/11726/111446108",
"title": "5 Bedroom House for Sale in Val De Vie Estate",
"bedrooms": "5",
"bathrooms": "5",
"parkings": "4",
"description": "Double Storey",
"images": [
"https://images.prop24.com/287289515/Ensure1280x720",
"https://images.prop24.com/359071910/Ensure1280x720"
],
"garages": "2",
"parking": "2",
"listingNumber": "111446108",
"typeOfProperty": "House",
"listingDate": "12 June 2025",
"erfSize": "1 714 m²",
"floorSize": "870 m²",
"petsAllowed": "Yes",
"zoning": "General Residential",
"rooms": {
"bedrooms": "5",
"bathrooms": "5, Guest Toilet, En suite",
"kitchen": "1",
"office": "1",
"diningRoom": "1",
"lounge": "1"
},
"features": [
"Air Conditioning",
"Alarm System",
"Balcony",
"Braai Room",
"Built In Cupboards"
],
"pointOfInterest": [
{
"category": "Schools",
"name": "Val de Vie Primary School",
"distance": "2.5 km"
},
{
"category": "Shopping",
"name": "Boland Centre",
"distance": "15 km"
}
]
}

❓Limitations

Since Property24 may have rate limiting and anti-bot measures, it's recommended to use residential proxies with South African IPs to get results smoothly. The scraper includes proxy rotation and session management to handle these challenges. Responses with HTTP 503, 403, or 429 trigger a retry and add usage equal to the configured charge multiplier per response. Multiple failed retries can therefore increase usage without producing a property result. Use a suitable, reliable proxy with South African IPs to reduce these responses.

This actor has ability to bypass basic anti-bot measures. However, please run this actor with residential proxy with country South Africa to get results smoothly.

🔎 Identifying delisted properties

This actor provides you monitoring mode configuration using which you can get only incremental updates about newly added properties. In case, you also want to identify which properties are delisted from platform, you can use any of the following techniques with the help of this actor.

  1. Running Always in full scraper mode : Run this actor always in full scrape mode and cross check the new incoming batch of data with your existing database. If any property that exists in yoru database but not in newly scraped data batch, that means it's not listed anymore

  2. Use Key Value Store generated by scraper : If your are monitoring very large batch of data and you don't want to scrape everything all the time, this method involves bit of technicality but achieves the goal efectively. Apify has storage feature called Key-value store. When you run this scrape, this scraper stores every single property in key value store along with timestamp in property24-properties store. Inside this store, key is property id itself and value is timestamp like this

    { lastSeen : '2023-11-02T05:59:25.763Z'}

    Whenever you run this scraper, it will update the timestamp against particular id if it finds property on the platform. e.g. if we have 2 proprties with id prop1 and prop2 and we scraped them both on November 1, key value storage would look like this :

    prop1 -> { lastSeen : '2023-11-01T05:59:25.763Z'}
    prop2 -> { lastSeen : '2023-11-01T05:59:25.763Z'}

    Now if you run this scraper again on December 1 and prop1 is not on the platform anymore but prop2 is still there, key value storage would change like this :

    prop1 -> { lastSeen : '2023-11-01T05:59:25.763Z'}
    prop2 -> { lastSeen : '2023-12-01T05:59:25.763Z'}

    That means if any property has lastSeen less than latest batch you loaded, that property is delisted now. You can directly iterate through whole Key value storage using Apify key value storage API to identify this. Please refer to this API documentation to do the same. Please remember store name generated by this scrape will be property24-properties.

    Alternatively, you can iterate through your existing database active properties and use this API to identify listing status.

    For this approach to work, it's important that you enable this feature via enableDelistingTracker (Enable Delisting tracker) input.

💰 Pricing Model & Usage Logic

This actor uses Apify's Pay-Per-Event (PPE) billing model, with usage tracked and charged based on properties processed, additional multipliers, and retryable HTTP 503, 403, or 429 responses. Charges are triggered at specific usage thresholds and events.

🟢 Charge Events & Tiers

The actor uses a tiered pricing model based on the number of properties processed. Each tier has a specific rate per 1,000 properties:

🔻 Cost Efficiency as You Scale: The tier-based pricing model is designed to reduce your cost per property as your usage increases. The more properties you process, the lower your per-unit cost becomes, helping keep your overall costs under control as you scale up to higher volumes.

Starter Tier (starter-tier-1K)

For the first 25,000 properties processed, the cost per 1,000 properties is $4.00 USD. This tier is ideal for small to medium jobs and ensures a low entry cost for initial usage.

Growth Tier (growth-tier-1K)

For properties processed from 25,000 up to 50,000 the cost per 1,000 properties drops to $3.50 USD. This tier rewards higher volume usage with a reduced rate, making it cost-effective for scaling up.

Scale Tier (scale-tier-1K)

For properties processed from 50,000 up to 200,000 the cost per 1,000 properties is $3.00 USD. This tier is designed for large-scale operations, offering further discounts as your volume increases.

Enterprise Tier (enterprise-tier-1K)

For properties processed above 200,000 the cost per 1,000 properties is $2.50 USD. This tier is for enterprise-level usage, providing the lowest rate for very high-volume processing.

Each charge event is triggered automatically as your processed property count crosses into the next tier. The actor tracks usage and applies the correct rate for each tier, ensuring transparent and predictable billing.

These pricing tiers are applied on a monthly basis, and your usage count resets at the start of each new month. This ensures you always start fresh and only pay for what you use each month.

Example:

  • Scraping 300,000 properties in a month:
    • $4.00 per 1K properties for the first 25,000 properties ($100)
    • $3.50 per 1K properties upto 50,000 properties ($87.50)
    • $3.00 per 1K properties upto 200,000 properties ($450)
    • $2.50 per 1K properties above 200,000 properties ($250)
    • Total: $887.50

📊 Cost Per 1K Units – How Billing Works

The pricing is calculated in batches of 1,000 units. This means:

  • Initial Charge: When you start the actor, it reserves and charges you for 1K units (1,000 base property units or their equivalent based on multipliers; retryable blocked responses also consume base units).
  • Continuous Usage: You can continue scraping in the same run or across multiple runs. As long as your usage stays within that 1K batch, no additional charges are applied.
  • Next Batch: Only when you exhaust the 1K quota, the system charges you for the next 1K batch. This billing cycle repeats for every 1K units consumed.
  • Pay-As-You-Go: You only pay for the batches you actually use. If you scrape 1,500 properties in total (across runs), you'll be charged for 2 batches (2K units).

Example Timeline:

  1. Start run #1 → Charged for 1K units (can scrape up to 1,000 properties)
  2. Scrape 800 properties in run #1 (200 units remaining in current 1K batch)
  3. Start run #2 → Use the remaining 200 units + 100 from next 1K batch → Charged for 2nd 1K batch
  4. Continue in run #3 → Still within the 2K batch until you exceed it
  5. When you exceed 2K total → Automatically charged for 3rd 1K batch

This ensures predictable billing in discrete 1K chunks, making it easier to manage your usage and costs.

⚡ Additional Usage Parameters (Multipliers)

The following options increase the usage count for each property scraped, affecting your billing. These multipliers are cumulative.

FeatureMultiplierImpact
Full Property Details+2.0xFetches detailed property information beyond basic listing data
Monitoring Mode+2.0xTracks only newly listed properties compared to previous runs; requires additional tracking logic
Points of Interest+1.5xIncludes nearby amenities and facilities data; requires additional API calls
Delisting Tracker+1.5xEnables tracking of delisted properties with timestamps in KV Store; requires additional storage
Empty Tracker Records+0.5xAdds tracker ID records in incremental mode for delisting identification
Apify Proxy+1.0xUses Apify proxy service for enhanced reliability and geo-targeting
Additional Memory+1.0x per 2GBCharges for each 2GB block above the 2GB base allocation

Example Calculation:

  • Scraping 100 properties with:

    • Full Property Details: ON (2.0x)
    • Monitoring Mode: ON (2.0x)
    • Points of Interest: ON (1.5x)
    • Apify Proxy: ON (1.0x)

    Total Units Charged = 100 × (1 + 2.0 + 2.0 + 1.5 + 1.0) = 100 × 7.5 = 750 units

    This would stay within the first 1K batch with no additional charge.

Penalties and Retry Charges

  • Retryable blocked responses (HTTP 503, 403, or 429): Each response that triggers a retry adds usage equal to the configured charge multiplier. Repeated failures can therefore increase usage without producing a property result. Use a reliable proxy with a South African IP to reduce the likelihood of these responses; this cannot guarantee they will be avoided.
  • Invalid-domain URLs or missing URLs: This actor does not currently apply a 10x usage multiplier for URLs outside property24.com or for an empty URL list. Use valid Property24 URLs and provide at least one URL to scrape.

Usage multipliers are cumulative. For example, enabling Monitoring Mode (+2.0x) and Delisting Tracker (+1.5x) results in 4.5x total usage per property, including the 1x base unit. The same configured multiplier applies to each retryable blocked response.

Cost Optimization Tips

✅ Enable Full Details Only When Needed – If basic property info is sufficient, disable this option to reduce charges ✅ Use Monitoring Mode Strategically – Enable monitoring to scrape only new properties and avoid re-scraping old listings ✅ Points of Interest Selectively – Only enable if you need nearby amenities data, as it significantly increases usage ✅ Batch Your Scrapes – Running multiple targeted scrapes may be more cost-effective than one massive scrape ✅ Monitor Your Usage – Keep track of your monthly usage to understand which tier you're in ✅ Budget Planning – Set a monthly budget via ACTOR_MAX_TOTAL_CHARGE_USD environment variable to control spending

💡 Tip: Run this actor on 2GB memory for optimal performance and cost efficiency. The actor is highly optimized for this setting. Only increase memory if you have specific needs, as additional memory will increase your usage charges.

🙋‍♀️ For custom solutions

In case you need some custom solution, you can contact me : dhrumil@techvasu.com

Or learn more about me on github : https://github.com/dhrumil4u360

This scraper is specifically designed for Property24.com (South Africa) and includes features like:

  • Proxy rotation and session management
  • Anti-bot detection handling
  • Comprehensive property data extraction
  • Monitoring mode for tracking new listings