
Google Ads Scraper
scrape.ly/store/querystone/google-ads-scraperLead generationSEO tools
4 monthly users

Scrape Property24.com, South Africa's largest property portal: listings for sale or to rent with price, rooms, sizes, levies, rates, address, coordinates, photos, description, features, agents and agency.
Scrape Property24.com, South Africa's largest property portal, and get every listing for sale or to rent as clean, structured data: price, rooms, floor and erf size, levies, rates and taxes, full address, coordinates, all photos, the full description, property features, nearby points of interest, and the agents and agency behind each listing. Paste a search URL or just type an area name. No login, no browser, and about 20 full listings in under 20 seconds.
| Field | What it does |
|---|---|
startUrls | Property24 search result URLs (all filters kept, followed page by page) or single listing URLs. |
locations | Suburbs, cities or provinces by name, e.g. Sea Point, Sandton, Parkhurst, Johannesburg. |
maxItems | Maximum listings to save in total (default 20, 0 = no limit). |
maxItemsPerSearch | Optional cap per search URL or area, so every search in a long list gets listings. |
listingType | sale or rent for Areas. |
minPrice / maxPrice | Price range in rand (monthly rent for rentals). |
minBedrooms | Minimum bedrooms (site maximum filter is 5+). |
propertyTypes | house, apartment, townhouse, land, farm, commercial, industrial. |
sortBy | relevance, newest, price_low, price_high, size. |
scrapeDetails | On (default): full listing pages. Off: faster, lighter records from the result cards. |
includePointsOfInterest | Add nearby schools, transport, shops and restaurants (default on). |
{
"startUrls": [{ "url": "https://www.property24.com/to-rent/sea-point/cape-town/western-cape/11021" }],
"locations": ["Sandton"],
"listingType": "sale",
"minBedrooms": 3,
"maxPrice": 5000000,
"maxItems": 100
}
One row per listing.
| Field | Description |
|---|---|
listingId, listingNumber, url | Property24 listing number and link |
title, descriptionHeader, description | Headline and full description |
listingType, status, propertyType | Sale or Rental; Active, Under Offer, Sold; House, Apartment / Flat, ... |
price, displayPrice, currency, rentalTerm | Numeric price in rand and the price as shown (POA listings have no numeric price) |
bedrooms, bathrooms, garages, parkingSpaces | Room counts |
floorSize, erfSize, size, sizeType | Sizes in m² |
levies, ratesAndTaxes, deposit | Monthly costs in rand when listed |
occupationDate, leasePeriod, petsAllowed, furnished, lifestyle, zoning, listingDate | Overview fields |
streetAddress, suburbName, cityName, provinceName, suburbId, cityId, provinceId, latitude, longitude | Location |
agencyName, agencyId, agencyUrl, agencyLogoUrl, agentName, contacts | Agency and agents (private listings show the landlord or seller) |
keyFeatures, details | Key features and every overview section (Rooms, External Features, Building, Other Features) |
photos, photoCount, mainImageUrl, youTubeVideoId, virtualTourUrl | Media |
pointsOfInterest | Nearby places by category with distances |
badges, auction, onShow, repossessed | Listing flags |
suburbTrendsUrl, suburbResultsUrl, searchUrl, scrapedAt | Links and scrape time |
Example (trimmed, agent name fictional):
{
"listingId": "117323578",
"listingNumber": "P24-117323578",
"url": "https://www.property24.com/for-sale/val-de-vie-estate/paarl/western-cape/11726/117323578",
"title": "4 Bedroom House for Sale in Val De Vie Estate",
"descriptionHeader": "Luxury, Flexibility and Lifestyle in South Africa's Premier Estate",
"description": "Situated within the award-winning Val de Vie Estate, this beautifully maintained residence presents an exceptional opportunity to enjoy secure luxury living in one of the Cape Winelands' most sought-a...",
"listingType": "Sale",
"status": "Active",
"propertyType": "House",
"displayPrice": "R 12 800 000",
"price": 12800000,
"currency": "ZAR",
"rentalTerm": null,
"bedrooms": 4,
"bathrooms": 3,
"garages": 2,
"parkingSpaces": 2,
"floorSize": 270,
"erfSize": 600,
"size": {
"value": 270,
"unit": "m²"
},
"sizeType": "Floor",
"levies": 5366,
"ratesAndTaxes": 3618,
"deposit": null,
"occupationDate": null,
"leasePeriod": null,
"petsAllowed": true,
"furnished": null,
"lifestyle": "Security Estate, Security Complex",
"zoning": "General Residential",
"listingDate": "2026-06-16",
"streetAddress": null,
"suburbName": "Val de Vie Estate",
"cityName": "Paarl",
"provinceName": "Western Cape",
"suburbId": 11726,
"cityId": 344,
"provinceId": 9,
"country": "South Africa",
"latitude": null,
"longitude": null,
"isPrivateListing": false,
"agencyName": "Pam Golding Properties - Paarl",
"agencyId": 11264,
"agencyUrl": "https://www.property24.com/estate-agents/pam-golding-properties-paarl/11264",
"agencyLogoUrl": "https://images.prop24.com/371916540/Fit450x225",
"agentName": "Jane Smith",
"contacts": [
{
"id": 99001,
"name": "Jane Smith",
"contactType": "Agent",
"jobTitle": "Registered with the PPRA",
"photoUrl": "https://images.prop24.com/378058683/UpperCrop200x200",
"profileUrl": "https://www.property24.com/estate-agents/pam-golding-properties-paarl/jane-smith/99001",
"hasContactNumber": true,
"canShowWhatsApp": true
}
],
"keyFeatures": [
{
"text": "Bedrooms",
"value": "4"
},
{
"text": "Bathrooms",
"value": "3"
},
{
"text": "Garages",
"value": "2"
},
{
"text": "Parking",
"value": "2"
},
{
"text": "Pet Friendly"
}
],
"details": [
{
"name": "Property Overview",
"categoryItems": [
{
"name": "Listing Number",
"values": [
"117323578"
]
},
{
"name": "Type of Property",
"values": [
"House"
]
},
{
"name": "Lifestyle",
"values": [
"Security Estate, Security Complex"
]
},
{
"name": "Listing Date",
"values": [
"16 June 2026"
]
}
]
}
],
"badges": [],
"auction": false,
"onShow": false,
"repossessed": false,
"mainImageUrl": "https://images.prop24.com/381383598/Crop600x400",
"photoCount": 37,
"photos": [
{
"originalUrl": "https://images.prop24.com/381383598",
"imageUrl": "https://images.prop24.com/381383598/Crop676x507",
"midSizeImageUrl": "https://images.prop24.com/381383598/Crop600x400",
"thumbnailUrl": "https://images.prop24.com/381383598/Crop107x80"
},
{
"originalUrl": "https://images.prop24.com/381383632",
"imageUrl": "https://images.prop24.com/381383632/Crop676x507",
"midSizeImageUrl": "https://images.prop24.com/381383632/Crop600x400",
"thumbnailUrl": "https://images.prop24.com/381383632/Crop107x80"
}
],
"youTubeVideoId": "CNRqgNPueWQ",
"virtualTourUrl": null,
"pointsOfInterest": [
{
"name": "Transport and Public Services",
"pointsOfInterestItems": [
{
"name": "Cillie",
"distance": "1.85km"
},
{
"name": "Simondium",
"distance": "3.39km"
}
]
},
{
"name": "Education",
"pointsOfInterestItems": [
{
"name": "Green School SA",
"distance": "2.13km"
},
{
"name": "Simond Privaatskool",
"distance": "3.75km"
}
]
}
],
"suburbTrendsUrl": "https://www.property24.com/paarl/val-de-vie-estate/property-trends/11726",
"suburbResultsUrl": "https://www.property24.com/for-sale/val-de-vie-estate/paarl/western-cape/11726",
"searchUrl": "https://www.property24.com/for-sale/val-de-vie-estate/paarl/western-cape/11726?sp=pt%3d15000000%26bd%3d4",
"scrapedAt": "2026-10-22T07:59:36Z"
}
You pay $1.25 per 1,000 listings ($0.00125 per listing), plus the platform usage of the run (compute and proxy traffic). On the default datacenter proxy we measured about $0.08–0.13 of usage per 1,000 full listings. Example: 1,000 listings ≈ $1.25 + $0.13 ≈ $1.38. Listings that could not be loaded are never charged.
Is it legal to scrape Property24? The actor only reads public listing pages that anyone can open without an account. You are responsible for how you use the data, including personal data such as agent names, under POPIA and Property24's terms.
Do I need a login or proxy? No login. The default datacenter proxy works; if the site starts blocking it, the run switches to South African residential proxies by itself.
How many results can I get? As many as the search has. Set Max listings to 0 to take every page of every search. Property24 shows 20 listings per page.
Why is a field empty? Fields are only filled when the listing shows them: rentals rarely list levies or a listing date, many sale listings hide the street address and coordinates, and POA listings have no numeric price.
Are agent phone numbers included? No. Property24 only reveals numbers after a protected click that is logged as a lead for the agent; the actor returns agent names, profiles and agency details instead.
Can I schedule it or use the API? Yes. Schedule runs (for example daily with Sort by = Newest first) and read results through the API or integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalSearch or listing URLs
Links to property24.com search results (e.g. https://www.property24.com/to-rent/sea-point/cape-town/western-cape/11021) or single listings (e.g. https://www.property24.com/for-sale/sea-point/cape-town/western-cape/11021/117523066). Open the site, pick the area and filters, then copy the URL from the address bar. Search URLs keep their own filters and are followed page by page.
locationsarrayOptionalAreas
South African suburbs, cities or provinces to search by name, e.g. 'Sea Point', 'Sandton', 'Umhlanga', 'Gauteng'. Add the city after a comma to pick the right one ('Parkhurst, Johannesburg'). Uses the listing type and filters below.
maxItemsintegerOptionaldefault 20Max listings
Maximum number of listings to save across all URLs and areas. 0 means no limit (every listing of every search).
maxItemsPerSearchintegerOptionalMax listings per search
Optional cap for each search URL or area, so a long list of searches gets listings from every one of them. Empty or 0: no per-search cap (only Max listings applies).
The listing type applies to Areas. Price, bedroom, property type and sort filters apply to Areas and are also added to search URLs.
listingTypeenumOptionaldefault "sale"Listing type
Search properties for sale or to rent (for Areas).
minPriceintegerOptionalMin price (R)
Lowest price in rand. For rentals this is the monthly rent.
maxPriceintegerOptionalMax price (R)
Highest price in rand. For rentals this is the monthly rent.
minBedroomsintegerOptionalMin bedrooms
Only listings with at least this many bedrooms (the site's highest filter is 5+).
propertyTypesarrayOptionalProperty types
Only these property types. Leave empty for all types.
sortByenumOptionaldefault "relevance"Sort by
Order of the search results (matters when Max listings stops the run early).
scrapeDetailsbooleanOptionaldefault trueOpen each listing page
On: full records from each listing page (description, all photos, every overview field, agents and agency, coordinates, levies, rates). Off: faster, lighter records from the search result cards only (price, title, rooms, size, suburb, first photo).
includePointsOfInterestbooleanOptionaldefault trueInclude points of interest
Add nearby schools, transport, shops and restaurants with distances to each listing (one small extra request per listing).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for this site. If it keeps blocking them, the run switches to residential proxies in South Africa by itself.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| mainImageUrl | any | Photo |
| url | any | Listing |
| title | any | Title |
| listingType | any | Type |
| status | any | Status |
| propertyType | any | Property |
| price | any | Price (R) |
| displayPrice | any | Price shown |
| bedrooms | any | Beds |
| bathrooms | any | Baths |
| parkingSpaces | any | Parking |
| floorSize | any | Floor m² |
| erfSize | any | Erf m² |
| streetAddress | any | Address |
| suburbName | any | Suburb |
| cityName | any | City |
| provinceName | any | Province |
| agencyName | any | Agency |
| agentName | any | Agent |
| listingDate | any | Listed |
| listingId | any | Listing ID |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One saved Property24 listing. | $0.0013 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/property24-scraper').call({
"startUrls": [
{
"url": "https://www.property24.com/to-rent/sea-point/cape-town/western-cape/11021"
}
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/property24-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/property24-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Paste any Property24 search URL; its filters carry over. 15 full listings.
Type an area name instead of a URL. 15 full listings for sale.
Area search with price, bedroom, property-type and sort filters.
Fast, light rows from the search result cards (no listing pages).
A whole province, full listing pages, no nearby-places lookups.

Scrape Google Maps places for any search term and city, with no code or with one API call. A real run, its output, its log and its exact cost, plus the limits and the legal side.
Read the article
Paste an Amazon search or product URL into a ready-made Actor and get one row per product with price, ASIN, rating and review count. This guide covers the no-code steps, the API, ZIP code pricing, a real run and its cost.
Read the article
Scrape Google search results by query and country and get each results page as JSON: organic results with positions, People Also Ask and related searches. Run it without code or from Python, with a real run, the cost per page and Google's terms.
Read the articleScrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.