Property24
Property24
/property24/v1/search1 creditSearch Property24 listings in any South African province, city, suburb or estate — for sale or to rent — with the portal's own filters. Give a place name in `location` (it is resolved against Property24's own area index) or an exact `area_id` from the `location` action. Returns 22 listings per page with numeric ZAR price, bedrooms, bathrooms, parking, floor and erf size, suburb, street address, agency, photo and the listing URL. Promoted (paid-placement) rows are returned too and are flagged `promoted: true`, so they can be kept or filtered out — they are never silently mixed in.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| location | required | — | South African province, city, suburb or estate name, e.g. 'Sea Point', 'Sandton', 'Umhlanga', 'Western Cape'. Resolved against Property24's own area index; if nothing matches the call succeeds with zero rows and `matched: false` rather than guessing a different place. Optional only when `area_id` is given. |
| area_id | optional | 1– | Exact Property24 area id from the `location` action. Skips name resolution. Must be sent together with `area_type`, because the same number means a different place in each area level. |
| area_type = suburb | optional | province · city · suburb · estate | Which area level `area_id` belongs to. Required whenever `area_id` is used. |
| listing_type = sale | optional | sale · rent | Sale listings or rental listings. |
| property_type | optional | house · apartment · townhouse · vacant_land · farm · commercial · industrial | Restrict to one property type. Omit for every type. Bedroom and bathroom filters do not apply to vacant_land, farm, commercial or industrial — Property24 publishes no bedroom count for those. |
| price_min | optional | 0– | Lowest price in ZAR (rand). For rentals this is the rent, in the period Property24 publishes it. |
| price_max | optional | 0– | Highest price in ZAR (rand). |
| bedrooms_min | optional | 1–5 | At least this many bedrooms (Property24's own '3+' filter). |
| bathrooms_min | optional | 1–5 | At least this many bathrooms. |
| parking_min | optional | 1–5 | At least this many parking spaces / garages. |
| size_min | optional | 0– | Smallest size in m², using Property24's own size filter (floor size for built property, erf size for land). |
| size_max | optional | 0– | Largest size in m². |
| sort = default | optional | default · price_low · price_high · newest · type · size | Result order. 'default' is Property24's own ranking, which puts paid placements first. |
| page = 1 | optional | 1–500 | 1-based result page; 22 listings per page. |
| on_show = false | optional | — | Only listings with a show day scheduled. |
| on_auction = false | optional | — | Only listings going to auction. |
| repossessed = false | optional | — | Only bank-repossessed listings. |
| retirement = false | optional | — | Only retirement-village property. |
/property24/v1/detail1 creditFull record for one Property24 listing, by listing URL or by the listing number a search row returns. Adds what the result tile does not carry: the complete description, the feature list, levies, rates and taxes, price per m², listing date, street address, every photo, map coordinates and the agency. The agent's personal name and phone numbers are returned only with `include_pii`.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| listing | required | — | A Property24 listing URL (https://www.property24.com/for-sale/…/117658301) or the bare listing number (117658301) from a search row. |
/property24/v1/location1 creditResolve free text to Property24's own area ids, so a search can be pinned to an exact place instead of a name. Returns the matching provinces, cities, suburbs and estates with their id, level and ready-made for-sale and to-rent search URLs. Property24's metro sub-regions (e.g. 'Pretoria East') are returned with `searchable: false` — they have an id but no working listing route, and are reported rather than silently pointed at another place.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | required | — | Place name to resolve, e.g. 'Umhlanga', 'Sandton', 'Stellenbosch'. |
| limit = 10 | optional | 1–25 | Maximum areas to return. |
curl -X POST https://api.reefapi.com/property24/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.
Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.
Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.
No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.
Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.