{
  "openapi": "3.0.1",
  "info": {
    "title": "Property Finder Scraper — UAE & Gulf Property Listings",
    "description": "Scrape Property Finder listings for sale or rent in the UAE, Saudi Arabia, Qatar, Bahrain and Egypt: price, beds, size, location, coordinates, agent, broker, permit, photos.",
    "version": "0.1",
    "x-build-id": "i3hk7fU1Nzd93HhGH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~propertyfinder-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-propertyfinder-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/tortuga~propertyfinder-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-propertyfinder-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/tortuga~propertyfinder-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-propertyfinder-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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Property Finder search URLs from any of the five sites (propertyfinder.ae, .sa, .qa, .bh, .eg) with any filters set in the browser, e.g. https://www.propertyfinder.ae/en/rent/dubai/apartments-for-rent.html or https://www.propertyfinder.ae/en/search?c=1&l=50&bdr[]=2, or single listing URLs (.../en/plp/buy/...-155509193.html), which return that listing with full details. Leave empty if you use Locations below.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "country": {
            "title": "Country (for Locations)",
            "enum": [
              "ae",
              "sa",
              "qa",
              "bh",
              "eg"
            ],
            "type": "string",
            "description": "Which Property Finder site the Locations searches run on. Start URLs always use their own site.",
            "default": "ae"
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, communities, sub-communities or buildings, one per line, e.g. 'Dubai Marina', 'Jumeirah Village Circle', 'Al Reem Island, Abu Dhabi', 'Riyadh', 'The Pearl'. Each is looked up with the site's own location search and scraped as a separate search. Add ', City' to pick between places with the same name.",
            "items": {
              "type": "string"
            }
          },
          "purpose": {
            "title": "For sale or for rent",
            "enum": [
              "for-sale",
              "for-rent",
              "commercial-for-sale",
              "commercial-for-rent",
              "new-projects"
            ],
            "type": "string",
            "description": "Residential for sale or for rent, commercial for sale or for rent, or new projects (off-plan developments; UAE only, one record per project). Applies to Locations / whole-country searches; start URLs keep their own.",
            "default": "for-sale"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "apartment",
              "villa",
              "townhouse",
              "penthouse",
              "duplex",
              "compound",
              "hotel_apartment",
              "full_floor",
              "half_floor",
              "whole_building",
              "land",
              "bungalow",
              "chalet",
              "twin_house",
              "office",
              "retail",
              "shop",
              "warehouse",
              "showroom",
              "staff_accommodation"
            ],
            "type": "string",
            "description": "Only this property type. Leave empty for all. Offices, shops, retail, warehouses and showrooms are listed under the commercial purposes. Not every type exists in every country (e.g. townhouse in Saudi Arabia); the run stops with a message if it does not."
          },
          "bedrooms": {
            "title": "Bedrooms",
            "type": "array",
            "description": "Number of bedrooms; pick one or more. 'Studio' = 0. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "0",
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8"
              ],
              "enumTitles": [
                "Studio",
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8 or more"
              ]
            }
          },
          "bathrooms": {
            "title": "Bathrooms",
            "type": "array",
            "description": "Number of bathrooms; pick one or more. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8"
              ],
              "enumTitles": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8 or more"
              ]
            }
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in the local currency (AED, SAR, QAR, BHD, EGP). For rentals the site compares it with the rent per the rent frequency below (yearly by default in the UAE)."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in the local currency."
          },
          "minArea": {
            "title": "Min size",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum size in the site's unit: square feet on propertyfinder.ae, square metres on the other sites."
          },
          "maxArea": {
            "title": "Max size",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum size in the site's unit (sqft in the UAE, sqm elsewhere)."
          },
          "furnishing": {
            "title": "Furnishing",
            "enum": [
              "furnished",
              "unfurnished",
              "partly"
            ],
            "type": "string",
            "description": "Furnished, unfurnished or partly furnished only. Leave empty for any."
          },
          "completionStatus": {
            "title": "Completion status",
            "enum": [
              "off_plan",
              "ready"
            ],
            "type": "string",
            "description": "Off-plan or ready properties only (UAE and Egypt). Leave empty for any."
          },
          "rentFrequency": {
            "title": "Rent frequency",
            "enum": [
              "yearly",
              "monthly",
              "weekly",
              "daily"
            ],
            "type": "string",
            "description": "For rentals: only listings rented yearly, monthly, weekly or daily (also the period the price filter refers to). Leave empty for any."
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Only listings matching these keywords, as in the site's keyword filter (e.g. 'sea view', 'private pool')."
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "newest",
              "featured",
              "price_asc",
              "price_desc",
              "beds_asc",
              "beds_desc"
            ],
            "type": "string",
            "description": "Order of the results. Applies to Locations searches and to start URLs without a sort of their own. 'Newest first' is stable between pages and best for monitoring; 'Featured' is the site's default and repeats promoted listings across pages (repeats are skipped and not charged).",
            "default": "newest"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many listings in total (across all searches). Keeps cost predictable. Property Finder shows at most 50 pages per search (about 2,000-2,500 listings); larger searches are split into price bands automatically (see below).",
            "default": 100
          },
          "includeDetails": {
            "title": "Include licences and regulatory details",
            "type": "boolean",
            "description": "Also open each listing's page for what the search results do not show: the brokerage licence (ORN), the agent's licence (BRN), the advertising permit (DLD/Trakheesi or REGA permit number, validation link, issuing office), zone name, available-from date, the full regulatory block, all photos in full size and the full amenity list. One extra request per listing; charged as an extra 'detail' event (see pricing). Descriptions are included without this option.",
            "default": false
          },
          "splitLargeSearches": {
            "title": "Split searches over 2,000 results",
            "type": "boolean",
            "description": "Property Finder serves only 50 pages per search (later pages come from an older copy of the index). When a search has more than 2,000 results and Max items asks for more, cut it into price bands that each fit (one extra page request per cut) so you can get every listing. Results then come band by band, cheapest band first.",
            "default": true
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed items",
            "type": "boolean",
            "description": "Remember what earlier runs of this search returned and output only new listings or listings whose price changed. Use with a Schedule; unchanged items are not charged. With this on, Max items is the number of listings checked per run (e.g. the newest 200).",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this watch, so several schedules on the same search stay separate; defaults to a key derived from the search input"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify RESIDENTIAL proxy is the default: it answered every request in tests. Residential traffic is billed by Apify per GB: about 4 MB per 1,000 listings (about $0.03) plus about 150 KB per listing page when 'Include licences' is on (about $0.0012 each). Datacenter proxy (Apify Proxy without a group) also works and costs almost nothing in traffic, but Property Finder's CDN refuses about 45% of its requests, which are retried, so runs take about twice as long.",
            "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}