{
  "openapi": "3.0.1",
  "info": {
    "title": "Idealista Scraper - Any URL, Spain Portugal Italy",
    "description": "Scrape Idealista property listings in Spain (idealista.com), Portugal (idealista.pt) and Italy (idealista.it) from any search URL, filters and sort order respected. Price, price drops, size, rooms, floor, agency, photos, description, energy class, coordinates. From $0.40 per 1,000. JSON, CSV, API.",
    "version": "1.0",
    "x-build-id": "gssXE4LK6x7MOevgu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/amitaviv~idealista-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-amitaviv-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/amitaviv~idealista-scraper/runs": {
      "post": {
        "operationId": "runs-sync-amitaviv-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/amitaviv~idealista-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-amitaviv-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",
            "type": "array",
            "description": "Paste one or more idealista search result URLs from idealista.com (Spain), idealista.pt (Portugal) or idealista.it (Italy), with any filters and sort order. Examples: https://www.idealista.com/venta-viviendas/madrid-madrid/con-precio-hasta_300000/ or https://www.idealista.pt/arrendar-casas/lisboa/. URLs without https:// or www, mobile (m.idealista...) links and translated pages (/en/...) are accepted. A URL that points at a later results page (pagina-3, lista-3) is collected from that page onwards. Property URLs pasted here are scraped as properties. Required unless \"Individual property URLs\" is given.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerSearch": {
            "title": "Max listings per search URL",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of listings to return for each search URL (30 per results page), e.g. 300; default 60. Each listing is one record and one charged 'listing' event. Idealista shows at most 60 pages (1,800 listings) per search. Set a higher number to get more: the search is then split into price bands automatically (see 'Split searches with more than 1,800 results').",
            "default": 60
          },
          "fetchDetails": {
            "title": "Fetch full property details",
            "type": "boolean",
            "description": "Default off. Also open every property page to get the full description, all features (bathrooms, year built, heating, orientation, condition...), energy certificate, map coordinates, reference, advertiser and all photos. Charged as an extra 'detail' event per listing. Takes about 2 seconds per listing: 1,000 listings with details need a run timeout of at least 45 minutes.",
            "default": false
          },
          "propertyUrls": {
            "title": "Individual property URLs (optional)",
            "type": "array",
            "description": "Scrape specific properties by URL, e.g. https://www.idealista.com/inmueble/112367425/ — always returns full details ('listing' + 'detail' events). URLs that are no longer online are skipped and named in the run's status message; they are not charged.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "splitLargeSearches": {
            "title": "Split searches with more than 1,800 results",
            "type": "boolean",
            "description": "Only matters when 'Max listings per search URL' is above 1,800. A search with more results than idealista shows is then read as several price bands (lowest prices first), each small enough to be shown in full, and every listing is saved once. The status message and OUTPUT_SUMMARY say how many price bands were read and whether all were read to the end. Within a split search the sort order of your URL is not kept. Turn off to get the first 1,800 listings in the order of your URL.",
            "default": true
          },
          "includePrivateSellerData": {
            "title": "Include names of private advertisers",
            "type": "boolean",
            "description": "By default, detailed records of listings published by private individuals (not agencies) have 'advertiserName' and 'advertiserUrl' set to null and carry 'privateDataRedacted': true. Turn this on only if you need the names: by doing so you confirm that you have a lawful basis under the GDPR for processing personal data of private individuals. Agencies and other professional advertisers are always returned in full.",
            "default": false
          },
          "debug": {
            "title": "Debug",
            "type": "boolean",
            "description": "Default off; not needed for normal use. Save blocked pages and the first results page / property page to the key-value store as raw HTML, and log more, for troubleshooting. A private advertiser's property page is not saved unless 'Include names of private advertisers' is on.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}