# Property24 Scraper: Real Estate Listings, Prices & Broker Leads (`getascraper/property24-scraper`) Actor

Extract property listings, asking prices, locations, bedrooms, bathrooms, floor sizes, real estate agencies, and WhatsApp agent contact links across 10 African countries from Property24.com. Download clean tables of property listings automatically for investment research.

- **URL**: https://apify.com/getascraper/property24-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.52 / 1,000 property listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

Pull clean, structured property data from Property24 across nine African markets in minutes. Search any city or suburb, then export every listing with asking price, location, bedrooms, bathrooms, floor size, and the agent behind it. Turn on deep scrape to add agent phone numbers, WhatsApp links, geo coordinates, levies, and full photo galleries. No login, no copy paste, no manual browsing. Just pick a location and download a spreadsheet of live listings.

### What does Property24 scraper do?

It collects property listings from Property24 and hands them back as a tidy table you can open in Excel, Google Sheets, or feed into your own tools.

You can scrape:

- Properties for sale, to rent, or recently sold
- Any city, suburb, or region across South Africa, Namibia, Kenya, Botswana, Zimbabwe, Zambia, Nigeria, Tanzania, and Mozambique
- Asking price, price per square meter, bedrooms, bathrooms, garages, floor size, and plot size
- The listing agent, agency, direct phone number, and WhatsApp contact link
- Full descriptions, amenities, levies, rates, and image galleries

Give it a location name and it builds the search for you. Or paste your own Property24 search and listing URLs if you already have them.

### Why use Property24 scraper?

**"I track the Cape Town and Sandton markets for a property fund."**
Pull every new listing in your target suburbs each morning, with price per square meter already calculated, so you can spot mispriced stock before anyone else.

**"I run a real estate lead service and need agent contacts."**
Turn on deep scrape and every row comes with the agent name, agency, phone number, and a ready to use WhatsApp link. Build a clean contact list without opening a single listing by hand.

**"I'm a relocation agent comparing rentals for clients."**
Filter by price, bedrooms, and minimum floor size, then hand your client a single sheet of every matching home with photos and a map pin for each one.

**"I'm a data analyst building a housing price model."**
Export thousands of listings with consistent fields: numeric price, floor area, plot size, levies, and rates. The data lands analysis ready, no cleanup needed.

### What you can extract

Every run returns flat, spreadsheet friendly rows. Each property includes its title, type, full location breakdown, pricing, room counts, sizes, and listing link. With deep scrape on, each row also carries agent and agency contacts, WhatsApp links, exact coordinates, levies, rates, amenities, and a photo gallery.

### Two ways to run it

**Fast list mode (default).** Reads search result pages and returns the core fields for every listing: title, price, type, location, bedrooms, bathrooms, and the listing URL. Best when you want a wide sweep of the market quickly and cheaply.

**Deep scrape mode.** Visits each listing page to add the high value extras: agent name and phone, agency, WhatsApp link, latitude and longitude, floor and plot size, levies, rates, full description, amenities, and image gallery. Best for lead generation and detailed analysis. You can switch it on with a single toggle.

### How to use Property24 scraper

1. Click **Try for free**.
2. Type one or more locations in **Search Locations** (for example, Cape Town or Sandton). Or paste Property24 URLs in **Start URLs**.
3. Choose **Listing Type**: for sale, to rent, or recently sold.
4. Set **Max Items** and any filters you want, such as price range or minimum bedrooms.
5. Turn on **Deep Scrape** if you need agent contacts and full property details.
6. Click **Save & Start**. When the run finishes, export your data as Excel, CSV, JSON, or HTML.

### Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| Start URLs | array of URLs | No | Property24 search, category, or direct listing URLs. Overrides the country and location fields when provided. |
| Search Locations | array of strings | No | One or more places to search, such as Cape Town, Sandton, or Nairobi CBD. The scraper builds the search for you. |
| Target Country Site | enum | No | Which Property24 country site to use when no Start URLs are given. Covers nine African markets. |
| Listing Type | enum | No | Scrape properties for sale, to rent, or recently sold. |
| Property Type | enum | No | Narrow results to houses, apartments, townhouses, vacant land, farms, or commercial. |
| Max Items | integer | No | Maximum number of listings to return across all searches. |
| Min Price | integer | No | Only return listings at or above this price. |
| Max Price | integer | No | Only return listings at or below this price. |
| Min Bedrooms | integer | No | Only return listings with at least this many bedrooms. |
| Min Bathrooms | integer | No | Only return listings with at least this many bathrooms. |
| Min Floor Size (m²) | integer | No | Only return listings at or above this floor size. Works best with deep scrape on. |
| Sort Order | enum | No | Order results by newest, price, or floor size. |
| Deep Scrape | boolean | No | Visit each listing page to add agent contacts, WhatsApp links, coordinates, sizes, levies, rates, and photos. |
| Proxy Configuration | object | Yes | Proxy settings. Residential proxies are recommended for South African sites. |

### Output

Each listing is saved as one row. Here is a single enriched record:

