{
  "openapi": "3.0.1",
  "info": {
    "title": "Private Property Scraper - South Africa Real Estate Listings",
    "description": "Scrape privateproperty.co.za for South African real estate homes, rentals, farms, commercial listings, and developments with prices, rooms, sizes, amenities, security, photos, links, and advertiser details. Export JSON, CSV, or Excel datasets and connect property research to API or MCP workflows",
    "version": "0.0",
    "x-build-id": "7ntIb2KBHqUOAqfWi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/igolaizola~privateproperty-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-igolaizola-privateproperty-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/igolaizola~privateproperty-scraper/runs": {
      "post": {
        "operationId": "runs-sync-igolaizola-privateproperty-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/igolaizola~privateproperty-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-igolaizola-privateproperty-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",
        "properties": {
          "maxItems": {
            "title": "Maximum listings",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of listings to return. Use 0 for all available listings.",
            "default": 100
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, suburb, or area to search. Example: Cape Town or Sandton.",
            "default": "Cape Town"
          },
          "listingType": {
            "title": "Listing type",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Whether to find properties offered for sale or rent.",
            "default": "sale"
          },
          "category": {
            "title": "Property category",
            "enum": [
              "residential",
              "commercial",
              "farm",
              "development"
            ],
            "type": "string",
            "description": "Broad property category to search. Development listings are available for sale searches only.",
            "default": "residential"
          },
          "minPrice": {
            "title": "Minimum price (ZAR)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest acceptable listing price in South African rand."
          },
          "maxPrice": {
            "title": "Maximum price (ZAR)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest acceptable listing price in South African rand."
          },
          "bedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of bedrooms."
          },
          "bathrooms": {
            "title": "Minimum bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of bathrooms."
          },
          "garages": {
            "title": "Minimum garages",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of garages."
          },
          "parkings": {
            "title": "Minimum parking spaces",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of parking spaces."
          },
          "minFloorSize": {
            "title": "Minimum floor size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum indoor floor area in square metres."
          },
          "maxFloorSize": {
            "title": "Maximum floor size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum indoor floor area in square metres."
          },
          "minLandSize": {
            "title": "Minimum land size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum land area in square metres."
          },
          "maxLandSize": {
            "title": "Maximum land size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum land area in square metres."
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Limit results to one or more property types. Allowed values: house (House), townhouse (Townhouse), apartment (Apartment), vacant_land (Vacant land), garden_cottage (Garden cottage), commercial (Commercial), industrial (Industrial), retail (Retail), office (Office), hospitality (Hospitality), farm (Farm), smallholding (Smallholding), farm_with_house (Farm with house), farmland (Farmland), agricultural_holding (Agricultural holding), commercial_farm (Commercial farm), or game_farm (Game farm).",
            "items": {
              "type": "string"
            }
          },
          "amenities": {
            "title": "Amenities",
            "type": "array",
            "description": "Select amenities required in the listing. Allowed values: garden (Garden), patio_or_balcony (Patio or balcony), pets_allowed (Pets allowed), pool (Swimming pool), furnished (Furnished), sea_view (Sea view), staff_quarters (Staff quarters), borehole (Borehole), flatlet (Flatlet), or scenic_view (Scenic view).",
            "items": {
              "type": "string"
            }
          },
          "securityFeatures": {
            "title": "Security features",
            "type": "array",
            "description": "Select security features required in the listing. Allowed values: alarm (Alarm), access_gate (Access gate), electric_fencing (Electric fencing), security_post (Security post), or intercom (Intercom).",
            "items": {
              "type": "string"
            }
          },
          "specialFeatures": {
            "title": "Special features",
            "type": "array",
            "description": "Choose sale features or rental inclusions. Allowed values: on_show (On show), bank_sale (Bank sale), electricity_included (Electricity included), or water_included (Water included).",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "relevance",
              "newest",
              "price",
              "size",
              "available_from"
            ],
            "type": "string",
            "description": "Choose the primary ordering for returned listings.",
            "default": "relevance"
          },
          "sortOrder": {
            "title": "Sort direction",
            "enum": [
              "ascending",
              "descending"
            ],
            "type": "string",
            "description": "Choose ascending or descending order.",
            "default": "descending"
          },
          "rentalPricePeriod": {
            "title": "Rental price period",
            "enum": [
              "monthly",
              "weekly",
              "daily",
              "per_square_metre"
            ],
            "type": "string",
            "description": "For rental searches, choose the period used for the price filter."
          },
          "fetchDetails": {
            "title": "Fetch listing details",
            "type": "boolean",
            "description": "Request one additional detail record per listing and add it under _details. This increases runtime and usage.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}