{
  "openapi": "3.0.1",
  "info": {
    "title": "Fotocasa Scraper — Spain Property Listings & Prices",
    "description": "Scrape Fotocasa.es homes for sale and rent by city, district or neighbourhood: price, price drops, m², bedrooms, bathrooms, address, coordinates, photos, features, agency name and phone. Optional energy certificate, floor and agency reference. Private sellers' contacts are never collected. No login.",
    "version": "0.1",
    "x-build-id": "yV4hGGtkj0Gsh7ErP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yugenox~fotocasa-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yugenox-fotocasa-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/yugenox~fotocasa-scraper/runs": {
      "post": {
        "operationId": "runs-sync-yugenox-fotocasa-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/yugenox~fotocasa-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-yugenox-fotocasa-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": {
          "locations": {
            "title": "📍 Locations",
            "type": "array",
            "description": "Spanish cities, towns or provinces, e.g. \"Madrid\", \"Marbella\", \"Sant Cugat del Vallès\", \"Málaga provincia\". You can also paste Fotocasa search URLs here (a city, district or neighbourhood page). Each location is searched separately.",
            "items": {
              "type": "string"
            }
          },
          "operation": {
            "title": "Buy or rent",
            "enum": [
              "buy",
              "rent",
              "share"
            ],
            "type": "string",
            "description": "Listings for sale, for rent, or rooms to share.",
            "default": "buy"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "homes",
              "flats",
              "apartments",
              "penthouses",
              "duplexes",
              "houses",
              "terraced-houses",
              "country-houses",
              "studios",
              "lofts",
              "ground-floors",
              "garages",
              "commercial",
              "offices",
              "storage-rooms",
              "land",
              "buildings",
              "industrial"
            ],
            "type": "string",
            "description": "Homes covers flats, apartments, penthouses, duplexes and houses together.",
            "default": "homes"
          },
          "maxItems": {
            "title": "Max listings",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of listings for the whole run, shared fairly between your locations. 0 = as many as possible.",
            "default": 100
          },
          "includeDetails": {
            "title": "Include listing details",
            "type": "boolean",
            "description": "Also open each listing's own page for the energy certificate (rating and kWh/m²), floor, orientation, the agency's legal name, website and its own reference, and every photo. One extra page per listing.",
            "default": false
          },
          "startUrls": {
            "title": "🔗 Fotocasa URLs",
            "type": "array",
            "description": "Optional: Fotocasa search URLs (a city, district or neighbourhood page) or listing URLs (they end in /<number>/d).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingFilter": {
            "title": "Only listings that are…",
            "enum": [
              "none",
              "new-48h",
              "terrace",
              "lift",
              "pool",
              "garden",
              "furnished",
              "unfurnished",
              "new-build",
              "to-renovate",
              "renovated",
              "auction",
              "bare-ownership",
              "occupied",
              "with-tenant",
              "bank-owned"
            ],
            "type": "string",
            "description": "One of Fotocasa's own page filters. \"Published in the last 48 hours\" is ideal for a daily schedule.",
            "default": "none"
          },
          "bedrooms": {
            "title": "Exactly this many bedrooms",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "1 to 4. Leave empty for any."
          },
          "minPrice": {
            "title": "Min price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "For rentals: the monthly rent."
          },
          "maxPrice": {
            "title": "Max price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings priced at or below this (€). Leave empty for no limit."
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at least this many bedrooms. Leave empty for no limit."
          },
          "maxBedrooms": {
            "title": "Max bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at most this many bedrooms. Leave empty for no limit."
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at least this many bathrooms. Leave empty for no limit."
          },
          "minSize": {
            "title": "Min size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings whose size (m²) is at least this value. Leave empty for no limit."
          },
          "maxSize": {
            "title": "Max size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings whose size (m²) is at most this value. Leave empty for no limit."
          },
          "onlyAgencies": {
            "title": "Only agency listings",
            "type": "boolean",
            "description": "Leave out listings from private sellers (particulares). Their listings are otherwise included without the seller's name or phone.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy (datacenter) is the default and comes with every Apify plan. If Fotocasa refuses datacenter IPs for a while, the run switches to residential proxies when your account has them.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}