{
  "openapi": "3.0.1",
  "info": {
    "title": "BAYUT [$0.89💰] | Search & Detail(s) & Agent(s) & Company(s)",
    "description": "💰 $0.89 per 1,000 listings, get comprehensive Bayut property data including pricing, specs (rooms, area, furnishing), location details, agent/agency info, verification status, high-res photos, and multilingual descriptions. Ideal for market analysis, lead generation, and property research.",
    "version": "0.0",
    "x-build-id": "Vwi2CfaI6nwiDXyeR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~apify-bayut-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-apify-bayut-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/memo23~apify-bayut-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-apify-bayut-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/memo23~apify-bayut-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-apify-bayut-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": {
          "instantDatabase": {
            "title": "Use Instant Database mode",
            "type": "boolean",
            "description": "Serve agents from the database instead of live-scraping. Auto-enabled if you set Agency name below.",
            "default": false
          },
          "dbAgencyName": {
            "title": "Agency name contains",
            "type": "string",
            "description": "e.g. Zero Commission Real Estate. Optional. Filters Instant Database results to agents whose agency name contains this text (case-insensitive substring match); setting it auto-enables Instant Database mode."
          },
          "dbHasEmail": {
            "title": "Only agents with an email",
            "type": "boolean",
            "description": "About 1 in 10 agents in the database has a real email address on file — turn this on to narrow to just those.",
            "default": false
          },
          "dbHasPhone": {
            "title": "Only agents with a phone",
            "type": "boolean",
            "description": "Virtually every agent in the database has a phone number.",
            "default": false
          },
          "dbHasWhatsapp": {
            "title": "Only agents with WhatsApp",
            "type": "boolean",
            "description": "About 1 in 10 agents in the database has a WhatsApp number on file — turn this on to narrow to just those.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum number of items",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of results to return. On search URLs the crawl stops once this many items have been collected (it no longer keeps paginating). Free accounts are capped at 50; paying accounts honor this value, with a minimum of 10. Leave blank to scrape up to your run's cost limit."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Bayut URLs from any market — bayut.com (UAE), bayut.sa (Saudi Arabia), bayut.jo (Jordan), bayut.qa (Qatar), bayut.om (Oman); Arabic and English URLs both work. Supported: search URLs (`https://www.bayut.com/for-sale/apartments/dubai/`, `https://www.bayut.sa/en/for-sale/apartments/riyadh/`, `https://www.bayut.jo/en/for-sale/apartments/amman/`, Arabic `https://www.bayut.sa/للبيع/شقق/الرياض/`), listing detail pages (`/property/details-…html`), broker searches/profiles (`/brokers/…`) and company pages (`/companies/…`).",
            "items": {
              "type": "string"
            }
          },
          "fullDetails": {
            "title": "Scrape full listing details (description, full media, permit number)",
            "type": "boolean",
            "description": "When OFF (default), listings are returned straight from Bayut's search index — fast and reliable, with ~90 fields per listing including price, location, agency, contact phone numbers, amenities, availability and photo URLs. Turn ON to additionally fetch each listing's full detail page (adds the description text, full photo/video/floor-plan media, and permit number). Full-detail mode is slower and depends on Bayut's app authentication.",
            "default": false
          },
          "enrichEmails": {
            "title": "Add the agent's email to each listing (extra cost)",
            "type": "boolean",
            "description": "When ON, each listing row gets the assigned agent's real email address in an `agentEmail` field (plus the agent's direct phone/cell/WhatsApp from their profile). Bayut only exposes agent emails behind an authenticated profile lookup, so this makes one extra request per unique agent — results are cached, so an agent with 50 listings is fetched only once. Billed per agent email retrieved. Leave OFF for the fastest, cheapest run.",
            "default": false
          },
          "monitoringMode": {
            "title": "Run in monitoring mode where only newly listings compared to previous runs will be scraped",
            "type": "boolean",
            "description": "When enabled, listings already delivered to you on previous runs are skipped, so each run returns only new listings; the actor keeps a private per-user record of delivered listing IDs. (Price-change re-scraping is a separate toggle, enablePriceMonitoring.) The first run builds the baseline.",
            "default": false
          },
          "enablePriceMonitoring": {
            "title": "Enable price monitoring",
            "type": "boolean",
            "description": "If checked, it will only scrape listings if the price has changed compared to the previous run. Also monitoring mode must be enabled as we need to compare the price of the listings.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "type": "integer",
            "description": "Maximum number of pages that can be processed at the same time.",
            "default": 10
          },
          "minConcurrency": {
            "title": "Min Concurrency",
            "type": "integer",
            "description": "Minimum number of pages that will be processed at the same time.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "maximum": 10,
            "type": "integer",
            "description": "Number of times the crawler will retry a failed request before giving up.",
            "default": 10
          },
          "proxy": {
            "title": "Proxy configuration (optional override)",
            "type": "object",
            "description": "Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}