{
  "openapi": "3.0.1",
  "info": {
    "title": "Engel & Völkers Scraper - Luxury Real Estate",
    "description": "Scrape engelvoelkers.com: homes, land and commercial property for sale or rent in 34 country markets with prices, coordinates, specs, photos, energy data and agency details. Also lists agency offices and price per m2 statistics for Germany and Spain. No login, no API key.",
    "version": "0.1",
    "x-build-id": "gZ6aq5S7DjNSuttmi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~engelvoelkers-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-engelvoelkers-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/recordsdata~engelvoelkers-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-engelvoelkers-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/recordsdata~engelvoelkers-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-engelvoelkers-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": {
          "mode": {
            "title": "What to collect",
            "enum": [
              "search",
              "urls",
              "catalog",
              "agencies",
              "market"
            ],
            "type": "string",
            "description": "search = listings for the chosen countries, deal type, property types and places. urls = the Engel & Völkers addresses and listing codes you list below. catalog = walk the public listing sitemaps (everything, or only what changed since a date). agencies = Engel & Völkers offices (shops) with contact data, ratings and live listing counts. market = price per square metre statistics for German and Spanish places.",
            "default": "search"
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops after this many rows (all record types together). Free plans are limited to 10 items per run.",
            "default": 50
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Engel & Völkers markets to read, by two-letter code (search and catalog modes). Agencies mode accepts the 24 countries that publish agency pages. Market mode accepts de and es only. Empty means Ireland (market mode: Germany).",
            "items": {
              "type": "string",
              "enum": [
                "ad",
                "ae",
                "at",
                "be",
                "bs",
                "bz",
                "ca",
                "ch",
                "cl",
                "co",
                "cr",
                "cz",
                "de",
                "es",
                "fr",
                "gr",
                "hr",
                "hu",
                "ie",
                "it",
                "ky",
                "li",
                "lu",
                "mu",
                "mx",
                "nl",
                "pa",
                "pl",
                "pt",
                "tc",
                "us",
                "uy",
                "vg",
                "za"
              ],
              "enumTitles": [
                "Andorra (AD)",
                "United Arab Emirates (AE)",
                "Austria (AT)",
                "Belgium (BE)",
                "Bahamas (BS)",
                "Belize (BZ)",
                "Canada (CA)",
                "Switzerland (CH)",
                "Chile (CL)",
                "Colombia (CO)",
                "Costa Rica (CR)",
                "Czechia (CZ)",
                "Germany (DE)",
                "Spain (ES)",
                "France (FR)",
                "Greece (GR)",
                "Croatia (HR)",
                "Hungary (HU)",
                "Ireland (IE)",
                "Italy (IT)",
                "Cayman Islands (KY)",
                "Liechtenstein (LI)",
                "Luxembourg (LU)",
                "Mauritius (MU)",
                "Mexico (MX)",
                "Netherlands (NL)",
                "Panama (PA)",
                "Poland (PL)",
                "Portugal (PT)",
                "Turks and Caicos (TC)",
                "United States (US)",
                "Uruguay (UY)",
                "British Virgin Islands (VG)",
                "South Africa (ZA)"
              ]
            }
          },
          "operation": {
            "title": "Deal type",
            "enum": [
              "sale",
              "rent",
              "both"
            ],
            "type": "string",
            "description": "Buy, rent or both. Also filters the catalog and the market statistics.",
            "default": "sale"
          },
          "businessArea": {
            "title": "Residential or commercial",
            "enum": [
              "residential",
              "commercial",
              "both"
            ],
            "type": "string",
            "description": "Residential homes and land, commercial property (offices, stores, hotels, industrial), or both.",
            "default": "residential"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Only these types. Empty means all types of the chosen business area. House, apartment, land and development are residential; office, store, industry, investment, gastronomy, hotel, commercial space and agriculture are commercial; land exists in both.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "apartment",
                "land",
                "development",
                "office",
                "store",
                "industry",
                "investment",
                "gastronomy",
                "hotel",
                "commercial-space",
                "agriculture-and-forestry"
              ],
              "enumTitles": [
                "House / villa",
                "Apartment",
                "Land / plot",
                "New development (project)",
                "Office",
                "Retail store",
                "Industrial",
                "Investment property",
                "Restaurant / gastronomy",
                "Hotel",
                "Commercial space",
                "Agriculture and forestry"
              ]
            },
            "default": []
          },
          "places": {
            "title": "Places",
            "type": "array",
            "description": "Regions, cities or districts, one per line: a place path such as florida/miami or county-cork/kinsale, a bare name such as kinsale (the actor finds it), or an Engel & Völkers search address. Empty means the whole country. The names are the English page names of the site.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "drillDown": {
            "title": "Go deeper than 35 per place",
            "type": "boolean",
            "description": "A place page shows only its 35 newest listings. When on, the actor continues with the smaller places inside it (cities, districts) until maxItems is reached or maxSearchPages runs out.",
            "default": true
          },
          "maxSearchPages": {
            "title": "Maximum search pages",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Cap on the number of place pages read per search combination while going deeper. Each page costs one request.",
            "default": 30
          },
          "minPrice": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep listings at or above this price. The site converts every price to euros, so one filter works across countries. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep listings at or below this price (euros as converted by the site). Rent filters use the monthly rent."
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Keep listings with at least this many bedrooms. Markets that publish only total rooms (US, Canada, Mexico, Costa Rica, Panama, Bahamas, Belize, Cayman, Turks and Caicos, British Virgin Islands, Czechia) are skipped when this is set."
          },
          "minAreaM2": {
            "title": "Minimum living area (m2)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep listings with at least this living area in square metres (land plots use the plot size)."
          },
          "startUrls": {
            "title": "Engel & Völkers addresses",
            "type": "array",
            "description": "Used in urls mode. Listing pages (/exposes/...), search pages (/properties/res/sale/house/...), agency pages (/shops/...) and market price pages (/properties-prices/...). Several kinds can be mixed.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingIds": {
            "title": "Listing codes",
            "type": "array",
            "description": "Used in urls mode. Listing UUIDs or display codes such as W-047IFY, one per line.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "updatedSince": {
            "title": "Updated since",
            "type": "string",
            "description": "Catalog mode: only listings whose sitemap date is on or after this day (YYYY-MM-DD). Empty means all.",
            "default": ""
          },
          "agencyQuery": {
            "title": "Agency name contains",
            "type": "string",
            "description": "Agencies mode: keep only agencies whose page name contains this text (for example miami or west-cork). Empty means every agency of the chosen countries.",
            "default": ""
          },
          "includeDetails": {
            "title": "Read the full listing page",
            "type": "boolean",
            "description": "On: one extra request per listing for the description, all photos, coordinates, features, energy data and agency details (listing-detail record). Off: only the search-card data (listing record), much faster.",
            "default": true
          },
          "includeContactDetails": {
            "title": "Include agent and manager names",
            "type": "boolean",
            "description": "Adds the listing agent name, email and phone, and the agency manager name. Agency (office) contact data is always included. Turn on only if you have a lawful reason to process personal data.",
            "default": false
          },
          "includeRaw": {
            "title": "Include raw payload",
            "type": "boolean",
            "description": "Adds a raw field with the remaining unmapped data of the listing.",
            "default": false
          },
          "language": {
            "title": "Page language",
            "enum": [
              "en",
              "de",
              "es",
              "fr",
              "it",
              "pt"
            ],
            "type": "string",
            "description": "Language of the full listing pages (title, description, country and place names). Search pages and sitemaps are always read in English, so rows without the full page keep English place names. If a country does not offer the language, English is used.",
            "default": "en"
          },
          "onlyNew": {
            "title": "Only new listings",
            "type": "boolean",
            "description": "Skips records delivered by an earlier run of the same search. Nothing skipped is charged.",
            "default": false
          },
          "trackPriceChanges": {
            "title": "Also report price changes",
            "type": "boolean",
            "description": "With Only new listings on: a listing seen before comes back as a changed-listing record when its price differs from the last delivered price, with the previous price and the change in percent.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional label to keep several monitors with identical filters apart.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget what was delivered",
            "type": "boolean",
            "description": "Clears the memory of this search before the run, so everything counts as new.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many detail requests run at the same time. The actor also spaces requests politely.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify datacenter proxy is used by default and is required on the platform.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}