{
  "openapi": "3.0.1",
  "info": {
    "title": "Funda Scraper - Dutch Listings, Prices, Makelaar Phone & Email",
    "description": "Scrape funda.nl koop and huur listings by place, postcode, province or search URL: price, address, GPS, m², rooms, energy label, year built, plot, all characteristics, photos, makelaar phone, email and website, buurt figures, new-build projects. No login, no browser.",
    "version": "0.1",
    "x-build-id": "fI2AiFpZi67jCXr7t"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~funda-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-funda-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/scrapersdelight~funda-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-funda-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/scrapersdelight~funda-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-funda-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": "Where to search: a city or village (\"Amsterdam\", \"Den Haag\", \"Hengelo-ov\"), a neighbourhood the way funda writes it (\"amsterdam/buiksloterham-zuid\"), \"gemeente Haarlemmermeer\", \"provincie Utrecht\", a postcode (\"1031\" or \"1031 JH\") or \"Nederland\" for the whole country. Each line is its own search.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "funda.nl URLs or listing ids",
            "type": "array",
            "description": "funda search URLs (https://www.funda.nl/zoeken/koop?selected_area=[\"utrecht\"]&price=\"300000-500000\" - the URL's own filters are used), listing URLs or ids (e.g. 44548406), or makelaar office URLs (https://www.funda.nl/makelaar/24819-.../) to get every listing that office publishes.",
            "items": {
              "type": "string"
            }
          },
          "offeringType": {
            "title": "For sale or for rent",
            "enum": [
              "buy",
              "rent",
              "both"
            ],
            "type": "string",
            "description": "Koop (for sale), huur (for rent) or both. Applies to the locations above.",
            "default": "buy"
          },
          "maxResults": {
            "title": "Max listings",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many listings in total (0 = no limit). You are charged per listing delivered.",
            "default": 100
          },
          "objectTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "apartment",
                "parking",
                "land",
                "other"
              ],
              "enumTitles": [
                "House (woonhuis)",
                "Apartment (appartement)",
                "Parking / garage",
                "Building plot (bouwgrond)",
                "Other (storage, berth, pitch...)"
              ]
            }
          },
          "minPrice": {
            "title": "Min price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "For sale: asking price. For rent: rent per month."
          },
          "maxPrice": {
            "title": "Max price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "For sale: asking price, e.g. 500000. For rent: rent per month, e.g. 2000."
          },
          "minLivingArea": {
            "title": "Min living area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Woonoppervlakte in square metres."
          },
          "maxLivingArea": {
            "title": "Max living area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Woonoppervlakte in square metres."
          },
          "minPlotArea": {
            "title": "Min plot area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Perceeloppervlakte in square metres."
          },
          "maxPlotArea": {
            "title": "Max plot area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Perceeloppervlakte in square metres."
          },
          "minRooms": {
            "title": "Min rooms",
            "minimum": 0,
            "type": "integer",
            "description": "Total rooms (kamers), bedrooms included."
          },
          "maxRooms": {
            "title": "Max rooms",
            "minimum": 0,
            "type": "integer",
            "description": "Total rooms (kamers)."
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Slaapkamers."
          },
          "maxBedrooms": {
            "title": "Max bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Slaapkamers."
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Badkamers."
          },
          "energyLabels": {
            "title": "Energy labels",
            "type": "array",
            "description": "Only these energy labels. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "A+++++",
                "A++++",
                "A+++",
                "A++",
                "A+",
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            }
          },
          "constructionType": {
            "title": "Existing or new build",
            "enum": [
              "any",
              "resale",
              "newly_built"
            ],
            "type": "string",
            "description": "Bestaande bouw (resale) or nieuwbouw (newly built).",
            "default": "any"
          },
          "minConstructionYear": {
            "title": "Built in or after (year)",
            "minimum": 1000,
            "maximum": 2100,
            "type": "integer",
            "description": "Bouwjaar, e.g. 1990."
          },
          "maxConstructionYear": {
            "title": "Built in or before (year)",
            "minimum": 1000,
            "maximum": 2100,
            "type": "integer",
            "description": "Bouwjaar, e.g. 1940."
          },
          "availability": {
            "title": "Availability",
            "type": "array",
            "description": "Available, and/or in negotiation (onder bod, onder optie, verkocht/verhuurd onder voorbehoud). funda's own default is both. Sold and rented listings: paste a makelaar URL (see \"Makelaar office listings\") or the listing URL.",
            "items": {
              "type": "string",
              "enum": [
                "available",
                "negotiations"
              ],
              "enumTitles": [
                "Available (beschikbaar)",
                "In negotiation (onder bod / optie / voorbehoud)"
              ]
            },
            "default": [
              "available",
              "negotiations"
            ]
          },
          "publishedWithinDays": {
            "title": "Published within (days)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings funda published in the last N days (1 = today and yesterday). Fast: older listings are skipped before they are read."
          },
          "mustHave": {
            "title": "Must have",
            "type": "array",
            "description": "Every one you tick must be present.",
            "items": {
              "type": "string",
              "enum": [
                "garden",
                "balcony",
                "roofTerrace",
                "garage",
                "parkingOnOwnProperty",
                "solarPanels",
                "heatPump",
                "fixerUpper",
                "monument",
                "openHouse"
              ],
              "enumTitles": [
                "Garden (tuin)",
                "Balcony (balkon)",
                "Roof terrace (dakterras)",
                "Garage",
                "Parking on own property",
                "Solar panels",
                "Heat pump",
                "Fixer-upper (kluswoning)",
                "Monument",
                "Open house planned"
              ]
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep a listing when its title, description or characteristics contain ANY of these words, e.g. \"tuin op het zuiden\", \"erfpacht afgekocht\", \"aan het water\".",
            "items": {
              "type": "string"
            }
          },
          "radiusKm": {
            "title": "Radius around the place (km)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Also return listings up to this many km from the centre of each place (like funda's + km option). 0 = the place itself.",
            "default": 0
          },
          "includeProjects": {
            "title": "Include new-build projects",
            "type": "boolean",
            "description": "New-build project overviews (nieuwbouwprojecten) come back as their own rows: price range, units per type, availability, timeline, project website. funda shows them in its for-sale search too.",
            "default": true
          },
          "includeRecreational": {
            "title": "Include holiday homes (recreatie)",
            "type": "boolean",
            "description": "funda's recreational listings (holiday homes, chalets, holiday parks). Off = residential only, like funda's default.",
            "default": false
          },
          "includeAbroad": {
            "title": "Include listings abroad",
            "type": "boolean",
            "description": "funda's European listings (Belgium, Germany, Spain, France...) - use with a foreign place name or \"Nederland\" for all.",
            "default": false
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "updated",
              "newest"
            ],
            "type": "string",
            "description": "Recently updated on funda first, or newest publication date first (exact: the run reads only as far as needed to be sure).",
            "default": "updated"
          },
          "includeMakelaarContact": {
            "title": "Makelaar contact details",
            "type": "boolean",
            "description": "Add the makelaar office's name, phone, email, website, WhatsApp, address, rating and review count to every row.",
            "default": true
          },
          "includeNeighbourhoodData": {
            "title": "Neighbourhood figures",
            "type": "boolean",
            "description": "Add funda's buurt figures: inhabitants, % families with children, average asking price and asking price per m², average days on the market.",
            "default": true
          },
          "language": {
            "title": "Language",
            "enum": [
              "nl",
              "en"
            ],
            "type": "string",
            "description": "Dutch or English labels and characteristic values (funda's own translation). The description stays as the makelaar wrote it.",
            "default": "nl"
          },
          "includeDescription": {
            "title": "Include the description",
            "type": "boolean",
            "description": "The makelaar's full listing text.",
            "default": true
          },
          "descriptionMaxLength": {
            "title": "Cut descriptions at (characters)",
            "minimum": 0,
            "type": "integer",
            "description": "0 = full text.",
            "default": 0
          },
          "includeFeatures": {
            "title": "Include all characteristics",
            "type": "boolean",
            "description": "Every characteristic funda lists (kenmerken), grouped by section, as one object - next to the flat fields.",
            "default": true
          },
          "makelaarListings": {
            "title": "Makelaar office listings",
            "type": "array",
            "description": "For makelaar URLs in the URL list: which of the office's listings to return.",
            "items": {
              "type": "string",
              "enum": [
                "forSale",
                "sold",
                "rentedOut",
                "purchased"
              ],
              "enumTitles": [
                "For sale / for rent now",
                "Sold (with sale date)",
                "Rented out",
                "Purchased for a buyer"
              ]
            },
            "default": [
              "forSale"
            ]
          },
          "maxResultsPerSearch": {
            "title": "Max listings per search",
            "minimum": 0,
            "type": "integer",
            "description": "Cap for each location / URL (0 = no cap per search; the total cap above still applies).",
            "default": 0
          },
          "maxListingsRead": {
            "title": "Max listings to read",
            "minimum": 0,
            "type": "integer",
            "description": "Price, size, rooms, energy-label and feature filters are checked on each listing, so very narrow filters can mean reading many listings per match. 0 = automatic (300 + 25 per listing delivered); set a higher number to search deeper. Listings read but not delivered are never charged.",
            "default": 0
          },
          "monitorMode": {
            "title": "Only new and changed listings",
            "type": "boolean",
            "description": "Remember what earlier runs delivered (same searches) and return only new listings and listings whose price or status changed. Unchanged listings are skipped without being read and are not charged.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional name for the monitor memory, so you can change the inputs and keep the history. Empty = derived from the inputs."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave as is: the actor reads funda directly and switches to Dutch residential proxies by itself only if funda refuses (capped per run). Your own proxy URLs are used first if you add them.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}