{
  "openapi": "3.0.1",
  "info": {
    "title": "Otodom.pl Scraper",
    "description": "Scrape Polish property listings from Otodom.pl. Use filters (sale/rent, type, location, price, rooms) or paste a search URL — the URL wins when set. Returns price, size, rooms, location, agency, phone, and photos.",
    "version": "0.1",
    "x-build-id": "sdDApKyTgYC9jX8oC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dadhalfdev~otodom-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dadhalfdev-otodom-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/dadhalfdev~otodom-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dadhalfdev-otodom-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/dadhalfdev~otodom-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dadhalfdev-otodom-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": {
          "input_url": {
            "title": "Input URL",
            "type": "string",
            "description": "Optional. Paste any Otodom.pl search results URL to override the filters below. Must be left empty to use location and other structured filters (better for AI agents). If this field is filled, location/price/etc. are ignored."
          },
          "listing_type": {
            "title": "Listing type",
            "enum": [
              "sprzedaz",
              "wynajem"
            ],
            "type": "string",
            "description": "Sale (sprzedaż) or rent (wynajem). Ignored when input_url is set.",
            "default": "sprzedaz"
          },
          "property_type": {
            "title": "Property type",
            "enum": [
              "mieszkanie",
              "kawalerka",
              "dom",
              "dzialka",
              "lokal",
              "pokoj",
              "garaz",
              "haleimagazyny"
            ],
            "type": "string",
            "description": "Property category on Otodom.pl. Ignored when input_url is set.",
            "default": "mieszkanie"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, voivodeship, Warsaw district, or Otodom path (e.g. warszawa, krakow, mazowieckie, mokotow, or mazowieckie/warszawa/warszawa/warszawa). Use cala-polska for all of Poland. Ignored when input_url is set.",
            "default": "warszawa"
          },
          "price_min": {
            "title": "Minimum price (PLN)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in PLN. Ignored when input_url is set."
          },
          "price_max": {
            "title": "Maximum price (PLN)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in PLN. Ignored when input_url is set."
          },
          "bedrooms": {
            "title": "Minimum rooms",
            "enum": [
              "",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6"
            ],
            "type": "string",
            "description": "Minimum number of rooms (Otodom roomsNumber). Ignored when input_url is set.",
            "default": ""
          },
          "area_min": {
            "title": "Minimum area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum floor area in m². Ignored when input_url is set."
          },
          "area_max": {
            "title": "Maximum area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum floor area in m². Ignored when input_url is set."
          },
          "owner_type": {
            "title": "Advertiser type",
            "enum": [
              "ALL",
              "PRIVATE",
              "BUSINESS"
            ],
            "type": "string",
            "description": "Filter by private owners or agencies/businesses. Ignored when input_url is set.",
            "default": "ALL"
          },
          "sort_by": {
            "title": "Sort by",
            "enum": [
              "",
              "latest",
              "price_asc",
              "price_desc",
              "area_asc",
              "area_desc"
            ],
            "type": "string",
            "description": "Result order (same modes as Otodom). Ignored when input_url is set.",
            "default": ""
          },
          "max_properties": {
            "title": "Maximum number of properties",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "How many property listings to return (1–2000).",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}