Private Property Listings Extractor
Pricing
from $2.99 / 1,000 results
Private Property Listings Extractor
Private Property scraper that pulls South African homes for sale and to rent from privateproperty.co.za, with price, suburb, bedrooms, agent, photos and GPS, so you can track prices and new listings without copying them by hand.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
Kawsar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Private Property Listings Extractor: Scrape privateproperty.co.za Homes for Sale and Rent
Private Property Listings Extractor pulls property listings from privateproperty.co.za, one of South Africa's biggest real estate portals. Paste a search URL for any town, suburb, or province and you get a clean dataset of houses, apartments, and townhouses with price, address, bedrooms, bathrooms, floor size, agent, photos, and GPS coordinates.
It reads search result pages only, so runs are fast and cheap. Sale and rental searches both work, and every value comes straight from what the site shows. Nothing is guessed or padded.
Who uses it
- Estate agents tracking what competitors list in their patch
- Investors comparing asking prices and rental yields across suburbs
- Property data teams building price indexes or valuation models
- Developers feeding listings into a CRM, map, or alert bot
- Researchers studying the South African housing market
What you get per listing
Fields are only written when the site actually shows them, so you won't see columns full of null.
| Field | Example | Notes |
|---|---|---|
listingId | T5598246 | Listing number (T for sale, RR for rent) |
internalId | 12031231 | Numeric id used by the site |
url | https://www.privateproperty.co.za/... | Public listing page |
listingType | For Sale | Or To Rent |
propertyTitle | 2 Bedroom Apartment | |
headline | 2 Bedroom Apartment in Umhlanga Rocks | |
price | 3500000 | Rand, as a number |
priceText | R 3 500 000 | As displayed, also covers On Auction |
currency | ZAR | When a price is shown |
pricePeriod | per month | Rentals only |
suburb, locality, region | Umhlanga Rocks, KwaZulu Natal | |
streetAddress | 701 Villa Pax, 2 Ocean Way | When the agent publishes it |
latitude, longitude | -29.7297, 31.0859 | When published |
bedrooms, bathrooms, parkingSpaces, garages | 2, 2, 2, 1 | |
floorSize, landSize | 190 m² | Kept with the unit (m² or ha) |
shortDescription | Choose from flexible lease options... | Teaser text on standard cards |
agentName, agentImageUrl | Jarryd Jeffery | |
agencyName, agencyLogoUrl | SA Property Sales | |
imageUrl, images | High-resolution photo links from the card | |
badges, isPromoted | ["New"], true | |
pageNumber, totalResults | 2, 19836 | Where the row came from |
sourceUrl | Results page URL | |
scrapedAt | 2026-09-27T09:22:50Z | UTC |
How to use it
- Go to privateproperty.co.za and run a search. Pick the area, sale or rent, price range, bedrooms, whatever you need.
- Copy the URL from the address bar.
- Paste it into Start URLs. Add as many searches as you like.
- Set Max items per URL. The default is 20, which is one results page.
- Click Start, then download the dataset as JSON, CSV, Excel, or XML.
The filters you set on the site are kept in the URL, so the extractor returns the same listings you saw. It moves through the result pages on its own until it hits your limit or runs out of listings.
Supported URLs
| Type | Example |
|---|---|
| For sale search | https://www.privateproperty.co.za/for-sale/kwazulu-natal/durban/16 |
| To rent search | https://www.privateproperty.co.za/to-rent/western-cape/cape-town/55 |
| Province search | https://www.privateproperty.co.za/for-sale/gauteng/3 |
| Starting from a later page | https://www.privateproperty.co.za/for-sale/kwazulu-natal/durban/16?page=3 |
Single listing links (ending in something like /T5598246) are skipped. Use a search results URL instead.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
startUrls | array | Search results URLs | |
maxItemsPerUrl | integer | 20 | Listings to save for each URL (max 1000) |
requestTimeoutSecs | integer | 30 | Per-request timeout |
Example input
{"startUrls": ["https://www.privateproperty.co.za/for-sale/kwazulu-natal/durban/16","https://www.privateproperty.co.za/to-rent/western-cape/cape-town/55"],"maxItemsPerUrl": 20}
This returns up to 40 rows: 20 from Durban sales and 20 from Cape Town rentals.
Example output
{"listingId": "RR4766759","internalId": "12057792","url": "https://www.privateproperty.co.za/to-rent/western-cape/cape-town/atlantic-seaboard/foreshore/no-1-harbour-arch/11-christiaan-barnard-street/RR4766759","listingType": "To Rent","propertyTitle": "Studio Apartment","headline": "Studio Apartment in Foreshore","price": 13500,"priceText": "R 13 500 per month","currency": "ZAR","pricePeriod": "per month","suburb": "Foreshore","streetAddress": "No 1 Harbour Arch, 11 Christiaan Barnard Street","bedrooms": 0.5,"bathrooms": 1,"parkingSpaces": 1,"floorSize": "35 m²","agentName": "Kyle Illman","imageUrl": "https://images.pp.co.za/listing/12057792/q9VCJuAbwQqOKOJL3WJqv0/1600/1066/contain/jpegorpng","images": ["https://images.pp.co.za/listing/12057792/q9VCJuAbwQqOKOJL3WJqv0/1600/1066/contain/jpegorpng","https://images.pp.co.za/listing/12057792/HG2oou0CMehxIcTzdMCK93/1600/1066/contain/jpegorpng"],"badges": ["Available now"],"isPromoted": true,"locality": "Foreshore, Atlantic Seaboard","region": "Western Cape","latitude": -33.9213705616998,"longitude": 18.43379259109497,"pageNumber": 1,"totalResults": 3326,"sourceUrl": "https://www.privateproperty.co.za/to-rent/western-cape/cape-town/55","scrapedAt": "2026-09-27T09:22:50.170872+00:00"}
Studios show 0.5 bedrooms because that is how the site records them.
Speed and cost
One request covers about 20 listings. The default of 20 per URL costs a single request per search, and 100 per URL is about 5. Runs with a handful of searches usually finish in under a minute.
Tips
- Narrow the search on the site first (price, bedrooms, property type). It is cheaper than scraping everything and filtering later.
- Run the same search on a schedule to catch new listings and price drops.
listingIdstays the same between runs, so you can use it to compare them. - Promoted listings show up at the top of each page. Within one URL, each listing is saved once.
Integrations
Send results to Google Sheets, Slack, Airtable, a webhook, or your own database using Apify integrations, or call the actor from the Apify API with Python, JavaScript, or plain HTTP.
FAQ
Can I scrape a whole province?
Yes. Use a province URL such as /for-sale/gauteng/3 and raise maxItemsPerUrl. Big provinces have tens of thousands of listings, so split them into cities if you need more than 1000.
Why is the agent name missing on some rows? Some cards don't name an agent. You still get the agency logo, and on standard cards the agency name too.
Why don't all listings have coordinates? Agents choose whether to show the exact location. Rows without it still have suburb, locality, and province.
Does it work for commercial property? Yes. Commercial search URLs use the same layout.