Property24 API

South African property as JSON, with the area you asked for confirmed in the answer

Property24 API returns live Property24 data as clean JSON for property24 The primary endpoint, search, returns {area:{area_id,name,parent_name,area_type}, matched, page, page_size, total_pages, listings:[{listing_number,url,title,price:{amount,curr….

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Property24 endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
P
/property24/v1

3 active endpoints. Every call is 1 credit.

  • POST/property24/v1/search
  • POST/property24/v1/detail
  • POST/property24/v1/location

What Property24 endpoints does ReefAPI ship?

3 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

3 endpoints

search

1 cr

Search Property24 listings in any South African province, city, suburb or estate.

required
location
optional
area_id, area_type, listing_type, property_type, price_min, price_max, bedrooms_min, bathrooms_min, parking_min, size_min, size_max, sort, page, on_show, on_auction, repossessed, retirement

detail

1 cr

Full record for one Property24 listing, by listing URL or by the listing number a search row…

required
listing
optional
—

location

1 cr

Resolve free text to Property24's own area ids, so a search can be pinned to an exact place i…

required
query
optional
limit

Every parameter, every allowed value →

Property24 API

3 of 3 endpoints, ready to run

View docs ↗

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

1 credit1 required · 17 optional
POST/property24/v1/search
ok22 records · sample
{
  "ok": true,
  "data": {
    "area": {
      "area_id": 11021,
      "name": "Sea Point",
      "parent_name": "Cape Town",
      "area_type": "suburb"
    },
    "matched": true,
    "listing_type": "sale",
    "page": 1,
    "page_size": 22,
    "total_pages": 12,
    "listings": [
      {
        "listing_number": "117488816",
        "url": "https://www.property24.com/for-sale/sea-point/cape-town/western-cape/11021/117488816",
        "title": "2 Bedroom Apartment in Sea Point",
        "price": {
          "amount": 15950000,
          "currency": "ZAR",
          "formatted": "R 15 950 000",
          "source_is_machine_value": false
        },
        "bedrooms": 2,
        "bathrooms": 2,
        "parking_spaces": 2,
        "floor_size_m2": 187,
        "erf_size_m2": null,
        "gross_lettable_area_m2": null,
        "suburb": "Sea Point",
        "address": null,
        "excerpt": null,
        "primary_photo_url": "https://images.prop24.com/384061655/Crop525x350",
        "agency": {
          "name": "Greeff Christies International Real Estate Head Office"
        },
        "agent": {
          "name": null
        },
        "badges": [],
        "promoted": true,
        "boosted": false
      },
      {
        "listing_number": "117553310",
        "url": "https://www.property24.com/for-sale/sea-point/cape-town/western-cape/11021/117553310",
        "title": "0.5 Bedroom Apartment",
        "price": {
          "amount": 2795000,
          "currency": "ZAR",
          "formatted": "R 2 795 000",
          "source_is_machine_value": true
        },
        "bedrooms": 0.5,
        "bathrooms": 1,
        "parking_spaces": null,
        "floor_size_m2": 47,
        "erf_size_m2": null,
        "gross_lettable_area_m2": null,
        "suburb": "Sea Point",
        "address": null,
        "excerpt": "Offers From: R2,795,000 Perfectly positioned on sought after Beach Road, this stylish studio apartment offers an exceptional opportunity to enjoy the best of Sea Point living. Located just moments from the iconic Sea Point ...",
        "primary_photo_url": "https://images.prop24.com/386058220/Crop600x400",
        "agency": {
          "name": "Quay 1 International Realty"
        },
        "agent": {
          "name": null
        },
        "badges": [],
        "promoted": false,
        "boosted": true
      },
      {
        "listing_number": "117598425",
        "url": "https://www.property24.com/for-sale/sea-point/cape-town/western-cape/11021/117598425",
        "title": "2 Bedroom Apartment",
        "price": {
          "amount": 8750000,
          "currency": "ZAR",
          "formatted": "R 8 750 000",
          "source_is_machine_value": true
        },
        "bedrooms": 2,
        "bathrooms": 2,
        "parking_spaces": 2,
        "floor_size_m2": 74,
        "erf_size_m2": null,
        "gross_lettable_area_m2": null,
        "suburb": "Sea Point",
        "address": "243 Strand Beach, 243 High Level Road",
        "excerpt": "Perfectly positioned just off High Level Road in one of Sea Point’s best designed apartment buildings, this spacious two bedroom, two bathroom apartment offers an exceptional ...",
        "primary_photo_url": "https://images.prop24.com/386152431/Crop600x400",
        "agency": {
          "name": "Prime Property Umhlanga"
        },
        "agent": {
          "name": null
        },
        "badges": [],
        "promoted": false,
        "boosted": true
      }
    ]
  },
  "meta": {
    "api": "property24",
    "endpoint": "search",
    "mode": "live",
    "record_count": 22
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the Property24 API works

Property24 is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 321 engines.

02
Call
POST /property24/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 credit per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Resolve the area first, because Property24 reads the same id differently on different paths

Property24's search URLs carry an area id whose meaning depends on how many segments the path has. The same number on a shorter path opens a different city entirely, and the page still returns a full set of listings that looks perfectly reasonable.

01location
POST/property24/v1/location
{"query": "sandton"}

The ranked area matches with their id, their level and whether a listing page actually exists for them. Some areas have an id and no page at all; the response says so rather than pointing you at a neighbour.

02search
POST/property24/v1/search
{"location": "sandton"}

The search echoes the area it resolved - id, name, parent and level - so you can confirm the market that answered is the market you asked for.

03search
POST/property24/v1/search
{"location": "sandton", "listing_type": "to-rent"}

The same shape for the rental side, with Property24's own filters.

04detail
POST/property24/v1/detail
{"listing": "<listing number from any row>"}

The full listing. One that has been sold, let or withdrawn answers as not found rather than as a refusal, because Property24's own canonical URL for it returns a 404.

An area you can prove answered, listings whose price matches the figure the site printed, and a clear not-found for the ones that have gone.

request
curl -X POST https://api.reefapi.com/property24/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "property24",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

South Africa only, in rand, with the resolved area echoed back on every search

Measured 2026-09-30 against the live gateway across Sandton, Pretoria, Durban and Gqeberha, with every price checked against the source's own formatted figure. Three of these lines go against us.

South Africa, in rand, both sides of the market

One country, one currency, for sale and to rent. Suburb-level search is the point of this source: a city answer is the sum of its suburbs, and the suburb is where a South African buyer actually looks.

The search tells you which area answered

Every search echoes the area id, name, parent and level that Property24 resolved. That is not decoration. Property24's SEO routes read an area id in a different namespace depending on how many segments the path has, so the same id on a shorter path returns a completely different city with a normal 200 and a full page of listings. The engine verifies the page's own resolved area against the one that was asked for and refuses a mismatch.

Against us: some areas have an id and no listing page

Metro sub-regions resolve to a real area id and have no working listing route at all. Asking for one is refused with an explanation rather than answered from a nearby area, and the location call reports the area as not searchable along with its parent. Port Elizabeth is the case to know: it is a sub-region whose parent is Gqeberha, and Gqeberha is the handle that returns listings.

The price is checked against the figure the site printed

Across measured rows the numeric price agreed with Property24's own formatted figure every time. That check earns its place: a promoted tile nests its headline inside the price element, so the text reads as the price followed immediately by the listing title, and stripping it to digits turned five million nine hundred ninety-five thousand rand into fifty-nine million - ten times the asking price, with every field filled and the column a hundred percent complete.

Promoted tiles are the first rows, and they are the ones that broke

Every row of a measured first page was a promoted placement. That is why they were sampled deliberately: the price fault above lived only on promoted tiles, and a sample drawn from the middle of a result set would have missed it entirely.

Against us: seventeen listings in a thousand publish no price

Those are literally marked price on application at the source. They come back null rather than zero. A separate fault was fixed alongside it: one such listing leaked a block of page code into the formatted price field, which is now guarded.

Against us: the description excerpt is only on organic rows

Promoted tiles carry no excerpt at all - none of 223 in a measured run, against every one of 352 organic rows. Bedrooms, bathrooms and parking are on most rows, floor and erf size on fewer, and each gap traced back to a listing that does not publish the fact rather than to the parser.

The area autocomplete is not a matcher either

A nonsense query returns unrelated places rather than nothing, so matches are scored and an unmatched query is reported as unmatched instead of handing back the first row as though it were the answer.

Sorting is reported as what it is

Property24 injects a paid row into the organic stream with no distinguishing marker, so a sort is reported as adjacent pairs in order rather than as a clean guarantee. That was measured on the page rather than assumed from the parameter name.

Price

The location resolver is the cheap call and it is the one that prevents the expensive mistake. Resolve, confirm the echo, then search.

What people build with Property24

The jobs this data is most often used for.

3

endpoints

1

credit per call

01

Pricing and assortment teams use Property24 to search Property24 listings in any South African province, city, suburb or estate.

02

Brand-protection teams use Property24 to get full record for one Property24 listing, by listing URL or by the listing number a search row….

03

Retail analysts use Property24 to resolve free text to Property24's own area ids, so a search can be pinned to an exact place i….

What Property24 data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 321 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/property24/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/property24/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Property24.

Get a free key →
What is the Property24 API?▾

Property24 API is a ReefAPI endpoint group for property24 It returns live JSON through POST requests under /property24/v1.

Is the Property24 API free to try?▾

Yes. ReefAPI starts with 1,000 free credits, no card required. Property24 calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Property24 login or account?▾

No login to Property24 is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Property24 data?▾

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Property24 API use?▾

Property24 actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Property24 from an AI assistant or MCP client?▾

Yes. Connect ReefAPI once through MCP and your assistant can call property24 actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Property24 API a Property24 scraper?▾

It is the managed alternative to a DIY Property24 scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same property24 back as clean JSON.

Why does my Property24 scraper keep getting blocked?▾

Most Property24 scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.

26 More APIs APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Property24, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 320 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-30.