Property24 Real Estate Scraper (South Africa)
Pricing
from $0.84 / 1,000 results
Property24 Real Estate Scraper (South Africa)
Scrapes property listings from Property24 — South Africa's #1 property portal. Returns price, location, bedrooms, bathrooms, parking, floor size, erf size, rates and levies, agent contact, GPS coordinates and full descriptions for any search you paste in.
Pricing
from $0.84 / 1,000 results
Rating
0.0
(0)
Developer
Ibnu Adzim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Scrapes property listings from Property24 — South Africa's #1 property portal.
Public data only. No login, no cookies, no browser. No bot challenge of any kind — 5 of 5 TLS profiles returned clean 200s on search, detail, and even a bogus area path (which answers a clean 404, not a challenge).
The one thing you need to know before using this
You paste a search URL — you don't build one. Property24 search URLs end
in an opaque numeric area id
(/for-sale/cape-town/western-cape/432) that Property24 assigns per
suburb/city. A wrong guess does not error — it can silently resolve to a
completely different place with a healthy HTTP 200 (a guessed id for "durban"
landed on Himeville, ~150 km away, with no error of any kind). So this actor
takes full search-result URLs, not place names: browse to any search on
property24.com (city, suburb, price range, bedrooms — whatever filters you
want) and paste the resulting URL in.
What you get
Three record types share one dataset, told apart by recordType.
PROPERTY — one row per listing
List rows carry price, currency, suburb, street address, bedrooms, bathrooms, parking spaces, floor size, a description excerpt and the main image — parsed from Property24's own Schema.org microdata on the search page.
With Fetch full property details on (the default), each row also gets:
propertyDetails (Property24's Schema.org RealEstateListing JSON-LD,
verbatim — full description, exact GPS coordinates, listing agent and
agency), plus erfSize, ratesAndTaxes, levies and listingDate — four
fields that exist only as plain HTML on the detail page, in neither the
list tile nor the JSON-LD block.
SEARCH_SUMMARY — one row per search URL
How many pages were fetched and how many properties came back.
ERROR — one row per input that could not be processed
Every input maps to at least one row, so nothing disappears silently.
Input
| Field | What it does |
|---|---|
| Search URLs | full property24.com/for-sale/... URLs, copied from the site — one crawl each |
| Max properties per search URL | 0 = unlimited (pagination here is honest — see below) |
| Fetch full property details | JSON-LD + erf size/rates/levies/date via one extra request per property |
| Min interval between requests | the speed control — 0.4s default |
Example
{"searchUrls": ["https://www.property24.com/for-sale/cape-town/western-cape/432","https://www.property24.com/for-sale/johannesburg/gauteng/9"],"maxItems": 200,"includePropertyDetails": true}
Notes on reliability
- No WAF. All surfaces answered 200 on
chrome124,chrome120,safari17_0,chrome99_androidandfirefox133—chrome99_androidwas checked specifically for the mobile-document trap seen on other targets in this portfolio and does not trigger it here (identical markup). - Pagination is honest — unusually so for this portfolio. Page 1 and
page 2 share zero listing ids (genuinely different results), and past the
real last page Property24 answers HTTP 200 with a normal document but zero
tiles. It does not clamp back to page 1 the way some other portals in
this portfolio do, so
maxItems: 0(unlimited) safely walks every page a search has. - Speed is controlled by request rate, not concurrency, same design as
the other actors in this portfolio —
maxConcurrencyabsorbs latency variance,minRequestIntervalis the actual throttle. - Residential proxy pinned to South Africa is the cloud default.
Known limits
- For-sale only. A
to-let(rental) path was tried at the same area id and returned a clean 404 — rentals appear to use a separate, equally opaque id space that was not mapped in this recon pass. - No standalone geocoding of area ids. There is no public directory of every suburb's numeric id, so this actor cannot accept "Sandton" and find its id itself — see "the one thing you need to know" above.