{
  "openapi": "3.0.1",
  "info": {
    "title": "Immobiliare.it Scraper - Italy Property Listings & Prices",
    "description": "Scrape Immobiliare.it sale and rent listings in Italy: price, price per m², surface, rooms, zone, agency, photos and price cuts. Search by URL or city with filters. Schedule it daily: only new listings and price drops. Error rows are free.",
    "version": "0.1",
    "x-build-id": "pcv6OAaRwAcp8ewUG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~immobiliare-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-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/scrapewise~immobiliare-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-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/scrapewise~immobiliare-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-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": {
          "startUrls": {
            "title": "Immobiliare.it URLs",
            "type": "array",
            "description": "Immobiliare.it search links copied from your browser after setting the filters on the site, one per line, for example https://www.immobiliare.it/affitto-case/milano/?prezzoMassimo=2000. Every filter in the link is kept. Listing links (https://www.immobiliare.it/annunci/123456789/) also work and come back with the full listing page. Leave empty to search by location below. Each listing is charged once as 'Listing delivered'.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Italian cities, provinces, regions or neighbourhoods, one per line, in English or Italian, for example Milan, Rome, Trastevere or Lombardy. Each location is a separate search with the filters below, and each row says which search found it. Ignored for the links above.",
            "items": {
              "type": "string"
            }
          },
          "contract": {
            "title": "Contract",
            "enum": [
              "rent",
              "sale"
            ],
            "type": "string",
            "description": "Operation to search: For rent (default) or For sale. Sale searches include judicial auctions unless you turn off 'Include auctions'.",
            "default": "rent"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "homes",
              "apartment",
              "penthouse",
              "villa",
              "detachedHouse",
              "loft",
              "room",
              "office",
              "shop",
              "warehouse",
              "storage",
              "garage",
              "land"
            ],
            "type": "string",
            "description": "Kind of property: Homes (default, every residential type), Apartment, Penthouse or attic, Villa, Detached house, Loft, Room (rent only), Office, Shop or commercial, Warehouse or industrial, Storage, Garage or parking, or Land.",
            "default": "homes"
          },
          "minPrice": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings at or above this price in euros, as a whole number (monthly rent for rentals), for example 800 or 200000. Empty = no minimum."
          },
          "maxPrice": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings at or below this price in euros, as a whole number (monthly rent for rentals), for example 2000 or 500000. Empty = no maximum."
          },
          "minSurface": {
            "title": "Minimum surface (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at least this many square metres, for example 50. Empty = no minimum."
          },
          "maxSurface": {
            "title": "Maximum surface (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at most this many square metres, for example 120. Empty = no maximum."
          },
          "minRooms": {
            "title": "Minimum rooms",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Minimum number of rooms, from 1 to 5, counted the Italian way ('locali': bedrooms plus living rooms, so a one-bedroom flat is usually 2). 5 means 5 or more. Empty = any."
          },
          "maxRooms": {
            "title": "Maximum rooms",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Maximum number of rooms, from 1 to 5, counted the Italian way ('locali'). Empty = any."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "relevance",
              "priceLowToHigh",
              "priceHighToLow"
            ],
            "type": "string",
            "description": "Immobiliare.it's own orders: Newest first (default, the right choice for daily monitoring), Relevance, Price low to high, or Price high to low. With a limit it also decides which listings you get, for example Price low to high plus 50 returns the 50 cheapest.",
            "default": "newest"
          },
          "includeAuctions": {
            "title": "Include auctions",
            "type": "boolean",
            "description": "On (default): sale searches keep the judicial auctions Immobiliare.it mixes in (contract 'auction' in the output). Turn off to keep only regular sales; skipped auctions are not charged.",
            "default": true
          },
          "maxItems": {
            "title": "Max listings per search",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each search (each link or each location) after this many listings, for example 50 (default). Immobiliare.it shows 25 per page and at most 2,000 per search (80 pages). 0 = up to 2,000. You pay per listing delivered, so this caps the cost of each search.",
            "default": 50
          },
          "includeDetails": {
            "title": "Full listing pages",
            "type": "boolean",
            "description": "Off (default): rows come from the search results (price, size, rooms, address, coordinates, photos, agency). On: also opens each listing's own page and adds the full description (English and original), all features, energy class, heating, condition, condo fees, deposit, year built, floors in the building, every photo, floor plans, virtual tour, and publication and update dates. One extra request per listing, charged as a separate 'Full listing page' event.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new listings since the last run",
            "type": "boolean",
            "description": "For scheduled runs. Remembers which listings each search (with its filters) already returned, in a named key-value store in your account ('immobiliare-scraper-state'), and delivers only listings not seen before. The first run delivers up to the limit and marks everything it read as seen. Seen listings are not delivered, not charged and do not count toward the limit. Forces the newest-first order. Delete the store to start over.",
            "default": false
          },
          "trackPriceChanges": {
            "title": "Track price changes",
            "type": "boolean",
            "description": "Compares each listing's price with the price seen in your previous runs of the same search (same key-value store) and adds previousPrice, priceChange, priceChangePct, isPriceDrop, isNewListing and firstSeenAt to every row. The limit then counts listings checked, so a daily run keeps the same cost.",
            "default": false
          },
          "onlyChanges": {
            "title": "Only new or repriced listings",
            "type": "boolean",
            "description": "With price tracking: deliver only listings that are new or whose price changed since the last run. Unchanged listings are not delivered and not charged. Turns on 'Track price changes' by itself.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The default Apify Proxy (datacenter) works: blocked IPs are dropped and the Actor keeps the ones that pass. If the datacenter proxy keeps being blocked, the Actor moves to the residential group on its own when your account has it, with no extra charge.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}