```json
{
  "listing_id": "117156004",
  "title": "6 Bedroom House in Camps Bay",
  "listing_type": "For Sale",
  "property_type": "House",
  "country": "South Africa",
  "province": "Western Cape",
  "city": "Cape Town",
  "suburb": "Camps Bay",
  "street_address": "Geneva Drive",
  "postal_code": "8005",
  "latitude": -33.9508,
  "longitude": 18.3776,
  "description": "Architectural masterpiece with uninterrupted Atlantic views...",
  "price": 75000000,
  "price_text": "75000000 (ZAR)",
  "price_per_sqm": 125000,
  "bedrooms": 6,
  "bathrooms": 6,
  "garages": 3,
  "parking_spaces": 4,
  "floor_size": 600,
  "erf_size": 850,
  "levies": 0,
  "rates_taxes": 12500,
  "has_solar": "Yes",
  "pet_friendly": "Yes",
  "garden": "Yes",
  "picture_url": "https://images.prop24.com/117156004/Crop600x400",
  "agency_name": "Seeff Atlantic Seaboard",
  "agent_name": "Jane Smith",
  "agent_phone": "+27821234567",
  "whatsapp_link": "https://wa.me/27821234567",
  "listing_url": "https://www.property24.com/for-sale/camps-bay/cape-town/western-cape/11014/117156004",
  "scraped_at": "2026-06-24T18:33:22.000Z"
}
````

In fast list mode, the contact, coordinate, and size fields are left out and only the core listing fields are returned.

### Data table

| Field | Type | Description |
| --- | --- | --- |
| listing\_id | string | Unique Property24 listing identifier. |
| title | string | Listing headline, such as "3 Bedroom House in Rondebosch". |
| listing\_type | string | For Sale, To Rent, or Recently Sold. |
| property\_type | string | House, Apartment, Townhouse, and similar. |
| country | string | Country the listing is in. |
| province | string | Province or region. |
| city | string | City. |
| suburb | string | Suburb or neighborhood. |
| street\_address | string | Street address when published. Deep scrape only. |
| postal\_code | string | Postal code when published. Deep scrape only. |
| latitude | number | Map latitude. Deep scrape only. |
| longitude | number | Map longitude. Deep scrape only. |
| description\_header | string | Short headline above the description. Deep scrape only. |
| description | string | Full property description. |
| price | number | Asking price as a clean number. |
| price\_text | string | Price as displayed, with currency. |
| price\_per\_sqm | number | Price divided by floor size. Deep scrape only. |
| bedrooms | number | Number of bedrooms. |
| bathrooms | number | Number of bathrooms. |
| garages | number | Number of garages. Deep scrape only. |
| parking\_spaces | number | Number of open parking bays. |
| floor\_size | number | Internal floor area in square meters. Deep scrape only. |
| erf\_size | number | Plot or land size in square meters. Deep scrape only. |
| listed\_date | string | Date the listing was posted. Deep scrape only. |
| levies | number | Monthly levy amount. Deep scrape only. |
| rates\_taxes | number | Monthly municipal rates and taxes. Deep scrape only. |
| has\_solar | string | Yes or No for solar power. Deep scrape only. |
| has\_backup\_battery | string | Yes or No for battery or inverter backup. Deep scrape only. |
| pet\_friendly | string | Yes or No for pet friendly. Deep scrape only. |
| garden | string | Yes or No for a garden. Deep scrape only. |
| picture\_url | string | Main listing photo. |
| images\_list | string | Comma separated gallery image links. Deep scrape only. |
| agency\_name | string | Listing agency name. Deep scrape only. |
| agency\_logo | string | Agency logo image link. Deep scrape only. |
| agent\_name | string | Listing agent name. Deep scrape only. |
| agent\_photo | string | Agent profile photo link. Deep scrape only. |
| agent\_phone | string | Agent phone number. Deep scrape only. |
| agent\_email | string | Agent email when published. Deep scrape only. |
| whatsapp\_link | string | Direct WhatsApp link to the agent. Deep scrape only. |
| listing\_url | string | Link to the original Property24 listing. |
| scraped\_at | string | Time the record was collected. |

### Pricing

This Actor runs on a pay per result model, so you only pay for the listings you actually receive. There are two simple modes. Every property returned is charged a base listing fee. When you turn on deep scrape, an extra enrichment fee applies only to those detailed records, because each one visits the full listing page to pull agent contacts, coordinates, and photos. Empty runs cost nothing and there is no monthly subscription. Run it once or schedule it daily and pay only for what you use.

### Frequently asked questions

**Is scraping Property24 legal?**
Yes, collecting publicly available listing data is generally legal. This Actor only reads pages that anyone can view in a browser. You are responsible for how you use the data and for following Property24's terms and your local regulations.

**Which countries does it cover?**
Nine African markets: South Africa, Namibia, Kenya, Botswana, Zimbabwe, Zambia, Nigeria, Tanzania, and Mozambique. Pick one in the country setting or paste a URL from any of these sites.

**Do I get agent phone numbers and WhatsApp links?**
Yes, when deep scrape is on. Each detailed record includes the agent name, agency, phone number, and a ready to use WhatsApp link where Property24 publishes them.

**Why do some runs return fewer details than others?**
Fast list mode returns only the core fields from search pages. To get coordinates, agent contacts, sizes, levies, and photos, turn on deep scrape so the Actor visits each listing page.

**Can I schedule it to run automatically?**
Yes. Use the Apify scheduler to run it daily, weekly, or at any interval, and connect the output to Google Sheets, Make, Zapier, or your own systems.

### Support

Found a bug or need a new field? Open an issue on the Actor's Issues tab. Suggestions and feature requests are welcome.

### Disclaimer

This Actor collects only publicly available data and does not bypass logins or access private information. Use the data responsibly and in line with Property24's terms of service and the data protection laws that apply to you.

# Actor input Schema

## `startUrls` (type: `array`):

Property24 search, category, or direct listing URLs. Overrides country, listingType, and searchLocations when provided.

## `searchLocations` (type: `array`):

One or more location names to search (e.g. 'Cape Town', 'Sandton', 'Nairobi CBD'). Each becomes a ?SearchString= query.

## `country` (type: `string`):

Select which Property24 country subdomain to scrape. Used when no startUrls are provided.

## `listingType` (type: `string`):

Select whether to scrape properties for sale, to rent, or recently sold.

## `propertyType` (type: `string`):

Filter results to a specific property category. Uses title-text matching on listing cards.

## `maxItems` (type: `integer`):

Maximum total property listings to scrape across all search URLs.

## `minPrice` (type: `integer`):

Only return listings with prices at or above this value (e.g. 500000).

## `maxPrice` (type: `integer`):

Only return listings with prices at or below this value (e.g. 10000000).

## `bedrooms` (type: `integer`):

Only return listings with at least this many bedrooms.

## `bathroomsMin` (type: `integer`):

Only return listings with at least this many bathrooms.

## `minFloorSize` (type: `integer`):

Only return listings where the floor size is at least this many square meters. Requires deepScrape to be accurate.

## `sortBy` (type: `string`):

Control the order in which Property24 returns listings for search URLs.

## `deepScrape` (type: `boolean`):

Fetch individual listing pages to extract agent contacts, WhatsApp links, full descriptions, amenities, levies, rates, and accurate floor/erf sizes.

## `proxyConfiguration` (type: `object`):

Residential proxies recommended for South African domains. For other countries, datacenter proxies typically work.

## Actor input object example

```json
{
  "startUrls": [],
  "searchLocations": [
    "Cape Town"
  ],
  "country": "south_africa",
  "listingType": "sale",
  "propertyType": "any",
  "maxItems": 100,
  "sortBy": "default",
  "deepScrape": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [],
    "searchLocations": [
        "Cape Town"
    ],
    "country": "south_africa",
    "listingType": "sale",
    "propertyType": "any",
    "maxItems": 100,
    "sortBy": "default",
    "deepScrape": false,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/property24-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [],
    "searchLocations": ["Cape Town"],
    "country": "south_africa",
    "listingType": "sale",
    "propertyType": "any",
    "maxItems": 100,
    "sortBy": "default",
    "deepScrape": False,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/property24-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [],
  "searchLocations": [
    "Cape Town"
  ],
  "country": "south_africa",
  "listingType": "sale",
  "propertyType": "any",
  "maxItems": 100,
  "sortBy": "default",
  "deepScrape": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/property24-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=getascraper/property24-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Property24 Scraper: Real Estate Listings, Prices & Broker Leads",
        "description": "Extract property listings, asking prices, locations, bedrooms, bathrooms, floor sizes, real estate agencies, and WhatsApp agent contact links across 10 African countries from Property24.com. Download clean tables of property listings automatically for investment research.",
        "version": "0.1",
        "x-build-id": "2SslYwJuXTkPallJA"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~property24-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-property24-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/getascraper~property24-scraper/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-property24-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/getascraper~property24-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-property24-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "proxyConfiguration"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Property24 search, category, or direct listing URLs. Overrides country, listingType, and searchLocations when provided.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "searchLocations": {
                        "title": "Search Locations",
                        "type": "array",
                        "description": "One or more location names to search (e.g. 'Cape Town', 'Sandton', 'Nairobi CBD'). Each becomes a ?SearchString= query.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Target Country Site",
                        "enum": [
                            "south_africa",
                            "namibia",
                            "kenya",
                            "botswana",
                            "zimbabwe",
                            "zambia",
                            "nigeria",
                            "tanzania",
                            "mozambique"
                        ],
                        "type": "string",
                        "description": "Select which Property24 country subdomain to scrape. Used when no startUrls are provided.",
                        "default": "south_africa"
                    },
                    "listingType": {
                        "title": "Listing Type",
                        "enum": [
                            "sale",
                            "rent",
                            "sold"
                        ],
                        "type": "string",
                        "description": "Select whether to scrape properties for sale, to rent, or recently sold.",
                        "default": "sale"
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "enum": [
                            "any",
                            "house",
                            "apartment",
                            "townhouse",
                            "vacant-land",
                            "farm",
                            "commercial"
                        ],
                        "type": "string",
                        "description": "Filter results to a specific property category. Uses title-text matching on listing cards.",
                        "default": "any"
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum total property listings to scrape across all search URLs.",
                        "default": 100
                    },
                    "minPrice": {
                        "title": "Min Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return listings with prices at or above this value (e.g. 500000)."
                    },
                    "maxPrice": {
                        "title": "Max Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return listings with prices at or below this value (e.g. 10000000)."
                    },
                    "bedrooms": {
                        "title": "Min Bedrooms",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Only return listings with at least this many bedrooms."
                    },
                    "bathroomsMin": {
                        "title": "Min Bathrooms",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Only return listings with at least this many bathrooms."
                    },
                    "minFloorSize": {
                        "title": "Min Floor Size (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return listings where the floor size is at least this many square meters. Requires deepScrape to be accurate."
                    },
                    "sortBy": {
                        "title": "Sort Order",
                        "enum": [
                            "default",
                            "newest",
                            "price-asc",
                            "price-desc",
                            "size"
                        ],
                        "type": "string",
                        "description": "Control the order in which Property24 returns listings for search URLs.",
                        "default": "default"
                    },
                    "deepScrape": {
                        "title": "Deep Scrape (Property Details)",
                        "type": "boolean",
                        "description": "Fetch individual listing pages to extract agent contacts, WhatsApp links, full descriptions, amenities, levies, rates, and accurate floor/erf sizes.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Residential proxies recommended for South African domains. For other countries, datacenter proxies typically work.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
