{
  "openapi": "3.0.1",
  "info": {
    "title": "Idealista Scraper - Spain, Italy & Portugal Property Listings",
    "description": "Scrape Idealista listings in Spain, Italy and Portugal: price, size m2, rooms, floor, address, neighbourhood, agency or private seller, photos and the listing link. Paste a search URL or use plain filters. No account, no API key and no proxy setup — the run brings the addresses Idealista serves.",
    "version": "0.1",
    "x-build-id": "IjSNkHdVPeDl6RTpE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~idealista-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-idealista-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/dami_studio~idealista-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-idealista-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/dami_studio~idealista-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-idealista-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": {
          "searchUrls": {
            "title": "Idealista search URLs",
            "minItems": 0,
            "maxItems": 20,
            "type": "array",
            "description": "One or more Idealista search URLs copied from your browser - www.idealista.com (Spain), www.idealista.it (Italy) or www.idealista.pt (Portugal). Up to 20 per run. Any filters already in the URL are kept, so this is the most precise way to ask. If you fill this in, the filter fields below are ignored.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum listings",
            "minimum": 1,
            "maximum": 3000,
            "type": "integer",
            "description": "Total listings to return across all searches. The budget is shared evenly between them, so two searches and 100 rows gives you 50 of each. Keep it low while you are testing - you pay per listing."
          },
          "includeDetails": {
            "title": "Open each listing page too (slower)",
            "type": "boolean",
            "description": "Off by default. Turn it on to also open every listing page, which adds the bathroom count, the full untruncated description and the complete photo gallery. It costs one extra request per listing, so the run takes roughly ten times longer. The price per listing is unchanged."
          },
          "country": {
            "title": "Country",
            "enum": [
              "es",
              "it",
              "pt"
            ],
            "type": "string",
            "description": "Which Idealista site to search. Used only when you are not passing search URLs."
          },
          "operation": {
            "title": "Buy or rent",
            "enum": [
              "buy",
              "rent"
            ],
            "type": "string",
            "description": "Whether to search properties for sale or for rent."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "The location slug Idealista itself uses, taken from the address bar of a search on the site - for example madrid-madrid, barcelona-barcelona, valencia-valencia, milano-milano, roma-roma, lisboa or porto."
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "homes",
              "premises",
              "garages",
              "land"
            ],
            "type": "string",
            "description": "Homes works for all three countries. Commercial premises, garages and land are available for Spain only - for those in Italy or Portugal, paste a search URL instead."
          },
          "minPrice": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Lowest price to include, in euros. Leave empty for no lower bound."
          },
          "maxPrice": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Highest price to include, in euros. Leave empty for no upper bound."
          },
          "minSize": {
            "title": "Minimum size (m2)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Smallest floor area to include, in square metres."
          },
          "maxSize": {
            "title": "Maximum size (m2)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Largest floor area to include, in square metres."
          },
          "minRooms": {
            "title": "Minimum bedrooms",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "Minimum number of bedrooms, 1 to 4, where 4 means four or more. Spain and Portugal only - Idealista Italy has no bedroom filter in its URLs, so this is ignored there and the run tells you so."
          },
          "proxyUrls": {
            "title": "Your own proxy servers (optional)",
            "minItems": 0,
            "maxItems": 50,
            "type": "array",
            "description": "Leave this empty. The run brings its own addresses and they cost you nothing per gigabyte. Fill it in only if you specifically want the traffic to leave through proxy servers you already pay for, in the form http://user:pass@host:port.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}