{
  "openapi": "3.0.1",
  "info": {
    "title": "Otodom.pl Property Scraper - Poland Real Estate Listings",
    "description": "Scrapes property listings from Otodom.pl: price, price per m², area, rooms, floor, address, GPS, photos, description, building details, agency and agent phone numbers. Search flats, houses, plots, rooms and commercial property for sale or rent by location, search URL or listing URL.",
    "version": "1.0",
    "x-build-id": "ZUAmJrNeuvGOVgQGh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/confidential_gnat~otodom-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-confidential_gnat-otodom-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/confidential_gnat~otodom-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-confidential_gnat-otodom-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/confidential_gnat~otodom-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-confidential_gnat-otodom-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": {
          "startUrls": {
            "title": "Search or listing URLs",
            "type": "array",
            "description": "Otodom search results URLs with any filters applied on the site (for example https://www.otodom.pl/pl/wyniki/sprzedaz/mieszkanie/mazowieckie/warszawa/warszawa/warszawa?priceMax=800000) or single listing URLs (for example https://www.otodom.pl/pl/oferta/...-ID4CNxi). When set, the filter fields below are ignored unless Locations is also filled.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "scrapeDetails": {
            "title": "Scrape listing details",
            "type": "boolean",
            "description": "Open every listing to get the phone numbers, full description, GPS coordinates, all photos and building details (year, type, heating, ownership, floors). Turn off for faster, cheaper runs with the search summary only. Listing URLs always include the details.",
            "default": true
          },
          "scrapeNearbyPlaces": {
            "title": "Scrape nearby places",
            "type": "boolean",
            "description": "Add the \"Okolica\" section of each listing: the 3 nearest places per category (transport, shops, schools, health, green areas and more) with distance and walking time. One extra request per listing, used only when listing details are scraped.",
            "default": true
          },
          "maxItems": {
            "title": "Max items per search",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum unique listings saved for each location or search URL.",
            "default": 5
          },
          "cacheProjectName": {
            "title": "Cache project name",
            "type": "string",
            "description": "Use the same name on each scheduled run to get only new listings. Listings already scraped under this name are skipped and not charged, and they do not count towards Max items. Each record gets changeType: new."
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, districts or regions to search, for example Warszawa, Kraków or Mokotów. Each location is searched separately with the filters below. Leave empty to search all of Poland.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "transaction": {
            "title": "Transaction",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Buy or rent.",
            "default": "sale"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "flat",
              "house",
              "room",
              "plot",
              "commercial",
              "warehouse",
              "garage"
            ],
            "type": "string",
            "description": "Type of property to search for.",
            "default": "flat"
          },
          "market": {
            "title": "Market",
            "enum": [
              "all",
              "primary",
              "secondary"
            ],
            "type": "string",
            "description": "Primary market (new builds from developers), secondary market (resale) or both.",
            "default": "all"
          },
          "priceMin": {
            "title": "Min price (PLN)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum total price, or monthly rent for rentals."
          },
          "priceMax": {
            "title": "Max price (PLN)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum total price, or monthly rent for rentals."
          },
          "areaMin": {
            "title": "Min area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum living area in square meters."
          },
          "areaMax": {
            "title": "Max area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum living area in square meters."
          },
          "rooms": {
            "title": "Number of rooms",
            "type": "array",
            "description": "Only listings with these room counts. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8",
                "9",
                "10"
              ]
            },
            "default": []
          },
          "ownerType": {
            "title": "Advertiser type",
            "enum": [
              "all",
              "private",
              "agency",
              "developer"
            ],
            "type": "string",
            "description": "Only listings from private owners, real-estate agencies or developers. The agency and developer options only filter sale searches (Otodom ignores them for rentals); private owner works for both.",
            "default": "all"
          },
          "buildYearMin": {
            "title": "Built from year",
            "type": "integer",
            "description": "Minimum year of construction."
          },
          "buildYearMax": {
            "title": "Built until year",
            "type": "integer",
            "description": "Maximum year of construction."
          },
          "daysSinceCreated": {
            "title": "Posted within",
            "enum": [
              "1",
              "3",
              "7",
              "14",
              "30",
              "90"
            ],
            "type": "string",
            "description": "Only listings added in the last N days."
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "default",
              "newest",
              "priceAsc",
              "priceDesc",
              "areaAsc",
              "areaDesc"
            ],
            "type": "string",
            "description": "Order of the search results.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Residential proxies are recommended: Otodom blocks many requests from datacenter and unproxied IPs on the Apify platform.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}