{
  "openapi": "3.0.1",
  "info": {
    "title": "Realestate.com.kh Scraper - Cambodia Property Listings",
    "description": "Scrape realestate.com.kh, Cambodia's top property portal: USD price, rent, size, bedrooms, title type and GPS for Phnom Penh, Siem Reap and Sihanoukville.",
    "version": "1.0",
    "x-build-id": "MA7fxkfwo9iNwU3Kc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~realestate-kh-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-realestate-kh-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/sian.agency~realestate-kh-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-realestate-kh-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/sian.agency~realestate-kh-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-realestate-kh-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": {
          "operation": {
            "title": "🎯 Mode",
            "enum": [
              "search",
              "detail"
            ],
            "type": "string",
            "description": "Property Search reads realestate.com.kh results pages. Property Detail opens the listing addresses you paste in the Listing URLs field.",
            "default": "search"
          },
          "listingType": {
            "title": "🏷️ Rent or sale",
            "enum": [
              "rent",
              "sale"
            ],
            "type": "string",
            "description": "Which side of the market to read. Rentals are about three quarters of the site. For rentals every price is the monthly rent in US dollars.",
            "default": "rent"
          },
          "propertyType": {
            "title": "🏠 Property type",
            "enum": [
              "residential",
              "apartment",
              "serviced-apartment",
              "house",
              "villa",
              "shophouse",
              "flat",
              "land",
              "commercial",
              "offices",
              "warehouse",
              "building",
              "business"
            ],
            "type": "string",
            "description": "Which kind of property. Apartments and condos for rent is the largest section, with about 24,500 live listings nationwide.",
            "default": "apartment"
          },
          "location": {
            "title": "📍 Where",
            "enum": [
              "all-cambodia",
              "phnom-penh",
              "boeng-keng-kang",
              "bkk-1",
              "bkk-2",
              "bkk-3",
              "chamkarmon",
              "tonle-bassac",
              "toul-tum-poung-1",
              "daun-penh",
              "chakto-mukh",
              "phsar-chas",
              "phsar-kandal-i",
              "phsar-thmei-i",
              "wat-phnom",
              "7-makara",
              "toul-kork",
              "sen-sok",
              "chroy-changvar",
              "chbar-ampov",
              "meanchey",
              "russey-keo",
              "por-sen-chey",
              "dangkao",
              "prek-pnov",
              "siem-reap",
              "sihanoukville",
              "kampot",
              "kep",
              "kandal",
              "battambang"
            ],
            "type": "string",
            "description": "A province, a Phnom Penh district or a single commune such as BKK 1. Phnom Penh holds about 30,000 rentals. For another commune, open it on realestate.com.kh and paste the results address into Search page URLs.",
            "default": "phnom-penh"
          },
          "minPrice": {
            "title": "💵 Price from (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price in US dollars; for rentals, the monthly rent. Applied by the site and checked again on every row, so a listing outside the range or with no price shown is skipped and not charged."
          },
          "maxPrice": {
            "title": "💰 Price up to (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price in US dollars; for rentals, the monthly rent. Leave empty for no ceiling."
          },
          "minBedrooms": {
            "title": "🛏️ Bedrooms at least",
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "type": "string",
            "description": "Only properties with at least this many bedrooms. Listings that state no bedroom count, such as land or offices, are skipped when this is set."
          },
          "sortBy": {
            "title": "↕️ Order",
            "enum": [
              "newest",
              "relevance",
              "price-asc",
              "price-desc"
            ],
            "type": "string",
            "description": "The order the site returns results in. Newest first suits a daily or weekly feed of fresh listings. When a search is bigger than the site's 1,000-result limit it is read price band by price band: cheapest band first, or dearest first when you pick Most expensive first. Other orders then hold within each band.",
            "default": "newest"
          },
          "maxResults": {
            "title": "🔢 Properties to collect",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "How many properties to return across the whole run. The site shows at most 1,000 results for one search; past that the actor splits the search into price bands, so a large district can be collected in full. Property Detail ignores it and opens every listing you paste.",
            "default": 100
          },
          "includeDetails": {
            "title": "📄 Open each listing in full",
            "type": "boolean",
            "description": "Also open every listing page for the advertiser's description, title type, agency reference, completion year, features, amenities, views, the agent's name and phone and every photo. A private owner's contact details are never included. Billed as one Property Detail on top of the search row.",
            "default": false
          },
          "searchUrls": {
            "title": "🔗 Search page URLs",
            "type": "array",
            "description": "Paste realestate.com.kh results pages instead of using the fields above, for example https://www.realestate.com.kh/rent/toul-tum-poung-2/apartment/?bedrooms__gte=2 . Filters in the address are kept and the page number is ignored. Khmer, Chinese and other language versions of an address work too and return English fields. Ignored in Property Detail mode.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingUrls": {
            "title": "🔗 Listing URLs",
            "type": "array",
            "description": "Listing addresses for Property Detail, one per line, for example https://www.realestate.com.kh/rent/bkk-1/1-bed-1-bath-condo-262621/ . New development and borey listings work too.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}