{
  "openapi": "3.0.1",
  "info": {
    "title": "Unegui Property Scraper - Mongolia Real Estate Listings",
    "description": "Scrape Unegui.mn property adverts across Mongolia: price in tugrik, rooms, floor area, floor, district and khoroo, GPS, photos, seller and view counts. Apartments, houses, land and commercial space, for sale and to rent. Export to JSON, CSV or Excel.",
    "version": "1.0",
    "x-build-id": "lu3MHSCKzU0F4a6sQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~unegui-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-unegui-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~unegui-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-unegui-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~unegui-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-unegui-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": "⚙️ What to do",
            "enum": [
              "search",
              "detail"
            ],
            "type": "string",
            "description": "🎯 **ONE OPERATION PER RUN.** Property Search walks one Unegui property category and returns one row per advert, 60 adverts per page. Property Detail opens the advert addresses you paste in \"Unegui advert addresses\" and returns the full record for each.\n\n💡 **TIP:** want full records straight from a search? Leave this on Property Search and turn on \"Open each advert for the full record\".",
            "default": "search"
          },
          "dealType": {
            "title": "🤝 For sale or to rent",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "🤝 **SALE OR RENT.** Unegui keeps sale and rental adverts in separate sections, so a run reads one side.\n\n💡 **TIP:** for rental yield, run the same category and room count once on each side and join the two datasets by district.",
            "default": "sale"
          },
          "propertyCategory": {
            "title": "🏢 Property category",
            "enum": [
              "all",
              "apartment",
              "house",
              "land",
              "office",
              "commercial",
              "industrial",
              "country-house",
              "garage",
              "basement",
              "dormitory",
              "ger",
              "daily-rent",
              "meeting-room"
            ],
            "type": "string",
            "description": "🏢 **CATEGORY.** Unegui's own property categories. Apartments are the biggest market, with about 15,950 for sale.\n\n⚠️ Some categories exist on one side only: gers are for sale only, daily rentals and meeting rooms are to rent only. Pick one on the wrong side and the run stops with a message saying so. No adverts are charged.",
            "default": "apartment"
          },
          "rooms": {
            "title": "🛏️ Rooms (apartments)",
            "enum": [
              "any",
              "1",
              "2",
              "3",
              "4",
              "5",
              "shared"
            ],
            "type": "string",
            "description": "🛏️ **APARTMENTS ONLY.** Unegui splits apartments by room count. Pick one to read just that list. Leave it on any number of rooms for other categories; a room count there is refused and no adverts are charged.\n\n💡 **TIP:** each room count is a separate list on Unegui, so splitting by rooms gets you past the 5,940-advert limit of a single list.\n\nA room in a shared flat is listed to rent only.",
            "default": "any"
          },
          "district": {
            "title": "📍 District or aimag",
            "enum": [
              "any",
              "ulaanbaatar",
              "khan-uul",
              "bayanzurkh",
              "sukhbaatar",
              "bayangol",
              "songinokhairkhan",
              "chingeltei",
              "nalaikh",
              "baganuur",
              "bagakhangai",
              "tuv",
              "darkhan-uul",
              "orkhon",
              "selenge",
              "umnugovi",
              "khuvsgul",
              "dornogovi",
              "bulgan",
              "khentii",
              "uvurkhangai",
              "sukhbaatar-aimag"
            ],
            "type": "string",
            "description": "📍 **LOCATION FILTER.** Keeps only adverts whose own location line names this district or aimag. Adverts located elsewhere are skipped and not charged. Also applies to pasted category addresses.\n\n💡 **TIP:** the run reads through the category to find matches, so a small district can take many pages to fill your maximum. Khan-Uul and Bayanzurkh fill fastest.",
            "default": "any"
          },
          "keyword": {
            "title": "🔎 Keyword",
            "type": "string",
            "description": "🔎 **TEXT SEARCH (optional).** Unegui's own search inside the category. Try a building or complex name (Зайсан, River Garden) or a word such as шинэ (new). Leave it empty to read the whole category.\n\n💡 **TIP:** a keyword is another way to split a big category into lists under 5,940 adverts.",
            "default": ""
          },
          "sortBy": {
            "title": "↕️ Sort order",
            "enum": [
              "newest",
              "cheapest",
              "expensive"
            ],
            "type": "string",
            "description": "↕️ **ORDER.** The order Unegui lists adverts in. Newest first suits a daily monitor. The price orders give a quick look at the bottom or the top of a market.",
            "default": "newest"
          },
          "maxResults": {
            "title": "🔢 Maximum adverts",
            "minimum": 1,
            "maximum": 5940,
            "type": "integer",
            "description": "🔢 **HOW MANY.** The run stops after this many adverts. Unegui serves 60 per page and shows at most 99 pages of any list, so one list gives up to 5,940 adverts.\n\n💎 Paid Apify plans get the full amount you set. Free plan runs return up to 25 rows, enough to check the data before you scale up.",
            "default": 120
          },
          "includeDetails": {
            "title": "📄 Open each advert for the full record",
            "type": "boolean",
            "description": "📄 **FULL RECORDS (optional).** Opens every advert the search returns and adds the seller's description, GPS, floor area, floor, building height, year built, balcony, garage, windows, payment terms, the full attribute table and the view counters to its row.\n\n💰 Each opened advert is charged as a Property Detail on top of the listing. Leave it off for a cheaper sweep of prices and locations.",
            "default": false
          },
          "searchUrls": {
            "title": "🔗 Unegui category addresses",
            "type": "array",
            "description": "🔗 **PASTE CATEGORY PAGES (optional, Property Search).** Set up a property category on unegui.mn, then paste the address from your browser, for example https://www.unegui.mn/l-hdlh/l-hdlh-zarna/oron-suuts-zarna/2-r/\n\nCategory, rooms, keyword and sort then come from the address and the same settings above are ignored. District, maximum and full records still apply. Only property addresses are accepted; anything else is skipped with the reason.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingUrls": {
            "title": "🏷️ Unegui advert addresses",
            "type": "array",
            "description": "🏷️ **FOR PROPERTY DETAIL.** The adverts to open, as whole Unegui addresses, for example https://www.unegui.mn/adv/10310151_11t-khonogiin-bair-iag-odoo-belen-baina/\n\n⚠️ The advert number alone is not enough. Copy the full address from your browser.\n\n📂 Use Bulk edit to paste many at once, or upload a .txt file. Duplicates are removed before the run starts, so you never pay twice for one advert.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}