Private Property Scraper 🏡
Pricing
from $1.00 / 1,000 results
Private Property Scraper 🏡
Automate South African property data extraction. Collect real estate listings with prices, descriptions, agent info & images. Perfect for market analysis, investment research & lead generation. Structured JSON/CSV output for seamless integration.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(1)
Developer
Shahid Irfan
Maintained by CommunityActor stats
0
Bookmarked
18
Total users
3
Monthly active users
0.93 hours
Issues response
10 days ago
Last modified
Categories
Share
Private Property Scraper
Extract property listings from PrivateProperty.co.za with detailed pricing, specs, media, and agent information. This actor respects your search URLs and filters to return only matching properties from South Africa's largest property marketplace.
Features
- URL-accurate scraping - The actor uses your exact search URL without modification, preserving location filters, property types, and area codes
- Detail enrichment - Every listing is enriched with full description, property features, floor plans, image galleries, and agent contact information
- Filter support - Narrow results by price range, bedroom count, and property type
- Automatic pagination - Crawls multiple result pages to reach your desired collection size
- Clean output - Fields with no available value are omitted. No nulls or empty placeholders
- Multiple URLs - Scrape several locations, property types, or regions in a single run
Use Cases
Market Analysis
Track property supply, pricing trends, and listing composition across suburbs and regions. Compare bedroom counts, floor sizes, land sizes, levies, and rates to identify value opportunities.
Investment Research
Build structured datasets of available properties with detailed specs and pricing. Evaluate affordability, compare suburbs, and monitor inventory changes over time.
Lead Generation
Collect agent and agency contact details alongside property data for CRM enrichment, outreach campaigns, and referral workflows.
Portfolio Monitoring
Schedule recurring runs and analyze new listings as they appear. Track price changes, new developments, and inventory shifts in target areas.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | Array | No | Prefilled | PrivateProperty search URLs to scrape. Use exact URLs from the site |
results_wanted | Integer | No | 20 | Maximum number of listings to collect |
max_pages | Integer | No | 10 | Maximum search result pages to process per URL |
minPrice | Integer | No | 0 | Minimum property price in ZAR |
maxPrice | Integer | No | 0 | Maximum property price in ZAR |
minBedrooms | Integer | No | 0 | Minimum number of bedrooms |
maxBedrooms | Integer | No | 0 | Maximum number of bedrooms |
propertyType | String | No | "" | Property type filter (e.g. House, Apartment, Townhouse, Land) |
proxyConfiguration | Object | No | Apify Proxy disabled | Proxy configuration for reliable runs |
Output Data
Each dataset item includes only available fields:
| Field | Type | Description |
|---|---|---|
listing_id | String | Listing reference ID |
title | String | Listing title |
property_type | String | Normalized property type |
price | Number | Numeric listing price |
price_display | String | Human-readable price |
currency | String | Currency code (ZAR) |
bedrooms | Number | Bedroom count |
bathrooms | Number | Bathroom count |
parking_spaces | Number | Parking spaces count |
garages | Number | Garage count |
location | String | Suburb and region |
address | String | Street address when available |
description | String | Full property description |
floor_size_sqm | Number | Floor size in square meters |
land_size_sqm | Number | Land size in square meters |
erf_size_sqm | Number | Erf size in square meters |
levies | Number | Monthly levies in ZAR |
rates_taxes | Number | Rates and taxes in ZAR |
main_image | String | Primary image URL |
gallery_images | Array | Gallery image URLs |
floor_plans | Array | Floor plan image URLs |
map_coordinates | Object | Latitude and longitude |
video_tour_url | String | Video tour URL |
virtual_tour_url | String | Virtual tour URL |
contacts | Array | Agent contact records |
agency | Object | Agency details |
url | String | Listing page URL |
source_search_url | String | Search URL that produced the listing |
Usage Examples
Basic Run
Start with a single search URL and default settings:
{"startUrls": [{ "url": "https://www.privateproperty.co.za/for-sale/south-africa/1" }],"results_wanted": 20}
Location-Specific Search
Use an exact suburb URL with filters:
{"startUrls": [{ "url": "https://www.privateproperty.co.za/for-sale/gauteng/east-rand/boksburg/impala-park/1620" }],"results_wanted": 30,"minBedrooms": 2,"maxPrice": 2000000}
Filtered Multi-URL Run
Scrape several areas with price and bedroom filters:
{"startUrls": [{ "url": "https://www.privateproperty.co.za/for-sale/gauteng/east-rand/boksburg/impala-park/1620" },{ "url": "https://www.privateproperty.co.za/for-sale/gauteng/east-rand/boksburg/1" }],"results_wanted": 100,"minBedrooms": 3,"maxPrice": 3000000,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Sample Output
{"listing_id": "T5242094","title": "2 Bedroom Apartment","property_type": "Apartment","price": 520000,"price_display": "R 520 000","currency": "ZAR","bedrooms": 2,"bathrooms": 1,"parking_spaces": 1,"location": "Impala Park, Boksburg, Gauteng","address": "10 SS IMPALA LAKE, 49 Northrop Road","description": "2-bedroom apartment in secure complex...","main_image": "https://images.pp.co.za/listing/11418395/1U5tdSh1dAAscdYVLZq6z2/600/450/contain/jpegorpng","gallery_images": ["https://images.pp.co.za/listing/11418395/1U5tdSh1dAAscdYVLZq6z2/600/450/contain/jpegorpng"],"map_coordinates": {"lat": -26.160592,"lng": 28.276122},"contacts": [{"name": "Schalk Bezuidenhout","contact_type": "agent"}],"url": "https://www.privateproperty.co.za/for-sale/gauteng/east-rand/boksburg/impala-park/10-ss-impala-lake/49-northrop-road/T5242094","source_search_url": "https://www.privateproperty.co.za/for-sale/gauteng/east-rand/boksburg/impala-park/1620"}
Tips for Best Results
Use Exact URLs
Copy search URLs directly from PrivateProperty.co.za after applying your desired location and property type filters. The actor preserves the full URL path and location reference codes.
Start Small
Begin with results_wanted: 20 to verify your search URL and filters return the expected properties. Increase for production runs after validation.
Apply Filters
Use the minPrice, maxPrice, minBedrooms, and other filter inputs to narrow results when your URL covers a broad area. Filters are passed as query parameters to the search page.
Proxy for Reliability
Enable Apify Proxy with residential groups for large or frequent runs. This reduces the chance of rate limiting or blocking.
Integrations
Connect your dataset with:
- Google Sheets - Reporting and trend tracking
- Airtable - Searchable listing databases
- Make - Automated workflows
- Zapier - Trigger downstream automations
- Webhooks - Push data into your own systems
Export Formats
- JSON - API and engineering workflows
- CSV - Spreadsheet analysis
- Excel - Business reporting
Frequently Asked Questions
How does the actor handle my search URL?
The actor uses your URL exactly as provided. It does not modify the URL path. Pagination is handled through query parameters (?page=2) as supported by PrivateProperty.
Can I scrape properties in a specific suburb?
Yes. Paste the exact search URL from PrivateProperty for that suburb. The actor will only return properties matching that location.
Can I combine location filters with price or bedroom filters?
Yes. Set the location via your URL and add minPrice, maxPrice, minBedrooms, maxBedrooms, or other numeric filters. Both are applied together.
Why does a property have missing fields?
Some listings do not publish every detail. The actor omits unavailable values. Listing page enrichment is enabled by default for maximum data.
Can I run this on a schedule?
Yes. Schedule recurring runs in the Apify Console. The output dataset can be exported, integrated, or processed automatically.
Can I scrape multiple areas at once?
Yes. Add multiple URLs in the startUrls array. The actor processes each URL sequentially until the result limit is reached.
Support
For issues or feature requests, use the actor issue tracker in your Apify workspace.
Legal Notice
Use this actor responsibly. Ensure your use complies with PrivateProperty's terms of service and applicable data protection laws.