{
  "openapi": "3.0.1",
  "info": {
    "title": "Bina.az Real Estate Scraper: Listings, Agencies, New Builds",
    "description": "Scrape Bina.az real estate in Azerbaijan: sale, rent and daily rent listings with prices, areas, rooms, coordinates and photos, plus agencies and new-build complexes with unit prices. Export CSV, Excel, JSON, XML.",
    "version": "0.1",
    "x-build-id": "frzOIwqAkzXAdyL1r"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~bina-az-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-bina-az-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/recordsdata~bina-az-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-bina-az-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/recordsdata~bina-az-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-bina-az-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": "Optional bina.az pages to read: an ad (bina.az/items/6440600), an agency page (bina.az/agentlikler/ideal-emlak), a new-build complex page (bina.az/yasayis-kompleksleri/park-academy-living) or any search page such as bina.az/alqi-satqi/menziller/yeni-tikili/3-otaqli or bina.az/baki?price_from=100000. A search page brings its own filters, so the filters below are ignored for it. Leave empty to search with the filters below.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingIds": {
            "title": "Ad IDs",
            "type": "array",
            "description": "Optional list of ad ids (the number in the ad URL, for example 6440600) or full ad URLs. These ads are fetched directly with their full detail and the search filters are not applied to them. An id that is gone or expired returns one free error row.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
          },
          "recordTypes": {
            "title": "Record types",
            "type": "array",
            "description": "What to return. Listings: one row per ad (price, area, rooms, floor, place, seller type, legal flags, photos). Agencies: one row per real estate agency (address, schedule, coordinates, ad count). Residences: one row per new-build residential complex (developer, deadline, price range, building facts, facilities, offers). Residence units: one row per apartment type offered inside a complex (rooms, area, price, bathrooms). Every row counts toward Max Items; rows come in the order listed here.",
            "items": {
              "type": "string",
              "enum": [
                "listings",
                "agencies",
                "residences",
                "residence-units"
              ],
              "enumTitles": [
                "Listings (ads)",
                "Agencies",
                "New-build residential complexes",
                "Complex unit types (apartment layouts)"
              ]
            },
            "default": [
              "listings"
            ]
          },
          "fetchDetails": {
            "title": "Fetch full ad details",
            "type": "boolean",
            "description": "Open every ad for the full description, street address, coordinates, all photos, views, contact type (owner or agent) and the agency or developer behind it. Billed as the listing-detail event on top of the listing. Turn off for a cheaper list-only pass (no description, address, coordinates, agency name or photo gallery).",
            "default": true
          },
          "operation": {
            "title": "Operation",
            "enum": [
              "sale",
              "rent",
              "daily-rent",
              "all"
            ],
            "type": "string",
            "description": "Sale, monthly rent, daily rent, or all of them. Every row says which one it is in the operation field.",
            "default": "sale"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Only these property types. Leave empty for all seven. Apartments are split the way the site splits them: new-build and resale.",
            "items": {
              "type": "string",
              "enum": [
                "new-build-apartment",
                "resale-apartment",
                "house",
                "office",
                "garage",
                "land",
                "commercial"
              ],
              "enumTitles": [
                "Apartment, new build",
                "Apartment, resale",
                "House / garden house",
                "Office",
                "Garage",
                "Land",
                "Commercial property"
              ]
            },
            "default": []
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Only ads in these cities, for example Bakı, Sumqayıt, Gəncə or Xırdalan. Accents and capitals do not matter (Baki works). Add one city per line; each city is scanned in turn.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Districts, metro stations, settlements",
            "type": "array",
            "description": "Only ads in these places inside the chosen cities: districts (Nərimanov r.), metro stations (Gənclik m.) or settlements (Biləcəri q.). Write the name as on bina.az, its slug (baki/nesimi) or its numeric id. A name that exists twice matches both.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "rooms": {
            "title": "Number of rooms",
            "type": "array",
            "description": "Only ads with exactly these room counts (bina.az counts all rooms, living room included). Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8",
                "9",
                "10"
              ],
              "enumTitles": [
                "1 room",
                "2 rooms",
                "3 rooms",
                "4 rooms",
                "5 rooms",
                "6 rooms",
                "7 rooms",
                "8 rooms",
                "9 rooms",
                "10 rooms"
              ]
            },
            "default": []
          },
          "minPrice": {
            "title": "Minimum price (AZN)",
            "minimum": 0,
            "type": "integer",
            "description": "Only ads priced at least this much, in Azerbaijani manat. For rent it is the monthly (or daily) rent. 0 means no minimum.",
            "default": 0
          },
          "maxPrice": {
            "title": "Maximum price (AZN)",
            "minimum": 0,
            "type": "integer",
            "description": "Only ads priced at most this much, in Azerbaijani manat. 0 means no maximum.",
            "default": 0
          },
          "minArea": {
            "title": "Minimum area (m2)",
            "minimum": 0,
            "type": "integer",
            "description": "Only ads with at least this living or built area in square meters. For land plots the limit applies to the plot size, rounded to whole sot (1 sot = 100 m2). 0 means no minimum.",
            "default": 0
          },
          "maxArea": {
            "title": "Maximum area (m2)",
            "minimum": 0,
            "type": "integer",
            "description": "Only ads with at most this living or built area in square meters. For land plots the limit applies to the plot size, rounded to whole sot (1 sot = 100 m2). 0 means no maximum.",
            "default": 0
          },
          "minLandArea": {
            "title": "Minimum land area (sot)",
            "minimum": 0,
            "type": "integer",
            "description": "Only ads with at least this much land, in sot (1 sot = 100 m2). For houses it is the plot around the house, for land plots the plot itself. 0 means no minimum.",
            "default": 0
          },
          "maxLandArea": {
            "title": "Maximum land area (sot)",
            "minimum": 0,
            "type": "integer",
            "description": "Only ads with at most this much land, in sot (1 sot = 100 m2). For houses it is the plot around the house, for land plots the plot itself. 0 means no maximum.",
            "default": 0
          },
          "minFloor": {
            "title": "Minimum floor",
            "minimum": 0,
            "type": "integer",
            "description": "Only apartments on this floor or higher. 0 means no minimum.",
            "default": 0
          },
          "maxFloor": {
            "title": "Maximum floor",
            "minimum": 0,
            "type": "integer",
            "description": "Only apartments on this floor or lower. 0 means no maximum.",
            "default": 0
          },
          "floorPosition": {
            "title": "Floor position",
            "enum": [
              "any",
              "not-first",
              "not-last",
              "not-first-or-last",
              "first-only",
              "last-only"
            ],
            "type": "string",
            "description": "Keep or drop the ground and top floors of the building.",
            "default": "any"
          },
          "buildingType": {
            "title": "Building type",
            "enum": [
              "any",
              "apartment",
              "villa",
              "business-center"
            ],
            "type": "string",
            "description": "Apartment building, villa, or business center (offices). Any keeps all.",
            "default": "any"
          },
          "listingTier": {
            "title": "Listing tier",
            "enum": [
              "any",
              "featured",
              "premium"
            ],
            "type": "string",
            "description": "Keep only the ads the seller paid to promote: featured (highlighted) or premium (VIP, pinned to the top).",
            "default": "any"
          },
          "onlyTitleDeed": {
            "title": "Only with title deed (kupça)",
            "type": "boolean",
            "description": "Keep only ads that state a registered title deed (the site's kupça filter).",
            "default": false
          },
          "onlyMortgage": {
            "title": "Only mortgage-eligible",
            "type": "boolean",
            "description": "Keep only ads where the seller says a bank mortgage is possible.",
            "default": false
          },
          "onlyDeveloperFinancing": {
            "title": "Only with developer financing",
            "type": "boolean",
            "description": "Keep only ads that offer an internal loan or installment plan from the developer.",
            "default": false
          },
          "onlyRenovated": {
            "title": "Only renovated",
            "type": "boolean",
            "description": "Keep only ads marked as renovated (təmirli).",
            "default": false
          },
          "onlyNewBuildComplexes": {
            "title": "Only from new-build complexes",
            "type": "boolean",
            "description": "Keep only ads that belong to a registered new-build residential complex.",
            "default": false
          },
          "agencies": {
            "title": "Agencies",
            "type": "array",
            "description": "Only ads from these agencies, matched by name as on bina.az/agentlikler (part of the name is enough, accents and capitals do not matter; up to 5 agencies per name). With Record types set to Agencies, returns these agency pages instead.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "updatedSince": {
            "title": "Updated since",
            "type": "string",
            "description": "Only ads updated or renewed on or after this date, for example 2026-10-10 or 2026-10-10T08:00:00+04:00 (Baku time is UTC+4). Leave empty for no cutoff. With the newest-first sort the scan stops early once the ads are older.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "priceAsc",
              "priceDesc",
              "areaAsc",
              "areaDesc",
              "pricePerSotAsc",
              "pricePerSotDesc"
            ],
            "type": "string",
            "description": "Order of the ads inside every search. Newest first means last updated or renewed first.",
            "default": "newest"
          },
          "maxRunSeconds": {
            "title": "Max run time (seconds)",
            "minimum": 30,
            "maximum": 86400,
            "type": "integer",
            "description": "Stop collecting after this many seconds and return what was gathered, so a very wide search never runs unbounded.",
            "default": 1800
          },
          "onlyNew": {
            "title": "Only new rows (monitor mode)",
            "type": "boolean",
            "description": "Only new rows: skip every ad, agency, complex or unit type this same search already returned in an earlier run, so a scheduled run returns just the new ones and you are not charged for skipped rows. Max Items then means N new rows. Off by default.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Name of this monitor. Leave empty to derive it from your filters. Use a name to run two monitors with the same filters.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget previously seen rows",
            "type": "boolean",
            "description": "Clear the saved list for this monitor before the run, so everything counts as new again.",
            "default": false
          },
          "includeContactDetails": {
            "title": "Include business contact data",
            "type": "boolean",
            "description": "Keep business contact data that sellers wrote in public text: the developer website and e-mail of a new-build complex, and phone numbers or e-mails inside the description of ads from agencies and developers and inside agency descriptions. Private sellers' phones and e-mails are always removed. Off by default.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}