Extract property listings, asking prices, locations, bedrooms, bathrooms, floor sizes, real estate agencies, and WhatsApp agent contact links across 10 African countries from Property24.com. Download clean tables of property listings automatically for investment research.
- Wide market coverage: Search South Africa, Namibia, Kenya, Botswana, Zimbabwe, Zambia, Nigeria, Tanzania, Mozambique, and more without switching sites.
- Investment ready fields: Every row includes asking price, price per square meter, bedrooms, bathrooms, and floor size, so you can compare properties instantly.
- Agent and agency contacts: Turn on deep scrape to add the agent name, agency, phone number, and a ready to use WhatsApp link.
- Flexible entry points: Search by location name or paste your own Property24 search and listing URLs.
- Free preview: The first 50 results of every run are free, so you can test the output before committing to a paid run.
- Click Try for free on the Property24 Scraper page.
- Type one or more locations in Search Locations (for example, Cape Town or Sandton), or paste Property24 URLs in Start URLs.
- Click Start: The actor collects every matching listing and writes one flat row per property.
- Download your results: Export as Excel, CSV, JSON, or HTML from the Output tab.
| Field | Type | Required | Description |
|---|---|---|---|
startUrls |
array of URLs | No | Property24 search, category, or direct listing URLs. Overrides country, listing type, and search locations when provided. |
searchLocations |
array of strings | No | One or more places to search, such as Cape Town, Sandton, or Nairobi CBD. The scraper builds the search for you. |
country |
enum | No | Which Property24 country site to use when no start URLs are given. Covers African markets including South Africa, Namibia, Kenya, Botswana, Zimbabwe, Zambia, Nigeria, Tanzania, and Mozambique. |
listingType |
enum | No | Scrape properties for sale, to rent, or recently sold. |
propertyType |
enum | No | Narrow results to houses, apartments, townhouses, vacant land, farms, or commercial. |
maxItems |
integer | No | Maximum total property listings to scrape across all searches. |
minPrice |
integer | No | Only return listings at or above this price. |
maxPrice |
integer | No | Only return listings at or below this price. |
bedrooms |
integer | No | Only return listings with at least this many bedrooms. |
bathroomsMin |
integer | No | Only return listings with at least this many bathrooms. |
minFloorSize |
integer | No | Only return listings at or above this floor size in square meters. Works best with deep scrape on. |
sortBy |
enum | No | Order results by relevance, newest, price, or floor size. |
deepScrape |
boolean | No | Visit each listing page to add agent contacts, WhatsApp links, coordinates, sizes, levies, rates, and photos. |
proxyConfiguration |
object | Yes | Proxy settings. Residential proxies are recommended for South African domains. |
Each row in your dataset is one property listing. All fields are flat with no nested data, so the file opens cleanly in any spreadsheet program.
{
"listing_id": "117156004",
"title": "6 Bedroom House in Camps Bay",
"listing_type": "For Sale",
"property_type": "House",
"country": "South Africa",
"province": "Western Cape",
"city": "Cape Town",
"suburb": "Camps Bay",
"street_address": "Geneva Drive",
"postal_code": "8005",
"latitude": -33.9508,
"longitude": 18.3776,
"description": "Architectural masterpiece with uninterrupted Atlantic views.",
"price": 75000000,
"price_text": "75000000 (ZAR)",
"price_per_sqm": 125000,
"bedrooms": 6,
"bathrooms": 6,
"garages": 3,
"parking_spaces": 4,
"floor_size": 600,
"erf_size": 850,
"levies": 0,
"rates_taxes": 12500,
"has_solar": "Yes",
"pet_friendly": "Yes",
"garden": "Yes",
"picture_url": "https://images.prop24.com/117156004/Crop600x400",
"agency_name": "Seeff Atlantic Seaboard",
"agent_name": "Jane Smith",
"agent_phone": "+27821234567",
"whatsapp_link": "https://wa.me/27821234567",
"listing_url": "https://www.property24.com/for-sale/camps-bay/cape-town/western-cape/11014/117156004",
"scraped_at": "2026-06-24T18:33:22.000Z"
}In fast list mode, the contact, coordinate, and size fields are left out and only the core listing fields are returned.
| Field | Type | Description |
|---|---|---|
listing_id |
string | Unique Property24 listing identifier. |
title |
string | Listing headline, such as "3 Bedroom House in Rondebosch". |
listing_type |
string | For Sale, To Rent, or Recently Sold. |
property_type |
string | House, Apartment, Townhouse, and similar. |
country |
string | Country the listing is in. |
province |
string | Province or region. |
city |
string | City. |
suburb |
string | Suburb or neighborhood. |
street_address |
string | Street address when published. Deep scrape only. |
postal_code |
string | Postal code when published. Deep scrape only. |
latitude |
number | Map latitude. Deep scrape only. |
longitude |
number | Map longitude. Deep scrape only. |
description |
string | Full property description. |
price |
number | Asking price as a clean number. |
price_text |
string | Price as displayed, with currency. |
price_per_sqm |
number | Price divided by floor size. Deep scrape only. |
bedrooms |
number | Number of bedrooms. |
bathrooms |
number | Number of bathrooms. |
garages |
number | Number of garages. Deep scrape only. |
parking_spaces |
number | Number of open parking bays. |
floor_size |
number | Internal floor area in square meters. Deep scrape only. |
erf_size |
number | Plot or land size in square meters. Deep scrape only. |
levies |
number | Monthly levy amount. Deep scrape only. |
rates_taxes |
number | Monthly municipal rates and taxes. Deep scrape only. |
has_solar |
string | Yes or No for solar power. Deep scrape only. |
pet_friendly |
string | Yes or No for pet friendly. Deep scrape only. |
garden |
string | Yes or No for a garden. Deep scrape only. |
picture_url |
string | Main listing photo. |
agency_name |
string | Listing agency name. Deep scrape only. |
agent_name |
string | Listing agent name. Deep scrape only. |
agent_phone |
string | Agent phone number. Deep scrape only. |
whatsapp_link |
string | Direct WhatsApp link to the agent. Deep scrape only. |
listing_url |
string | Link to the original Property24 listing. |
scraped_at |
string | Time the record was collected. |
$0.69 per 1,000 results. The first 50 results of every run are completely free. No monthly subscriptions and no minimum commits.
There are two pricing events. A Property listing event fires for every core listing returned in fast list mode, at $0.00069 per listing (about $0.69 per 1,000). An Enriched listing event fires for every listing returned with deep scrape on, also at $0.00069 per listing. You only pay for the records you collect, and empty runs cost nothing.
Create a .env file from .env.example, add your Apify API token, and run:
npm install
npm startThe script uses the Apify API client to start the Property24 Scraper actor and fetch results.
- Start with fast list mode: Get a wide sweep of the market at the lowest cost, then turn on deep scrape only for the listings you want to follow up on.
- Narrow with price and size filters: Setting min and max price, bedrooms, and floor size keeps your dataset focused and your bill smaller.
- Use start URLs for repeat searches: Paste your own saved Property24 search URL to lock in filters that the location field cannot express.
- Schedule recurring runs: Use the Apify scheduler to track new listings in your target suburbs every morning.
Is scraping Property24 legal? Yes, collecting publicly available listing data is generally legal. This actor only reads pages that anyone can view in a browser. You are responsible for how you use the data and for following Property24's terms and your local regulations.
Which countries does it cover? African markets including South Africa, Namibia, Kenya, Botswana, Zimbabwe, Zambia, Nigeria, Tanzania, and Mozambique. Pick one in the country setting or paste a URL from any supported site.
Do I get agent phone numbers and WhatsApp links? Yes, when deep scrape is on. Each detailed record includes the agent name, agency, phone number, and a ready to use WhatsApp link where Property24 publishes them.
Why do some runs return fewer fields than others? Fast list mode returns only the core fields from search pages. To get coordinates, agent contacts, sizes, levies, and photos, turn on deep scrape so the actor visits each listing page.
For bug reports, missing fields, or feature requests, open an issue under the Issues tab or visit the Property24 Scraper page on Apify Store.
