{
  "openapi": "3.0.1",
  "info": {
    "title": "The Ultimate Property Scraper",
    "description": "Scrape clean, structured property listings from multiple real estate websites in one run.\nBuilt for scale with smart filtering (price, beds, baths, size, market, country), duplicate control, and output-ready records for database pipelines.",
    "version": "0.0",
    "x-build-id": "aaeP40PtMqyGv3VFr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/thescrapelab~the-ultimate-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-thescrapelab-the-ultimate-property-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/thescrapelab~the-ultimate-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-thescrapelab-the-ultimate-property-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/thescrapelab~the-ultimate-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-thescrapelab-the-ultimate-property-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": {
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Best starting point. Leave websites empty to run the production-ready websites in these countries.",
            "items": {
              "type": "string",
              "enum": [
                "AE",
                "BH",
                "BR",
                "CA",
                "CH",
                "DK",
                "EG",
                "ES",
                "FI",
                "FR",
                "GB",
                "IE",
                "IT",
                "KZ",
                "MA",
                "MX",
                "NG",
                "NL",
                "NZ",
                "PH",
                "PK",
                "PL",
                "PT",
                "QA",
                "RO",
                "SA",
                "SE",
                "TR",
                "UA",
                "US",
                "ZA"
              ],
              "enumTitles": [
                "United Arab Emirates (AE)",
                "Bahrain (BH)",
                "Brazil (BR)",
                "Canada (CA)",
                "Switzerland (CH)",
                "Denmark (DK)",
                "Egypt (EG)",
                "Spain (ES)",
                "Finland (FI)",
                "France (FR)",
                "United Kingdom (GB)",
                "Ireland (IE)",
                "Italy (IT)",
                "Kazakhstan (KZ)",
                "Morocco (MA)",
                "Mexico (MX)",
                "Nigeria (NG)",
                "Netherlands (NL)",
                "New Zealand (NZ)",
                "Philippines (PH)",
                "Pakistan (PK)",
                "Poland (PL)",
                "Portugal (PT)",
                "Qatar (QA)",
                "Romania (RO)",
                "Saudi Arabia (SA)",
                "Sweden (SE)",
                "Turkey (TR)",
                "Ukraine (UA)",
                "United States (US)",
                "South Africa (ZA)"
              ]
            },
            "default": []
          },
          "websites": {
            "title": "Websites (Optional)",
            "type": "array",
            "description": "Optional. Choose specific websites. If left empty, the actor uses countries or a lightweight default.",
            "items": {
              "type": "string",
              "enum": [
                "property24",
                "privateproperty",
                "hemnetse",
                "rightmoveukproperty",
                "onthemarketuk",
                "casait",
                "century21usproperty",
                "centriscaproperty",
                "imovirtualptproperty",
                "daftieproperty",
                "mercadolibrearproperty",
                "mercadolibremxproperty",
                "mercadolibredoproperty",
                "mercadolibregtproperty",
                "mercadolibrehnproperty",
                "mercadolibreniproperty",
                "mercadolibrepaproperty",
                "mercadolibreecproperty",
                "mercadolibrepyproperty",
                "mercadolibresvproperty",
                "vivarealbrproperty",
                "olxbrproperty",
                "propertynewsni",
                "propertypalni",
                "craigslistusproperty",
                "redfinusproperty",
                "coldwellbankerusproperty",
                "newhomesourceusproperty",
                "movotousproperty",
                "harusproperty",
                "zillowusproperty",
                "estatelyusproperty",
                "royallepagecaproperty",
                "srealityczproperty",
                "dotpropertyph",
                "etuovifiproperty",
                "vuokraovifiproperty",
                "lamudiph",
                "lamudimxproperty",
                "argenproparproperty",
                "bayutbhproperty",
                "bayutsaproperty",
                "betterhomesuaeproperty",
                "emiratesestateuaeproperty",
                "engeluaeproperty",
                "mubawabmaproperty",
                "papfrproperty",
                "fazwazth",
                "providentuaeproperty",
                "zooplaukproperty",
                "fundanlproperty",
                "boligsidendkproperty",
                "fotocasaesproperty",
                "propertyfinderbhproperty",
                "propertyfinderuae",
                "propertyfinderegproperty",
                "propertyfinderqaproperty",
                "propertyfindersaproperty",
                "propertygurumyproperty",
                "propertygurusgproperty",
                "otodompl",
                "myhomeieproperty",
                "homegatechproperty",
                "emlakjettrproperty",
                "pisosesproperty",
                "propertyprongproperty",
                "quintoandarbrproperty",
                "realestateconzproperty",
                "rumah123idproperty",
                "gumtreeukproperty",
                "olxptproperty",
                "olxkzproperty",
                "olxegproperty",
                "olxpkproperty",
                "olxroproperty",
                "olxuaproperty",
                "olxuzproperty",
                "suumojpproperty",
                "sothebysuaeproperty",
                "squareyardsuaeproperty",
                "zameenpkproperty",
                "bayutomproperty",
                "bayutuaeproperty",
                "dotpropertyidproperty",
                "dotpropertymyproperty",
                "dotpropertyvnproperty",
                "fazwazaeproperty",
                "fazwazarproperty",
                "fazwazegproperty",
                "fazwazidproperty",
                "fazwazmxproperty",
                "fazwazpeproperty",
                "fazwazphproperty",
                "fazwazvnproperty",
                "lamudipkproperty",
                "mercadolibreclproperty",
                "mercadolibrecoproperty",
                "mercadolibrecrproperty",
                "mercadolibrepeproperty",
                "mercadolibreuyproperty",
                "mercadolibreveproperty",
                "buyrentkenyaproperty",
                "dotpropertythproperty",
                "dubizzlebhproperty",
                "dubizzlejoproperty",
                "dubizzlelbproperty",
                "dubizzleomproperty",
                "dubizzleqaproperty",
                "olxbgproperty",
                "olxplproperty",
                "propertycozwproperty"
              ],
              "enumTitles": [
                "Property24 (ZA)",
                "Private Property (ZA)",
                "Hemnet (SE)",
                "Rightmove UK (GB)",
                "OnTheMarket UK (GB)",
                "Casa.it (IT)",
                "Century 21 US Property (US)",
                "Centris Canada Property (CA)",
                "Imovirtual Portugal (PT)",
                "Daft Ireland Property (IE)",
                "Mercado Libre Property Argentina (AR)",
                "Mercado Libre Property Mexico (MX)",
                "Mercado Libre Property Dominican Republic (DO)",
                "Mercado Libre Property Guatemala (GT)",
                "Mercado Libre Property Honduras (HN)",
                "Mercado Libre Property Nicaragua (NI)",
                "Mercado Libre Property Panama (PA)",
                "Mercado Libre Property Ecuador (EC)",
                "Mercado Libre Property Paraguay (PY)",
                "Mercado Libre Property El Salvador (SV)",
                "Viva Real Brazil Property (BR)",
                "OLX Brazil Property (BR)",
                "Propertynews NI (GB)",
                "PropertyPal NI (GB)",
                "Craigslist US Property (US)",
                "Redfin US Property (US)",
                "Coldwell Banker US Property (US)",
                "NewHomeSource US Property (US)",
                "Movoto US Property (US)",
                "HAR US Property (US)",
                "Zillow US Property (US)",
                "Estately US Property (US)",
                "Royal LePage Canada Property (CA)",
                "Sreality Czech Property (CZ)",
                "DotProperty Philippines (PH)",
                "Etuovi Finland Property (FI)",
                "Vuokraovi Finland Property (FI)",
                "Lamudi Philippines (PH)",
                "Lamudi Mexico Property (MX)",
                "Argenprop Argentina Property (AR)",
                "Bayut Bahrain Property (BH)",
                "Bayut Saudi Arabia Property (SA)",
                "Betterhomes UAE Property (AE)",
                "Emirates.Estate UAE Property (AE)",
                "Engel & Volkers UAE Property (AE)",
                "Mubawab Morocco Property (MA)",
                "PAP France Property (FR)",
                "FazWaz Thailand (TH)",
                "Provident UAE Property (AE)",
                "Zoopla UK Property (GB)",
                "Funda Netherlands Property (NL)",
                "Boligsiden Denmark Property (DK)",
                "Fotocasa Spain Property (ES)",
                "Property Finder Bahrain Property (BH)",
                "Property Finder UAE (AE)",
                "Property Finder Egypt (EG)",
                "Property Finder Qatar Property (QA)",
                "Property Finder Saudi Arabia Property (SA)",
                "PropertyGuru Malaysia (MY)",
                "PropertyGuru Singapore (SG)",
                "Otodom Poland (PL)",
                "MyHome Ireland Property (IE)",
                "Homegate Switzerland Property (CH)",
                "Emlakjet Turkey Property (TR)",
                "Pisos Spain Property (ES)",
                "PropertyPro Nigeria Property (NG)",
                "QuintoAndar Brazil Property (BR)",
                "RealEstate NZ Property (NZ)",
                "Rumah123 Indonesia Property (ID)",
                "Gumtree UK Property (GB)",
                "OLX Portugal Property (PT)",
                "OLX Kazakhstan Property (KZ)",
                "Dubizzle Egypt Property (EG)",
                "OLX Pakistan Property (PK)",
                "OLX Romania Property (RO)",
                "OLX Ukraine Property (UA)",
                "OLX Uzbekistan Property (UZ)",
                "SUUMO Japan Property (JP)",
                "Sotheby's UAE Property (AE)",
                "Square Yards UAE Property (AE)",
                "Zameen Pakistan Property (PK)",
                "Bayut Oman Property (OM)",
                "Bayut UAE Property (AE)",
                "DotProperty Indonesia (ID)",
                "DotProperty Malaysia (MY)",
                "DotProperty Vietnam (VN)",
                "FazWaz UAE (AE)",
                "FazWaz Argentina (AR)",
                "FazWaz Egypt (EG)",
                "FazWaz Indonesia (ID)",
                "FazWaz Mexico (MX)",
                "FazWaz Peru (PE)",
                "FazWaz Philippines (PH)",
                "FazWaz Vietnam (VN)",
                "Lamudi Pakistan Property (PK)",
                "Mercado Libre Property Chile (CL)",
                "Mercado Libre Property Colombia (CO)",
                "Mercado Libre Property Costa Rica (CR)",
                "Mercado Libre Property Peru (PE)",
                "Mercado Libre Property Uruguay (UY)",
                "Mercado Libre Property Venezuela (VE)",
                "BuyRentKenya Property (KE)",
                "DotProperty Thailand (TH)",
                "Dubizzle Bahrain Property (BH)",
                "Dubizzle Jordan Property (JO)",
                "Dubizzle Lebanon Property (LB)",
                "Dubizzle Oman Property (OM)",
                "Dubizzle Qatar Property (QA)",
                "OLX Bulgaria Property (BG)",
                "OLX Poland Property (PL)",
                "Property.co.zw Property (ZW)"
              ]
            },
            "default": [
              "property24"
            ]
          },
          "markets": {
            "title": "Markets",
            "type": "array",
            "description": "Usually just for-sale. Add to-rent if you also want rental listings.",
            "items": {
              "type": "string",
              "enum": [
                "for-sale",
                "to-rent"
              ]
            },
            "default": [
              "for-sale"
            ]
          },
          "areaQuery": {
            "title": "Area / City / Suburb",
            "type": "string",
            "description": "Optional text filter. Matches suburb, city, location, title, or address.",
            "default": ""
          },
          "propertyTypeQuery": {
            "title": "Property Type",
            "type": "string",
            "description": "Optional. Example: apartment, house, villa, land.",
            "default": ""
          },
          "minPrice": {
            "title": "Min Price",
            "minimum": 0,
            "type": "integer",
            "description": "Optional minimum price in the listing's own currency. Use 0 to ignore.",
            "default": 0
          },
          "maxPrice": {
            "title": "Max Price",
            "minimum": 0,
            "type": "integer",
            "description": "Optional maximum price in the listing's own currency. Use 0 to ignore.",
            "default": 0
          },
          "minBedrooms": {
            "title": "Min Bedrooms",
            "type": "number",
            "description": "Optional minimum bedrooms. Use 0 to ignore.",
            "default": 0
          },
          "maxBedrooms": {
            "title": "Max Bedrooms",
            "type": "number",
            "description": "Optional maximum bedrooms. Use 0 to ignore.",
            "default": 0
          },
          "minBathrooms": {
            "title": "Min Bathrooms",
            "type": "number",
            "description": "Optional minimum bathrooms. Use 0 to ignore.",
            "default": 0
          },
          "maxBathrooms": {
            "title": "Max Bathrooms",
            "type": "number",
            "description": "Optional maximum bathrooms. Use 0 to ignore.",
            "default": 0
          },
          "minSizeM2": {
            "title": "Min Size (m²)",
            "type": "number",
            "description": "Optional minimum size in square metres. Use 0 to ignore.",
            "default": 0
          },
          "maxSizeM2": {
            "title": "Max Size (m²)",
            "type": "number",
            "description": "Optional maximum size in square metres. Use 0 to ignore.",
            "default": 0
          },
          "pagesPerRun": {
            "title": "Pages Per Website",
            "minimum": 1,
            "type": "integer",
            "description": "How many pages to scrape per website in this run.",
            "default": 1
          },
          "maxListings": {
            "title": "Max Results",
            "minimum": 0,
            "type": "integer",
            "description": "Optional cap on output rows per website. Use 0 for no cap.",
            "default": 1
          },
          "comboConcurrency": {
            "title": "Website Concurrency",
            "minimum": 1,
            "type": "integer",
            "description": "How many website jobs to run in parallel. Higher is faster but heavier.",
            "default": 1
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}