{
  "openapi": "3.0.1",
  "info": {
    "title": "Property24 Scraper | South Africa",
    "description": "Extract structured Real estate listings across South Africa from Property24.com with property details, agent profiles, full descriptions, media and more. Built for enterprise-grade real estate intelligence, lead enrichment, market analysis, and automated data pipelines.",
    "version": "0.0",
    "x-build-id": "McpyKCVMacB2vagRO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fatihtahta~property24-scraper-za/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fatihtahta-property24-scraper-za",
        "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/fatihtahta~property24-scraper-za/runs": {
      "post": {
        "operationId": "runs-sync-fatihtahta-property24-scraper-za",
        "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/fatihtahta~property24-scraper-za/run-sync": {
      "post": {
        "operationId": "run-sync-fatihtahta-property24-scraper-za",
        "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": [
          "location"
        ],
        "properties": {
          "location": {
            "title": "Add Search Location",
            "minLength": 1,
            "type": "string",
            "description": "Required. Enter a location name in a shape that Property24 recognizes. Accepted shapes include province or region, city, suburb, neighborhood, district, or area. Examples: \"Western Cape\" for a province or region, \"Cape Town\" for a city, or \"Woodstock, Cape Town\" for a suburb with its city."
          },
          "deal_type": {
            "title": "Select Listing Market",
            "enum": [
              "Properties For Sale",
              "Properties For Rent",
              "Sold Properties"
            ],
            "type": "string",
            "description": "Choose whether the run should collect properties for sale, properties for rent, or sold property records for the locations you entered.",
            "default": "Properties For Rent"
          },
          "min_price": {
            "title": "Set Minimum Price",
            "minimum": 1,
            "type": "integer",
            "description": "Enter the lowest listing price to include, using whole numbers without currency symbols. Leaving this empty includes listings below any chosen maximum."
          },
          "max_price": {
            "title": "Set Maximum Price",
            "minimum": 1,
            "type": "integer",
            "description": "Enter the highest listing price to include, using whole numbers without currency symbols. Leaving this empty includes listings above any chosen minimum."
          },
          "min_property_area": {
            "title": "Set Minimum Floor Area",
            "minimum": 1,
            "type": "integer",
            "description": "Enter the smallest property floor area to include, in square meters. Leave empty when floor area should not narrow the results."
          },
          "max_property_area": {
            "title": "Set Maximum Floor Area",
            "minimum": 1,
            "type": "integer",
            "description": "Enter the largest property floor area to include, in square meters. Use this with a minimum area for a defined floor-size range."
          },
          "min_land_area": {
            "title": "Set Minimum Land Area",
            "minimum": 1,
            "type": "integer",
            "description": "Enter the smallest land area to include, in square meters. This is useful when plot size matters more than interior floor area."
          },
          "max_land_area": {
            "title": "Set Maximum Land Area",
            "minimum": 1,
            "type": "integer",
            "description": "Enter the largest land area to include, in square meters. Leave empty when larger plots should remain eligible."
          },
          "min_bedroom": {
            "title": "Set Minimum Bedrooms",
            "minimum": 1,
            "type": "integer",
            "description": "Enter the minimum number of bedrooms a listing must have. Leave empty to include studio, one-bedroom, and other smaller configurations."
          },
          "min_bathroom": {
            "title": "Set Minimum Bathrooms",
            "minimum": 1,
            "type": "integer",
            "description": "Enter the minimum number of bathrooms a listing must have. Use this with bedroom filters when you need a specific layout profile."
          },
          "min_parking": {
            "title": "Set Minimum Parking Spaces",
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "type": "string",
            "description": "Choose the minimum number of parking spaces required for each listing. Leave blank when parking should not affect the search."
          },
          "furnished": {
            "title": "Filter Furnishing Status",
            "enum": [
              "furnished_only",
              "unfurnished_only"
            ],
            "type": "string",
            "description": "Choose furnished-only or unfurnished-only results when furnishing status is a required part of the brief. Leave blank to include both where available."
          },
          "property_type": {
            "title": "Choose Property Types",
            "uniqueItems": true,
            "type": "array",
            "description": "Select one or more property types to include. Leave empty to keep the search open across all supported property categories.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "apartment_flat",
                "townhouse",
                "vacant_land_plot",
                "farm",
                "commercial_property",
                "industrial_property"
              ],
              "enumTitles": [
                "House",
                "Apartment / Flat",
                "Townhouse",
                "Vacant Land / Plot",
                "Farm",
                "Commercial Property",
                "Industrial Property"
              ]
            }
          },
          "features": {
            "title": "Choose Listing Features",
            "uniqueItems": true,
            "type": "array",
            "description": "Select required features such as pet friendly, garden, pool, or flatlet. Each selected feature narrows the results toward listings that match those requirements.",
            "items": {
              "type": "string",
              "enum": [
                "pet_friendly",
                "garden",
                "pool",
                "flatlet"
              ],
              "enumTitles": [
                "Pet friendly",
                "Garden",
                "Pool",
                "Flatlet"
              ]
            }
          },
          "rental_term": {
            "title": "Choose Rental Terms",
            "uniqueItems": true,
            "type": "array",
            "description": "Select rental billing terms to include when collecting rental listings. This setting is most useful when the selected market is Properties For Rent.",
            "items": {
              "type": "string",
              "enum": [
                "monthly",
                "weekly",
                "daily",
                "yearly",
                "per_square_metre"
              ],
              "enumTitles": [
                "Monthly",
                "Weekly",
                "Daily",
                "Yearly",
                "Per square metre"
              ]
            }
          },
          "sort_by": {
            "title": "Choose Sort Order",
            "enum": [
              "default",
              "lowest_price",
              "highest_price",
              "most_recent",
              "available_date_ascending",
              "available_date_descending",
              "property_type",
              "size"
            ],
            "type": "string",
            "description": "Select the ordering that best matches the workflow, such as newest listings first, price order, availability date, property type, or size."
          },
          "enrich_data": {
            "title": "Collect Richer Real Estate Listing Details",
            "type": "boolean",
            "description": "Enable this for more complete property listing records. This may make the run slower because the actor may spend more time collecting details for each result. Turn it off for faster runs when the standard result fields are enough.",
            "default": true
          },
          "limit": {
            "title": "Set Maximum Results per Input",
            "minimum": 1,
            "type": "integer",
            "description": "Enter the maximum number of listings to save for each provided location or input. Leave empty to collect without this per-input cap."
          },
          "proxyConfiguration": {
            "title": "Set Up Proxy Connection",
            "type": "object",
            "description": "Choose an Apify proxy or custom proxy configuration when you need more controlled connection behavior. Keep the default unless your organization requires a different setup.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}