{
  "openapi": "3.0.1",
  "info": {
    "title": "OLX.ba Property Scraper - Bosnia Real Estate Listings",
    "description": "Export olx.ba (PIK.ba) property adverts across Bosnia and Herzegovina: price in KM and EUR, m², rooms, floor, heating, address, GPS, seller type and photos.",
    "version": "1.0",
    "x-build-id": "h6Ci11cguStfoDBdG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~olx-ba-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-olx-ba-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~olx-ba-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-olx-ba-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~olx-ba-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-olx-ba-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 do you want to scrape?",
            "enum": [
              "search"
            ],
            "type": "string",
            "description": "One operation: Property Listing. It reads olx.ba's property search, 40 adverts per page, and opens each advert for its full details: area, rooms, floor, heating, condition, address, land-registry status, amenities and the description.",
            "default": "search"
          },
          "propertyType": {
            "title": "🏡 Property type",
            "enum": [
              "all",
              "apartments",
              "houses",
              "land",
              "commercial",
              "short-term",
              "holiday-homes",
              "garages",
              "warehouses",
              "prefab",
              "rooms",
              "other"
            ],
            "type": "string",
            "description": "The olx.ba property section to read. Each one is the site's own category, so the counts match what a visitor sees. Short-term apartments are priced per night.",
            "default": "apartments"
          },
          "listingType": {
            "title": "🏷️ For sale or for rent",
            "enum": [
              "sell",
              "rent",
              "any"
            ],
            "type": "string",
            "description": "Which side of the market to read. Rent prices are monthly. Short-term apartments are always per-night lets, so this setting is ignored for them and the log says so.",
            "default": "sell"
          },
          "region": {
            "title": "🗺️ Canton or region",
            "enum": [
              "all",
              "kanton-sarajevo",
              "unsko-sanski",
              "posavski",
              "tuzlanski",
              "zenicko-dobojski",
              "bosansko-podrinjski",
              "srednjobosanski",
              "hercegovacko-neretvanski",
              "zapadnohercegovacki",
              "kanton-10",
              "banja-luka",
              "bijeljina",
              "doboj",
              "istocno-sarajevo",
              "prijedor",
              "trebinje",
              "brcko"
            ],
            "type": "string",
            "description": "The ten Federation cantons, the six Republika Srpska regions and Brčko District, as olx.ba groups them. Leave on All of Bosnia and Herzegovina to search the whole country.",
            "default": "kanton-sarajevo"
          },
          "cities": {
            "title": "🏙️ Towns",
            "type": "array",
            "description": "Optional. Town or municipality names as olx.ba lists them, for example Mostar, Banja Luka, Tuzla or Ilidža. Sarajevo selects all of the city's municipalities (Centar, Novi Grad, Novo Sarajevo, Stari Grad). Accents are optional and Cyrillic works, so Ilidza and Бања Лука are fine. Towns replace the canton setting; an unknown name stops the run before anything is charged.",
            "items": {
              "type": "string"
            }
          },
          "sellerType": {
            "title": "👤 Seller",
            "enum": [
              "all",
              "private",
              "business"
            ],
            "type": "string",
            "description": "olx.ba marks each advert as posted by a private user or by a business account (agencies, developers, PIK shops). The filter is applied by the site, so you are only billed for the kind you ask for. About half of the property adverts are private.",
            "default": "all"
          },
          "searchQuery": {
            "title": "🔤 Keyword",
            "type": "string",
            "description": "Optional. A word the advert must contain, in the local language, for example garsonjera, novogradnja, Grbavica or pogled. Leave empty to read the whole section."
          },
          "minPrice": {
            "title": "💰 Min price (KM)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price in convertible marks (KM, BAM). 1 EUR is fixed at 1.95583 KM. For rent this is the monthly rent. Adverts with the price on request are left out when a price range is set."
          },
          "maxPrice": {
            "title": "💰 Max price (KM)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price in KM. Leave empty for no ceiling."
          },
          "minArea": {
            "title": "📐 Min area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Smallest area in square metres. The site applies it within one property type; with All property the actor checks each advert's area itself and skips the rest without billing them."
          },
          "maxArea": {
            "title": "📐 Max area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Largest area in square metres. Leave empty for no maximum."
          },
          "sortBy": {
            "title": "↕️ Order",
            "enum": [
              "newest",
              "price-asc",
              "price-desc"
            ],
            "type": "string",
            "description": "Order of the results. olx.ba leaves adverts with the price on request out of a price-ordered search, so use Newest to see every advert.",
            "default": "newest"
          },
          "maxResults": {
            "title": "🔢 Max listings",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stop after this many adverts. Each search page holds 40 and every advert is opened for its details, so 1,000 adverts take 15 to 20 minutes. Free-plan runs are capped lower and the log says so.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}