Skip to content
    ↑↓ to choose · Enter to open

    · 13 min read

    Property24 Scraper: 38 Data Fields, Up to 1,000 Free Results/Month

    By CrawlerBros Engineering Team

    Each record carries 38 output fields, capturing pricing, structural attributes, and room-by-room features across South African property portals. You can try this Actor on Apify's free plan, which includes $5.00 of monthly usage covering up to 1,000 results at $0.005 per result before run-start fees. Built for analysts, investors, and relocation researchers who need structured property data without manual browsing, and not for anyone who requires historical sales trends beyond current active listings.

    Try it: open Property24 Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try Property24 Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Property24 Scraper a month, before run-start charges and platform usage.

    Property24 Scraper was last updated on 2026-08-07. It is one of 1,725 Actors CrawlerBros publishes on Apify, which together have 692,561 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run Property24 Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    The primary cost driver is the maxItems control, which sets a hard cap on how many records are written to your dataset and directly multiplies against the per-result fee. To test whether the output meets your requirements before spending, execute a single run with maxItems set to a low value like 20.

    How do you run Property24 Scraper from the API?

    The schema marks 1 of its 13 controls as required: mode. The payload below uses the schema's own prefilled values, so it runs as written once you substitute your API token.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~property24-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"search"}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "search"
    }
    
    run = client.actor("crawlerbros~property24-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "search"
    }
    
    const run = await client.actor('crawlerbros~property24-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    The synchronous endpoint holds the connection open until the run finishes, which is convenient for small batches and wrong for large ones. For anything long running, start the run asynchronously and poll, or attach a webhook, so a dropped connection does not cost you the results.

    Which Property24 Scraper inputs matter, and which can you skip?

    The input schema exposes 13 controls, with mode as the only required parameter. Most users should leave bankRepossessionsOnly as false and sortBy at default on their first run to capture standard market listings.

    • mode (string): What to fetch. Default: "search".
    • transactionType (string): Buy or rent listings (mode=search). Default: "forSale".
    • propertyType (string): Filter by property category (mode=search). Default: "any".
    • province (string): South African province to search (mode=search). Default: "gauteng".
    • priceMin (integer): Minimum listing price in South African Rand.
    • priceMax (integer): Maximum listing price in South African Rand.
    • bedroomsMin (integer): Only include listings with at least this many bedrooms.
    • bathroomsMin (integer): Only include listings with at least this many bathrooms.
    • bankRepossessionsOnly (boolean): Search Property24's dedicated Repossessions category instead of the regular market (mode=search). Always for-sale (forces transactionType to forSale); property type/price/bedroom/bathroom filters still apply. Default: false.
    • sortBy (string): Order emitted results (mode=search). Default: "default".
    • listingUrls (array): Full Property24 listing URLs to fetch directly, e.g. https://www.property24.com/for-sale/blyde-riverwalk-estate/pretoria/gauteng/33014/116170024. Default: [].
    • includeFullDetails (boolean): Fetch each listing's detail page for full description, agent/agency info, exact address, coordinates, levies/rates, and room-by-room features. Adds one extra request per listing, so runs are slower. Always on for mode=byUrls. Default: false.

    The other 1 controls, with their defaults, are listed in the input schema on Property24 Scraper on Apify.

    Fixed-choice controls: mode accepts search (Search / browse listings), byUrls (Lookup specific listing URLs); transactionType accepts forSale (For sale), toRent (To rent); propertyType accepts any (Any property type), house, apartment (Apartment / Flat), townhouse, vacantLand (Vacant Land / Plot), farm, commercial (Commercial Property), industrial (Industrial Property); province accepts 9 values (default gauteng), including gauteng, westernCape (Western Cape), kwazuluNatal (KwaZulu-Natal), easternCape (Eastern Cape); sortBy accepts default (site order), priceLowToHigh (Price: low to high), priceHighToLow (Price: high to low), mostBedrooms (Most bedrooms first).

    What does Property24 Scraper return?

    Returned records provide structured property attributes such as price, bedrooms, floor sizes, and geographic identifiers suitable for market research and investment analysis. They conspicuously do not include historical transaction prices or buyer contact history beyond current agent details.

    • listingId, areaId
    • transactionType, propertyType
    • suburb, city, province
    • titleText, price (or priceOnApplication / pricePerSqm for commercial listings quoted per m² instead of a total)
    • bedrooms, bathrooms, parkingSpaces, floorSizeSqm
    • imageUrl, listingUrl
    • isBankRepossession (only when bankRepossessionsOnly: true)
    • recordType: "propertyListing", scrapedAt
    • title, description, datePosted, currency
    • agentName, agentProfileUrl, agencyName, agencyUrl, agencyLogoUrl
    • streetAddress, latitude, longitude, country
    • overview - listing number, type of property, listing date, floor size, price/m², levies, rates & taxes, transfer duty, pets allowed, floor number (fields vary by property type)
    • rooms - bedroom/bathroom/kitchen/lounge details as described by the agent
    • externalFeatures - parking details
    • building - number of floors, building-level info
    • otherFeatures - security, special features, internet access, generator, wheelchair access
    • images[] - full gallery of listing photos
    • listingNumber

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Property24 Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Set the mode control to search to browse active listings or byUrls if you already have specific listing addresses to inspect.
    2. Choose your target region using the province control, selecting from options like gauteng or westernCape.
    3. Select your transactionType to specify whether you want forSale or toRent properties.
    4. Apply propertyType filters such as house or apartment, or leave the default as any to capture the entire inventory.
    5. Set priceMin, priceMax, bedroomsMin, and bathroomsMin integer thresholds to narrow down your target property bracket.
    6. Toggle includeFullDetails to true if you need deep records containing agent contacts, exact coordinates, and room specifications.
    7. Set maxItems to a small trial cap such as 20 before executing your run to verify output structure.
    8. Inspect the resulting dataset items to confirm that critical fields like price and listingId are populated before scaling up.

    How do you apply it? Three worked playbooks

    These are Property24 Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Real estate market research

    Outcome: Track average prices, price/m², and inventory by province and property type

    Configure: Set mode to search, province to your target region, propertyType to your category of interest, and maxItems to 100 without enabling full details initially.

    Working method: Execute a broad search across your target province to collect baseline pricing data, then calculate average price per square metre across the returned items.

    Deliverable: A structured dataset containing pricing, floor sizes, and area identifiers for regional market analysis.

    Stop condition: Zero records returned due to overly restrictive price or location filters.

    Use case 2: Investment analysis

    Outcome: Filter for yield-friendly price/bedroom combinations

    Configure: Set mode to search, transactionType to forSale, propertyType to apartment or townhouse, and configure priceMax alongside bedroomsMin to isolate target investment brackets.

    Working method: Filter incoming records by price-to-bedroom ratios and cross-reference them against rental equivalents in the same suburb.

    Deliverable: A curated list of properties matching specific financial and structural criteria.

    Stop condition: Listings consistently returning priceOnApplication instead of figures, preventing automated yield calculations.

    Use case 3: Relocation / home search

    Outcome: Build a shortlist of matching listings with full contact info

    Configure: Set mode to search, province and propertyType to your preferences, and toggle includeFullDetails to true to capture agent details and exact addresses.

    Working method: Run the search with detail expansion enabled, then review the output gallery and agent contact URLs for shortlisted properties.

    Deliverable: A detailed property shortlist complete with agent contact names, phone references, and exact street locations.

    Stop condition: Agent contact fields returning null values due to agent omission on specific listing pages.

    What breaks, and how do you design around it?

    • Price/bedroom/bathroom filters are applied by the actor after fetching listings (not sent as query parameters to Property24) - this proved more reliable than Property24's own filtered-search URLs, which intermittently reject automated traffic even when the plain category page succeeds. The actor automatically retries with backoff, escalates through Apify Proxy, and falls back to a TLS-impersonating client, so a temporary block on one page usually just means that batch of results arrives on the next attempt rather than failing outright.
    • Property24's servers occasionally return a transient error on a specific page of results even after all retry tiers. When this happens the actor keeps whatever it already gathered and stops early rather than hanging or returning broken data - you may see slightly fewer than maxItems records on an unlucky run. Re-running (or increasing maxItems) recovers the rest.
    • imageUrl values are served by images.prop24.com, which returns a 500 error for HEAD requests but 200 image/jpeg for normal GET requests (the same way a browser or <img> tag loads them) - this is a CDN quirk, not a broken link.

    When price or room filters return fewer items than expected due to site-side filtering quirks, increase your maxItems threshold or re-run the collection to recover missed pages. Image URLs served via the CDN return errors for HEAD requests, so your downstream tooling must rely on standard GET requests.

    When should you not use Property24 Scraper?

    Do not use this Actor if your project requires historical price archives, verified past selling prices from deeds registries, or properties outside South Africa. For UK residential listings, use the OnTheMarket Property Listings Scraper or the Rightmove Property Scraper instead. For New Zealand property data, choose the Trade Me Property Scraper. If you need Danish property portals, deploy the Boliga Scraper - Danish Property Listings. For Colombian real estate, use the FincaRaiz Colombia Real Estate Scraper, and for Irish residential inventory, select the MyHome.ie Scraper.

    What should you check before trusting the output?

    • Verify that the listingId field is non-empty for every returned record in the dataset.
    • Check that the price field or its equivalent priceOnApplication or pricePerSqm indicator is correctly populated for commercial or residential assets.
    • Confirm that streetAddress and latitude/longitude coordinates are present when includeFullDetails is enabled.
    • Monitor dataset item counts against your maxItems threshold to detect early termination caused by transient page errors.
    • Ensure agentName and agencyName fields exist in deep records when collecting lead generation data.

    None of this proves a record is correct. It gives a scheduled Property24 Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    How does the pricing work for this Property24 Scraper on Apify?

    Each result costs $0.005, which equals $5.00 per 1,000 results on the free tier. A run-start fee is charged every time a run begins regardless of whether results are returned, and per-result charges apply strictly to records written to the dataset. Apify also bills platform usage consumed during execution on top of these charges.

    What is the difference between search mode and byUrls mode?

    Search mode allows you to browse and filter listings across all nine South African provinces by property type and price parameters. ByUrls mode performs an exact lookup when you supply a list of specific Property24 listing URLs, automatically fetching full detail pages for each provided address without running a broader browse query.

    Why do some listings show priceOnApplication instead of a fixed price?

    Certain sellers and agents list properties with price on application rather than disclosing a fixed numerical asking price on the platform. The Actor reports this text string directly in the dataset instead of attempting to estimate or guess a numerical value.

    How does bankRepossessionsOnly change the search behavior?

    Enabling bankRepossessionsOnly forces the transactionType to forSale and routes your query into Property24's dedicated repossessions category rather than the regular market feed. Because that specific section operates as a nationwide feed, province and property type filters are handled client-side by the Actor rather than through scoped URL parameters.

    Why do overview and room feature fields vary between different property records?

    Property24 permits agents to populate different descriptive fields depending on the specific asset category, such as erf sizes for freestanding houses versus monthly levies for apartments. The Actor passes through whatever data the agent actually submitted to the portal without inserting placeholder values.

    Where to go next

    When you are ready to run it, open Property24 Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the Property24 Scraper Actor page for the current input schema, pricing tier, and run history.

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-28.

    • Actor last updated by its maintainers on 2026-08-07.

    • Run outcome figures cover the 30 day public window ending 2026-09-28.

    • Property24 Scraper on Apify

    Featured actors

    Property24 Scraper

    Scrape Property24.com - South Africa's largest property portal. Search for-sale and to-rent listings by province, property type, price, and bedrooms/bathrooms, or fetch full listing detail pages: description, agent/agency, exact address, coordinates, levies/rates, and room-by-room features.

    Run on Apify ↗