Private Property Listings Extractor avatar

Private Property Listings Extractor

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Private Property Listings Extractor

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

Kawsar

Maintained by Community

Actor 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.

FieldExampleNotes
listingIdT5598246Listing number (T for sale, RR for rent)
internalId12031231Numeric id used by the site
urlhttps://www.privateproperty.co.za/...Public listing page
listingTypeFor SaleOr To Rent
propertyTitle2 Bedroom Apartment
headline2 Bedroom Apartment in Umhlanga Rocks
price3500000Rand, as a number
priceTextR 3 500 000As displayed, also covers On Auction
currencyZARWhen a price is shown
pricePeriodper monthRentals only
suburb, locality, regionUmhlanga Rocks, KwaZulu Natal
streetAddress701 Villa Pax, 2 Ocean WayWhen the agent publishes it
latitude, longitude-29.7297, 31.0859When published
bedrooms, bathrooms, parkingSpaces, garages2, 2, 2, 1
floorSize, landSize190 m²Kept with the unit (m² or ha)
shortDescriptionChoose from flexible lease options...Teaser text on standard cards
agentName, agentImageUrlJarryd Jeffery
agencyName, agencyLogoUrlSA Property Sales
imageUrl, imagesHigh-resolution photo links from the card
badges, isPromoted["New"], true
pageNumber, totalResults2, 19836Where the row came from
sourceUrlResults page URL
scrapedAt2026-09-27T09:22:50ZUTC

How to use it

  1. Go to privateproperty.co.za and run a search. Pick the area, sale or rent, price range, bedrooms, whatever you need.
  2. Copy the URL from the address bar.
  3. Paste it into Start URLs. Add as many searches as you like.
  4. Set Max items per URL. The default is 20, which is one results page.
  5. 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

TypeExample
For sale searchhttps://www.privateproperty.co.za/for-sale/kwazulu-natal/durban/16
To rent searchhttps://www.privateproperty.co.za/to-rent/western-cape/cape-town/55
Province searchhttps://www.privateproperty.co.za/for-sale/gauteng/3
Starting from a later pagehttps://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

FieldTypeDefaultWhat it does
startUrlsarraySearch results URLs
maxItemsPerUrlinteger20Listings to save for each URL (max 1000)
requestTimeoutSecsinteger30Per-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. listingId stays 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.