{
  "openapi": "3.0.1",
  "info": {
    "title": "Immobiliare.it Scraper - Italy Listings, Price Drops & Agencies",
    "description": "Scrape immobiliare.it listings for sale or rent by place, search URL, radius or polygon: price, price drops, m², rooms, floor, features, GPS, photos, agency, phones. Add-ons: listing details (energy class, dates, fees) and agency profiles. Monitor mode, past the 2,000 cap. $0.50 per 1,000 listings.",
    "version": "0.1",
    "x-build-id": "oqqhcZ0LDZnvEr0iu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/topapi~immobiliare-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-topapi-immobiliare-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/topapi~immobiliare-scraper/runs": {
      "post": {
        "operationId": "runs-sync-topapi-immobiliare-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/topapi~immobiliare-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-topapi-immobiliare-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": {
          "location": {
            "title": "Location",
            "type": "string",
            "description": "A comune, province, region or zone as you would type it on immobiliare.it (e.g. Roma, Milano, Provincia di Bergamo, Toscana, Navigli). Matched with immobiliare.it's own place search."
          },
          "locations": {
            "title": "More locations",
            "type": "array",
            "description": "More places, one per line. Each is a separate search with the same filters.",
            "items": {
              "type": "string"
            }
          },
          "operation": {
            "title": "For sale or to rent",
            "enum": [
              "sale",
              "rent",
              "auction"
            ],
            "type": "string",
            "description": "Sale or rent. 'auction' reads sale listings and keeps only court auctions (aste).",
            "default": "sale"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "homes",
              "apartments",
              "penthouses",
              "villas",
              "detachedHouses",
              "lofts",
              "newBuilds",
              "rooms",
              "offices",
              "shops",
              "warehouses",
              "garages",
              "land",
              "buildings",
              "sheds"
            ],
            "type": "string",
            "description": "What kind of property. 'Homes' is every residential type.",
            "default": "homes"
          },
          "startUrls": {
            "title": "immobiliare.it URLs",
            "type": "array",
            "description": "Search result URLs with their filters (e.g. https://www.immobiliare.it/vendita-case/milano/?prezzoMassimo=300000), zone and map URLs, /search-list/ URLs, and listing URLs (/annunci/<id>/). Any language version works.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "urlsFromFile": {
            "title": "URLs from a file",
            "type": "string",
            "description": "A link to a text or CSV file of immobiliare.it URLs (one per line), or the URLs pasted here."
          },
          "listingIds": {
            "title": "Listing ids",
            "type": "array",
            "description": "immobiliare.it listing ids (the number in /annunci/<id>/). Read through the listing JSON, so these rows carry the full details.",
            "items": {
              "type": "string"
            }
          },
          "province": {
            "title": "Province",
            "type": "string",
            "description": "Province code (RM, MI, NA...) to search the whole province, or to pick the right place when a name exists in several provinces."
          },
          "area": {
            "title": "Zone",
            "type": "string",
            "description": "A zone (macrozona or quartiere) inside the location's comune, e.g. Centro Storico, Navigli, Prati."
          },
          "latitude": {
            "title": "Latitude (point search)",
            "type": "number",
            "description": "Search around a point instead of a place: latitude."
          },
          "longitude": {
            "title": "Longitude (point search)",
            "type": "number",
            "description": "Longitude of the point."
          },
          "radiusKm": {
            "title": "Radius (km)",
            "type": "number",
            "description": "Radius around the point, in km.",
            "default": 2
          },
          "polygon": {
            "title": "Polygon",
            "type": "string",
            "description": "A map area as 'lat,lng' points separated by ';' (at least 3), e.g. 41.90,12.48;41.92,12.48;41.92,12.51;41.90,12.51."
          },
          "minPrice": {
            "title": "Min price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price (monthly rent for rentals)."
          },
          "maxPrice": {
            "title": "Max price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price (monthly rent for rentals)."
          },
          "minSize": {
            "title": "Min size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum surface in m²."
          },
          "maxSize": {
            "title": "Max size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum surface in m²."
          },
          "minRooms": {
            "title": "Min rooms (locali)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of rooms (locali)."
          },
          "maxRooms": {
            "title": "Max rooms (locali)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of rooms (locali)."
          },
          "bathrooms": {
            "title": "Bathrooms",
            "enum": [
              "",
              "1",
              "2",
              "3"
            ],
            "type": "string",
            "description": "At least this many bathrooms.",
            "default": ""
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "",
              "new",
              "excellent",
              "good",
              "toBeRenovated"
            ],
            "type": "string",
            "description": "Property condition as immobiliare.it classifies it.",
            "default": ""
          },
          "floor": {
            "title": "Floor",
            "type": "array",
            "description": "Ground, middle or top floor (any of them).",
            "items": {
              "type": "string",
              "enum": [
                "ground",
                "middle",
                "top"
              ],
              "enumTitles": [
                "Ground floor",
                "Middle floors",
                "Top floor"
              ]
            }
          },
          "garage": {
            "title": "With garage or parking",
            "type": "boolean",
            "description": "Only listings with a garage or parking space."
          },
          "garden": {
            "title": "With garden",
            "type": "boolean",
            "description": "Private or shared garden."
          },
          "terrace": {
            "title": "With terrace",
            "type": "boolean",
            "description": "Only listings with a terrace."
          },
          "balcony": {
            "title": "With balcony",
            "type": "boolean",
            "description": "Only listings with a balcony."
          },
          "lift": {
            "title": "With lift",
            "type": "boolean",
            "description": "Only listings with a lift."
          },
          "cellar": {
            "title": "With cellar",
            "type": "boolean",
            "description": "Only listings with a cellar."
          },
          "pool": {
            "title": "With pool",
            "type": "boolean",
            "description": "Only listings with a swimming pool."
          },
          "furnished": {
            "title": "Furnished",
            "type": "boolean",
            "description": "Only furnished listings."
          },
          "autonomousHeating": {
            "title": "Autonomous heating",
            "type": "boolean",
            "description": "Only listings with autonomous (independent) heating."
          },
          "airConditioning": {
            "title": "Air conditioning",
            "type": "boolean",
            "description": "Only listings with air conditioning."
          },
          "seaView": {
            "title": "Sea view",
            "type": "boolean",
            "description": "Only listings with a sea view."
          },
          "virtualTour": {
            "title": "With virtual tour",
            "type": "boolean",
            "description": "Only listings with a virtual tour."
          },
          "excludeAuctions": {
            "title": "Exclude auctions",
            "type": "boolean",
            "description": "Leave out court auctions (aste)."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "newest",
              "oldest",
              "priceLow",
              "priceHigh",
              "sizeLarge",
              "sizeSmall",
              "roomsMost",
              "roomsLeast",
              "privateFirst"
            ],
            "type": "string",
            "description": "Order of the results (immobiliare.it's own sorts).",
            "default": "relevance"
          },
          "sellerType": {
            "title": "Seller",
            "enum": [
              "any",
              "private",
              "agency"
            ],
            "type": "string",
            "description": "Private sellers only, agencies only, or both. Applied to every row before it is charged.",
            "default": "any"
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Keep listings with at least this many bedrooms (immobiliare.it has no bedroom filter, so it runs on the rows)."
          },
          "maxBedrooms": {
            "title": "Max bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Keep listings with at most this many bedrooms."
          },
          "requirePhone": {
            "title": "With phone number only",
            "type": "boolean",
            "description": "Keep only listings that show a phone number."
          },
          "onlyPriceDrops": {
            "title": "Price drops only",
            "type": "boolean",
            "description": "Keep only listings whose price was lowered (immobiliare.it shows the former price, the drop and its date)."
          },
          "minPriceDropPercent": {
            "title": "Min price drop (%)",
            "minimum": 0,
            "maximum": 90,
            "type": "integer",
            "description": "Keep drops of at least this percentage (turns 'Price drops only' on)."
          },
          "includeKeywords": {
            "title": "Must contain",
            "type": "array",
            "description": "Keep listings whose title, headline, description excerpt or features contain any of these words (e.g. terrazzo, box).",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Must not contain",
            "type": "array",
            "description": "Drop listings that contain any of these words.",
            "items": {
              "type": "string"
            }
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Keep listings created on or after this date (YYYY-MM-DD). The creation date lives in the listing JSON, so each candidate's listing JSON is read (charged only if 'Listing details' is on); the search is read newest first and stops once a page is older."
          },
          "maxItems": {
            "title": "Max listings",
            "minimum": 0,
            "type": "integer",
            "description": "Most listings to deliver in this run (all searches together). 0 = no limit.",
            "default": 100
          },
          "maxItemsPerSearch": {
            "title": "Max listings per search",
            "minimum": 0,
            "type": "integer",
            "description": "Most listings per search or location. Empty = no per-search limit."
          },
          "maxPagesPerSearch": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 80,
            "type": "integer",
            "description": "Most result pages (25 listings each, 80 at most) per search."
          },
          "splitLargeSearches": {
            "title": "Get every listing of large searches",
            "type": "boolean",
            "description": "immobiliare.it shows at most 2,000 listings per search (80 pages). When you ask for more, the search is split into price bands so every listing is reachable.",
            "default": true
          },
          "includeDetails": {
            "title": "Listing details (paid add-on)",
            "type": "boolean",
            "description": "Add the listing's full record: full description, reference, creation and update dates, ZIP code, energy class, year built, availability, kitchen, condominium fees, surface breakdown, every photo in HD, floor plans, videos, agent card and mortgage estimate. Charged per listing it is added to.",
            "default": false
          },
          "includeAgencyDetails": {
            "title": "Agency profiles (paid add-on)",
            "type": "boolean",
            "description": "Add the agency's profile to its listings: website, full address and position, phones, description, opening hours, listings on sale and sold, partnership, agents. Charged once per agency per run; never for a private seller.",
            "default": false
          },
          "language": {
            "title": "Language",
            "enum": [
              "it",
              "en",
              "de",
              "es",
              "fr",
              "pt",
              "el",
              "ru"
            ],
            "type": "string",
            "description": "Language of titles and labels on the search rows (immobiliare.it's translations).",
            "default": "it"
          },
          "monitorMode": {
            "title": "Monitor mode (only new listings)",
            "type": "boolean",
            "description": "Deliver only listings not delivered by earlier runs of the same search (memory in a named key-value store). Run it on a schedule.",
            "default": false
          },
          "includePriceChanges": {
            "title": "Also deliver price changes",
            "type": "boolean",
            "description": "In monitor mode, also deliver listings seen before whose price changed (with monitorPreviousPrice and priceChange).",
            "default": false
          },
          "skipFirstRun": {
            "title": "Skip first run",
            "type": "boolean",
            "description": "The first monitor run only remembers the current listings (nothing delivered or charged); later runs return what is new.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor memory name",
            "type": "string",
            "description": "Name of the key-value store that keeps the memory. Use a different name for each separate watch list.",
            "default": "immobiliare-monitor"
          },
          "resetMonitor": {
            "title": "Reset the memory",
            "type": "boolean",
            "description": "Forget what earlier runs delivered.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 32,
            "type": "integer",
            "description": "Parallel workers, each one Italian residential exit. About 1 request in 25 meets immobiliare.it's bot check; that worker then moves to the Apify Unblocker for the rest of the run, so more workers keep more of a large run on the cheaper residential route.",
            "default": 12
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify residential proxy in Italy by default (immobiliare.it challenges datacenter IPs). A worker that meets immobiliare.it's bot check moves to the Apify Unblocker.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "IT"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}