{
  "openapi": "3.0.1",
  "info": {
    "title": "Bayut Saudi Arabia Scraper with Contacts & Features",
    "description": "Extract Bayut Saudi Arabia property listings with prices, locations, specs, descriptions, amenities, media, coordinates, and available agent or agency contacts. Get pipeline-ready records for market research, comps, inventory monitoring, CRM enrichment, and AI workflows.",
    "version": "0.1",
    "x-build-id": "ruTlfks04H5PFaSDE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fatihtahta~bayut-saudi-arabia-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fatihtahta-bayut-saudi-arabia-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/fatihtahta~bayut-saudi-arabia-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fatihtahta-bayut-saudi-arabia-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/fatihtahta~bayut-saudi-arabia-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fatihtahta-bayut-saudi-arabia-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": {
          "url": {
            "title": "Add Bayut Property Listing URLs",
            "type": "array",
            "description": "Add one public Bayut property listing URL per line, such as https://www.bayut.sa/en/property/details-88016665.html. Only property listing URLs are supported. Leave this empty to use the structured search fields below.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Optionally Focus on a Saudi Location",
            "type": "string",
            "description": "Leave empty to search across Saudi Arabia, or enter a location recognized by Bayut such as Riyadh, Al Khobar, Al Hamra, or Al Malqa. Focused locations are useful for repeatable market monitoring and comparisons."
          },
          "deal_type": {
            "title": "Choose Listings for Purchase or Rent",
            "enum": [
              "buy",
              "rent"
            ],
            "type": "string",
            "description": "Choose Buy for properties offered for sale or Rent for rental listings. Buy is the default and also enables the ready versus off-plan property-status filter below.",
            "default": "buy"
          },
          "property_type": {
            "title": "Choose a Residential or Commercial Property Type",
            "enum": [
              "all_residential",
              "all_commercial",
              "residential_apartment",
              "residential_villa",
              "residential_floor",
              "residential_building",
              "residential_land",
              "residential_rest_house",
              "residential_chalet",
              "residential_room",
              "residential_townhouse",
              "residential_duplex",
              "commercial_building",
              "commercial_warehouse",
              "commercial_land",
              "commercial_industrial_land",
              "commercial_farm",
              "commercial_agriculture_plot",
              "commercial_complex",
              "commercial_hotel",
              "commercial_workshop",
              "commercial_factory",
              "commercial_school",
              "commercial_health_center",
              "commercial_gas_station",
              "commercial_showroom"
            ],
            "type": "string",
            "description": "Select the property category to include in the location search. The default includes all residential listings; choose a specific residential type for a narrower market slice or a commercial type for business-property research.",
            "default": "all_residential"
          },
          "residential_residence_type": {
            "title": "Choose Family or Singles Accommodation",
            "enum": [
              "family",
              "singles"
            ],
            "type": "string",
            "description": "Optionally narrow residential results to family or singles accommodation. This filter does not apply to commercial property types and is omitted automatically for commercial searches."
          },
          "bedroom_count": {
            "title": "Select One or More Bedroom Counts",
            "uniqueItems": true,
            "type": "array",
            "description": "Choose every bedroom count that should be included, such as Studio, 2, 3, or 8 or more. Multiple selections broaden the residential search across those counts; this filter is omitted automatically for commercial property types.",
            "items": {
              "type": "string",
              "enum": [
                "studio",
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8+"
              ],
              "enumTitles": [
                "Studio",
                "1 bedroom",
                "2 bedrooms",
                "3 bedrooms",
                "4 bedrooms",
                "5 bedrooms",
                "6 bedrooms",
                "7 bedrooms",
                "8 or more bedrooms"
              ]
            },
            "default": []
          },
          "bathroom_count": {
            "title": "Select One or More Bathroom Counts",
            "uniqueItems": true,
            "type": "array",
            "description": "Choose every bathroom count that should be included. Multiple selections broaden the residential search across those counts; this filter is omitted automatically for commercial property types.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6+"
              ],
              "enumTitles": [
                "1 bathroom",
                "2 bathrooms",
                "3 bathrooms",
                "4 bathrooms",
                "5 bathrooms",
                "6 or more bathrooms"
              ]
            },
            "default": []
          },
          "min_price": {
            "title": "Set the Minimum Asking Price or Rent (SAR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings priced at or above this amount in Saudi riyals. Pair it with a maximum price to create a comparable market band for monitoring, reporting, or downstream analysis."
          },
          "max_price": {
            "title": "Set the Maximum Asking Price or Rent (SAR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings priced at or below this amount in Saudi riyals. It must be greater than or equal to the minimum price when both values are provided."
          },
          "min_area": {
            "title": "Set the Minimum Property Area (Square Metres)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings with a reported area at or above this number of square metres. Use an area range to compare properties of a similar size within the selected market."
          },
          "max_area": {
            "title": "Set the Maximum Property Area (Square Metres)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings with a reported area at or below this number of square metres. It must be greater than or equal to the minimum area when both values are provided."
          },
          "keyword": {
            "title": "Search Listing Text for a Keyword or Phrase",
            "type": "string",
            "description": "Enter a focused phrase such as sea view, furnished, corner villa, or near metro. Keywords narrow the same location search and are useful for thematic monitoring, lead qualification, and AI-assisted listing review."
          },
          "agent_agency_name": {
            "title": "Limit Results to a Bayut Agent or Agency",
            "type": "string",
            "description": "Enter the public Bayut name of an agent or agency to collect listings associated with that identity. Use the clearest available name for repeatable portfolio monitoring or CRM enrichment; an unmatched name produces an empty result rather than broadening the search."
          },
          "multimedia": {
            "title": "Require Specific Listing Media",
            "uniqueItems": true,
            "type": "array",
            "description": "Select one or more media requirements. A listing must contain every selected type, so combining Photos, Video, and 360 Tour creates a narrower dataset suited to visual review or media-quality monitoring.",
            "items": {
              "type": "string",
              "enum": [
                "photos",
                "video",
                "360_tour"
              ],
              "enumTitles": [
                "Photos available",
                "Video available",
                "360 tour available"
              ]
            },
            "default": []
          },
          "furnishment": {
            "title": "Choose the Furnishing Status",
            "enum": [
              "furnished",
              "unfurnished"
            ],
            "type": "string",
            "description": "Optionally include only furnished or unfurnished properties. Leave empty when furnishing status should not narrow the location search."
          },
          "sort_by": {
            "title": "Choose How Matching Listings Are Ordered",
            "enum": [
              "default",
              "newest",
              "price_low_to_high",
              "price_high_to_low",
              "verified"
            ],
            "type": "string",
            "description": "Select the order in which matching listings are collected. Use Newest for monitoring recent inventory, a price order for bounded comparisons, or Verified First when verification status is the primary review signal.",
            "default": "default"
          },
          "property_status": {
            "title": "Choose Ready or Off-Plan Properties",
            "enum": [
              "ready",
              "off_plan"
            ],
            "type": "string",
            "description": "Optionally narrow Buy results to completed, ready properties or off-plan properties under development. This setting only applies to Buy and is omitted automatically when Rent is selected."
          },
          "enrich_data": {
            "title": "Add Richer Public Details to Every Saved Listing",
            "type": "boolean",
            "description": "Keep enabled for CRM enrichment, property review, regulatory reporting, search indexing, or ETL workflows that benefit from listing-detail context. Turn it off for faster validation, lightweight monitoring, or pipelines that only need standard search-result fields. A record is marked enriched only when useful additional detail was actually collected.",
            "default": true
          },
          "enrich_contact": {
            "title": "Add Public Contact Details to Every Saved Listing",
            "type": "boolean",
            "description": "Keep enabled to request available public phone, WhatsApp, and proxy contact details for each property. Turn it off when you only need listing data. A record is marked and charged as contact-enriched only when the contact request returns usable details.",
            "default": true
          },
          "limit": {
            "title": "Set the Maximum Number of Listings to Save",
            "minimum": 1,
            "type": "integer",
            "description": "Choose the maximum number of property records to save for this run. Start with a small value such as 5 or 10 when validating filters and output, then increase it for production collection. Leave empty to continue through the available matching listings without a user-defined record cap."
          },
          "mcpConnectors": {
            "title": "MCP Connectors for Run-Summary Delivery",
            "uniqueItems": true,
            "type": "array",
            "description": "Choose user-authorized connectors for optional post-run delivery after the listing dataset, run summary, report, and map are saved. The full property dataset is not sent through MCP. Leave empty to keep output only in Apify storage.",
            "default": []
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}