{
  "openapi": "3.0.1",
  "info": {
    "title": "PropertyFinder Dubai & Abu Dhabi Scraper - Sale & Rental",
    "description": "Extracts sale, rental, and commercial property listings from PropertyFinder.ae across Dubai and Abu Dhabi: price, beds, baths, size, location, agent contact and RERA permit. Supports zone selection or custom pasted search URLs.",
    "version": "0.1",
    "x-build-id": "J8koGwtTG2tcniw1u"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesolutions~propertyfinder-dubai-abudhabi-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesolutions-propertyfinder-dubai-abudhabi-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/scrapesolutions~propertyfinder-dubai-abudhabi-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesolutions-propertyfinder-dubai-abudhabi-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/scrapesolutions~propertyfinder-dubai-abudhabi-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesolutions-propertyfinder-dubai-abudhabi-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": {
          "dubaiCoverage": {
            "title": "Dubai coverage",
            "enum": [
              "All zones",
              "None",
              "Custom (select below)"
            ],
            "type": "string",
            "description": "All zones = scrape every Dubai area (default). None = skip Dubai entirely. Custom = pick specific areas below.",
            "default": "All zones"
          },
          "dubaiZones": {
            "title": "Dubai zones",
            "type": "array",
            "description": "Only used when Dubai coverage is set to Custom. Ignored if 'Custom search URLs' is filled in.",
            "items": {
              "type": "string",
              "enum": [
                "Jumeirah Village Circle",
                "Business Bay",
                "Downtown Dubai",
                "Dubai Marina",
                "Dubai Land Residence Complex",
                "Arjan",
                "Dubai Hills Estate",
                "Dubai Islands",
                "Dubai Creek Harbour (The Lagoons)",
                "Mohammed Bin Rashid City",
                "Palm Jumeirah",
                "Dubai South (Dubai World Central)",
                "Majan",
                "Jumeirah Lake Towers",
                "Al Furjan",
                "Jumeirah Village Triangle",
                "Al Jaddaf",
                "Dubai Harbour",
                "Dubai Sports City",
                "Dubai Production City (IMPZ)",
                "Motor City",
                "Maritime City",
                "Meydan",
                "Dubai Science Park",
                "Town Square",
                "Bukadra",
                "Jumeirah Beach Residence",
                "Al Satwa",
                "Al Warsan",
                "City Walk",
                "Dubai Investment Park (DIP)",
                "Damac Hills",
                "Dubai Land",
                "Dubai Silicon Oasis",
                "Mina Rashid",
                "Downtown Jebel Ali",
                "Wasl Gate",
                "Nad Al Sheba",
                "Dubai Studio City",
                "DIFC",
                "Umm Suqeim",
                "Zabeel",
                "Ras Al Khor",
                "International City",
                "Damac Lagoons",
                "Liwan",
                "Jumeirah",
                "Expo City",
                "City of Arabia",
                "Damac Hills 2",
                "Bur Dubai",
                "Dubai Design District",
                "Al Wasl",
                "Jebel Ali",
                "Discovery Gardens",
                "Dubai Industrial City",
                "Sheikh Zayed Road",
                "Bluewaters",
                "Falcon City of Wonders",
                "Remraam",
                "The Views",
                "Jumeirah Islands",
                "Greens",
                "Dubai Media City",
                "Dubai Internet City",
                "Al Sufouh",
                "Barsha Heights (Tecom)",
                "Palm Jebel Ali",
                "Culture Village",
                "Living Legends",
                "Mirdif",
                "Al Barari",
                "Rukan",
                "Jumeirah Golf Estates",
                "Al Barsha",
                "Nadd Al Hammar",
                "Al Safa",
                "The Hills",
                "Dubai Festival City",
                "Al Muhaisnah",
                "The World Islands",
                "Al Quoz",
                "World Trade Center",
                "Mudon",
                "Dubai Waterfront",
                "Deira",
                "Sobha Sanctuary",
                "Al Qusais",
                "The Valley"
              ]
            },
            "default": [
              "Jumeirah Village Circle",
              "Business Bay",
              "Downtown Dubai",
              "Dubai Marina",
              "Dubai Land Residence Complex",
              "Arjan",
              "Dubai Hills Estate",
              "Dubai Islands",
              "Dubai Creek Harbour (The Lagoons)",
              "Mohammed Bin Rashid City",
              "Palm Jumeirah",
              "Dubai South (Dubai World Central)",
              "Majan",
              "Jumeirah Lake Towers",
              "Al Furjan",
              "Jumeirah Village Triangle",
              "Al Jaddaf",
              "Dubai Harbour",
              "Dubai Sports City",
              "Dubai Production City (IMPZ)",
              "Motor City",
              "Maritime City",
              "Meydan",
              "Dubai Science Park",
              "Town Square",
              "Bukadra",
              "Jumeirah Beach Residence",
              "Al Satwa",
              "Al Warsan",
              "City Walk",
              "Dubai Investment Park (DIP)",
              "Damac Hills",
              "Dubai Land",
              "Dubai Silicon Oasis",
              "Mina Rashid",
              "Downtown Jebel Ali",
              "Wasl Gate",
              "Nad Al Sheba",
              "Dubai Studio City",
              "DIFC",
              "Umm Suqeim",
              "Zabeel",
              "Ras Al Khor",
              "International City",
              "Damac Lagoons",
              "Liwan",
              "Jumeirah",
              "Expo City",
              "City of Arabia",
              "Damac Hills 2",
              "Bur Dubai",
              "Dubai Design District",
              "Al Wasl",
              "Jebel Ali",
              "Discovery Gardens",
              "Dubai Industrial City",
              "Sheikh Zayed Road",
              "Bluewaters",
              "Falcon City of Wonders",
              "Remraam",
              "The Views",
              "Jumeirah Islands",
              "Greens",
              "Dubai Media City",
              "Dubai Internet City",
              "Al Sufouh",
              "Barsha Heights (Tecom)",
              "Palm Jebel Ali",
              "Culture Village",
              "Living Legends",
              "Mirdif",
              "Al Barari",
              "Rukan",
              "Jumeirah Golf Estates",
              "Al Barsha",
              "Nadd Al Hammar",
              "Al Safa",
              "The Hills",
              "Dubai Festival City",
              "Al Muhaisnah",
              "The World Islands",
              "Al Quoz",
              "World Trade Center",
              "Mudon",
              "Dubai Waterfront",
              "Deira",
              "Sobha Sanctuary",
              "Al Qusais",
              "The Valley"
            ]
          },
          "abuDhabiCoverage": {
            "title": "Abu Dhabi coverage",
            "enum": [
              "All zones",
              "None",
              "Custom (select below)"
            ],
            "type": "string",
            "description": "All zones = scrape every Abu Dhabi area (default). None = skip Abu Dhabi entirely. Custom = pick specific areas below.",
            "default": "All zones"
          },
          "abuDhabiZones": {
            "title": "Abu Dhabi zones",
            "type": "array",
            "description": "Only used when Abu Dhabi coverage is set to Custom. Ignored if 'Custom search URLs' is filled in.",
            "items": {
              "type": "string",
              "enum": [
                "Al Reem Island",
                "Yas Island",
                "Saadiyat Island",
                "Al Raha Beach",
                "Masdar City",
                "Al Shamkha",
                "Fahid Island",
                "Al Maryah Island",
                "Khalifa City",
                "Al Hudayriat Island",
                "Al Ghadeer",
                "Al Reef",
                "The Marina",
                "Ghantoot",
                "Al Jubail Island",
                "Baniyas",
                "Danet Abu Dhabi",
                "Rabdan",
                "Al Salam Street"
              ]
            }
          },
          "listingTypes": {
            "title": "Listing types",
            "type": "array",
            "description": "Whether to scrape sale listings, rental listings, or both.",
            "items": {
              "type": "string",
              "enum": [
                "sale",
                "rent"
              ]
            },
            "default": [
              "sale",
              "rent"
            ]
          },
          "usageTypes": {
            "title": "Usage types",
            "type": "array",
            "description": "Residential (apartments) and/or Commercial (offices) listings. Commercial is a separate PropertyFinder category, not a filter on residential -- it covers office space specifically, not the full commercial taxonomy (retail, warehouses, etc).",
            "items": {
              "type": "string",
              "enum": [
                "Residential",
                "Commercial"
              ]
            },
            "default": [
              "Residential"
            ]
          },
          "bedrooms": {
            "title": "Bedrooms",
            "enum": [
              "Studio",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7+"
            ],
            "type": "string",
            "description": "Optional. Filter to a specific bedroom count. Leave empty to scrape all bedroom counts (no filter applied). Ignored if 'Custom search URLs' is filled in."
          },
          "minPrice": {
            "title": "Min price (AED)",
            "enum": [
              "15000",
              "25000",
              "40000",
              "60000",
              "80000",
              "100000",
              "130000",
              "160000",
              "200000",
              "250000",
              "300000",
              "400000",
              "500000",
              "750000",
              "1000000",
              "1500000",
              "2000000",
              "3000000",
              "5000000",
              "7500000",
              "10000000",
              "15000000",
              "20000000",
              "30000000",
              "50000000"
            ],
            "type": "string",
            "description": "Optional. Minimum price in AED. Leave empty for no minimum. Ignored if 'Custom search URLs' is filled in."
          },
          "maxPrice": {
            "title": "Max price (AED)",
            "enum": [
              "15000",
              "25000",
              "40000",
              "60000",
              "80000",
              "100000",
              "130000",
              "160000",
              "200000",
              "250000",
              "300000",
              "400000",
              "500000",
              "750000",
              "1000000",
              "1500000",
              "2000000",
              "3000000",
              "5000000",
              "7500000",
              "10000000",
              "15000000",
              "20000000",
              "30000000",
              "50000000"
            ],
            "type": "string",
            "description": "Optional. Maximum price in AED. Leave empty for no maximum. Ignored if 'Custom search URLs' is filled in."
          },
          "minArea": {
            "title": "Min area (sqft)",
            "enum": [
              "500",
              "600",
              "700",
              "800",
              "900",
              "1000",
              "1100",
              "1200",
              "1300",
              "1400",
              "1500",
              "1600",
              "1800",
              "2000",
              "2200",
              "2400",
              "2600",
              "2800",
              "3000",
              "3200",
              "3400",
              "3600",
              "3800",
              "4200",
              "4600",
              "5000",
              "5400",
              "5800",
              "6200",
              "6600",
              "7000",
              "7400",
              "7800",
              "8200",
              "9000"
            ],
            "type": "string",
            "description": "Optional. Minimum area in square feet. Leave empty for no minimum. Ignored if 'Custom search URLs' is filled in."
          },
          "maxArea": {
            "title": "Max area (sqft)",
            "enum": [
              "500",
              "600",
              "700",
              "800",
              "900",
              "1000",
              "1100",
              "1200",
              "1300",
              "1400",
              "1500",
              "1600",
              "1800",
              "2000",
              "2200",
              "2400",
              "2600",
              "2800",
              "3000",
              "3200",
              "3400",
              "3600",
              "3800",
              "4200",
              "4600",
              "5000",
              "5400",
              "5800",
              "6200",
              "6600",
              "7000",
              "7400",
              "7800",
              "8200",
              "9000"
            ],
            "type": "string",
            "description": "Optional. Maximum area in square feet. Leave empty for no maximum. Ignored if 'Custom search URLs' is filled in."
          },
          "startUrls": {
            "title": "Custom search URLs (advanced)",
            "type": "array",
            "description": "Optional. Paste PropertyFinder.ae search result URLs (with your own filters already applied) here. If provided, these are scraped instead of Zones/Listing types above.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "Newest",
              "Featured",
              "Price (low)",
              "Price (high)",
              "Beds (least)",
              "Beds (most)"
            ],
            "type": "string",
            "description": "Order in which listings are extracted. 'Featured' is PropertyFinder's own default, which favors paid/boosted listings -- if maxItems cuts the run short, you'll mostly get whichever agencies paid for visibility. 'Newest' gives a more representative sample of the actual market.",
            "default": "Newest"
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of listings to extract in this run. Controls run cost and is the hard cap for Pay-Per-Event charging. Set to 0 for unlimited.",
            "default": 200
          },
          "useApifyProxy": {
            "title": "Use Apify Proxy",
            "type": "boolean",
            "description": "Route requests through Apify residential proxies (recommended, required to avoid IP blocks in production).",
            "default": true
          },
          "scrapeDetails": {
            "title": "Scrape contact & RERA details",
            "type": "boolean",
            "description": "Visit each listing's detail page to extract agent name/email, agency name/phone/license, direct phone, WhatsApp and RERA permit number. Slower and more expensive (one extra page load per listing) since this data isn't in the search results.",
            "default": false
          },
          "calculateRentalYield": {
            "title": "Calculate rental yield & price position",
            "type": "boolean",
            "description": "Cross-matches sale listings against comparable rent listings (same building, bedrooms, similar size) scraped in the same run to estimate gross rental yield and how each listing's price per sqft compares to its zone average. Forces both Sale and Rent to be scraped regardless of the Listing types filter. Only sale listings that found a real rent comparable are returned -- typically a minority (around 1 in 4) of what was scraped, not the full set. Not supported together with Custom search URLs.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}