{
  "openapi": "3.0.1",
  "info": {
    "title": "Funda in Business Scraper - Commercial Property & Agents",
    "description": "Scrape Funda in Business commercial listings: offices, retail, industrial, catering and more. Full detail pages, pricing, floor areas, energy labels, coordinates, images, and agent/agency contacts with ratings. Dual search and URL modes, deep filters, and forward pagination.",
    "version": "1.0",
    "x-build-id": "6cqOMjHfjTh9OY1HT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~fundainbusiness-nl-commercial-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-fundainbusiness-nl-commercial-property-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/abotapi~fundainbusiness-nl-commercial-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-fundainbusiness-nl-commercial-property-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/abotapi~fundainbusiness-nl-commercial-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-fundainbusiness-nl-commercial-property-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Choose how to start: 'search' uses the location + filter fields below; 'url' scrapes the listing URLs you paste.",
            "default": "search"
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, towns or areas to search, for example Amsterdam, Rotterdam, Utrecht. Each becomes a separate search.",
            "items": {
              "type": "string"
            }
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "all",
              "office",
              "industrial_unit",
              "retail",
              "catering",
              "agribusiness",
              "agricultural_land",
              "building_plot",
              "garage_unit",
              "practice_space",
              "tourism_leisure",
              "sports",
              "cultural",
              "religious",
              "educational",
              "paved_outdoor_area",
              "healthcare",
              "investment",
              "land",
              "social_real_estate",
              "other",
              "residential"
            ],
            "type": "string",
            "description": "Which commercial category to search. As a filter this works in search mode only, where it picks the Funda in Business category page. In URL mode it filters nothing, but its value is still copied onto every record as property.property_type and source_context.search.property_type, so leave it at 'All commercial offerings' unless you want that label.",
            "default": "all"
          },
          "dealType": {
            "title": "Buy or rent",
            "enum": [
              "both",
              "buy",
              "rent"
            ],
            "type": "string",
            "description": "Filter by transaction type. As a filter this works in search mode only. In URL mode it filters nothing, but its value is still copied onto every record as source_context.search.deal_type and is used as the fallback for listing.deal_type when a listing's price text does not say whether it is for sale or for rent, so leave it at 'Both buy and rent' unless you want that label.",
            "default": "both"
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Optional free-text term to narrow results."
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price or rent. For rent this is interpreted with the rent price basis below."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price or rent."
          },
          "rentPriceBasis": {
            "title": "Rent price basis",
            "enum": [
              "per_month",
              "per_year",
              "per_sqm"
            ],
            "type": "string",
            "description": "How rent price bounds are applied (per month, per year, or per square metre).",
            "default": "per_month"
          },
          "minArea": {
            "title": "Minimum floor area (m2)",
            "minimum": 0,
            "type": "integer",
            "description": "Smallest floor area in square metres."
          },
          "maxArea": {
            "title": "Maximum floor area (m2)",
            "minimum": 0,
            "type": "integer",
            "description": "Largest floor area in square metres."
          },
          "publicationDate": {
            "title": "Published within",
            "enum": [
              "any",
              "today",
              "since_3_days",
              "since_5_days",
              "since_10_days",
              "since_30_days"
            ],
            "type": "string",
            "description": "Only listings published within this window.",
            "default": "any"
          },
          "surrounding": {
            "title": "Surrounding context",
            "type": "array",
            "description": "Filter by the type of area the property sits in.",
            "items": {
              "type": "string",
              "enum": [
                "business_park",
                "furniture_boulevard",
                "harbour_area",
                "residential_district",
                "indoor_shopping_centre",
                "large_scale_retail",
                "office_park",
                "navigable_waterway",
                "peripheral_retail",
                "railway_station",
                "rural_area",
                "shopping_centre",
                "town_centre"
              ]
            }
          },
          "amenities": {
            "title": "Property features",
            "type": "array",
            "description": "Require one or more building features.",
            "items": {
              "type": "string",
              "enum": [
                "air_conditioning",
                "built_in_fittings",
                "cable_ducts",
                "concrete_floor",
                "elevator",
                "heater",
                "heating",
                "living_space",
                "loading_bays",
                "mechanical_ventilation",
                "modular_ceiling",
                "overhead_doors",
                "pantry",
                "peak_cooling",
                "skylights",
                "room_layout",
                "showroom",
                "sprinkler",
                "three_phase_power",
                "toilet",
                "openable_windows"
              ]
            }
          },
          "availability": {
            "title": "Availability signals",
            "type": "array",
            "description": "Filter by availability characteristics.",
            "items": {
              "type": "string",
              "enum": [
                "available_now",
                "investment",
                "turnkey"
              ]
            }
          },
          "parking": {
            "title": "Parking capacity",
            "enum": [
              "any",
              "less_than_5",
              "5_plus",
              "10_plus",
              "20_plus",
              "50_plus"
            ],
            "type": "string",
            "description": "Minimum number of parking spaces.",
            "default": "any"
          },
          "constructionType": {
            "title": "Construction type",
            "enum": [
              "any",
              "resale",
              "new"
            ],
            "type": "string",
            "description": "Filter by existing versus new construction.",
            "default": "any"
          },
          "propertyAge": {
            "title": "Construction period",
            "type": "array",
            "description": "Filter by the period the property was built.",
            "items": {
              "type": "string",
              "enum": [
                "before_1906",
                "1906_1930",
                "1931_1944",
                "1945_1959",
                "1960_1970",
                "1971_1980",
                "1981_1990",
                "1991_2000",
                "2001_2010",
                "2011_2020",
                "after_2020"
              ]
            }
          },
          "energyLabel": {
            "title": "Energy label",
            "type": "array",
            "description": "Filter by energy label.",
            "items": {
              "type": "string",
              "enum": [
                "a",
                "b",
                "c",
                "d",
                "e",
                "f",
                "g"
              ]
            }
          },
          "auctionDate": {
            "title": "Auction timing",
            "enum": [
              "any",
              "all",
              "today",
              "next_week",
              "next_month"
            ],
            "type": "string",
            "description": "Filter by upcoming auction window.",
            "default": "any"
          },
          "openDay": {
            "title": "Open day",
            "enum": [
              "any",
              "all",
              "next_weekend",
              "today"
            ],
            "type": "string",
            "description": "Filter by open day availability.",
            "default": "any"
          },
          "includeSoldRented": {
            "title": "Include sold or rented listings",
            "type": "boolean",
            "description": "Also include historical listings that are already sold or rented.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date",
              "city",
              "postcode",
              "address",
              "sale_price",
              "rent_price",
              "area",
              "units"
            ],
            "type": "string",
            "description": "Result ordering.",
            "default": "relevance"
          },
          "urls": {
            "title": "URLs",
            "type": "array",
            "description": "Funda in Business URLs. Search-result pages are paginated forward; single listing URLs are scraped directly. The search-mode filter fields above are ignored here, because they are only sent to the Funda in Business search form. The filter in the next section still applies to a pasted search-result URL.",
            "items": {
              "type": "string"
            }
          },
          "highlighted": {
            "title": "Only highlighted listings",
            "type": "boolean",
            "description": "Return only featured (highlighted) listings. This filter applies in BOTH search mode and URL mode: Funda in Business has no server-side option for it, so the run drops non-featured cards from every result page it walks, including a search-result URL you pasted. A pasted single-listing URL is scraped directly and is never dropped by this filter.",
            "default": false
          },
          "language": {
            "title": "Output language",
            "enum": [
              "nl",
              "en"
            ],
            "type": "string",
            "description": "Language of the listing pages (nl or en).",
            "default": "nl"
          },
          "fetchDetails": {
            "title": "Fetch full detail pages",
            "type": "boolean",
            "description": "Include the full description, all characteristics, coordinates, all images, and the agent phone for each listing. Adds one request per listing.",
            "default": true
          },
          "includeAgencyDetails": {
            "title": "Include agency profile and reviews",
            "type": "boolean",
            "description": "Enrich each listing's agency with contact details, address, ratings and reviews from its profile page. Profiles are fetched once and reused across listings.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum listings to return across the whole run. The single cap: set 0 for unlimited.",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 1,
            "type": "integer",
            "description": "Safety ceiling on result pages walked per search. Leave at the default; the run stops at Max items.",
            "default": 200
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Connection settings. The default works out of the box; you can pin a specific country if needed.",
            "default": {
              "useApifyProxy": true
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify then Settings then API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write. Leave empty to skip; never changes the dataset output. Supported: Notion, Linear, Airtable, Apify.",
            "items": {
              "type": "string",
              "enum": [
                "https://mcp.notion.com/mcp",
                "https://mcp.linear.app/sse",
                "https://mcp.airtable.com/mcp",
                "https://mcp.apify.com"
              ],
              "enumTitles": [
                "Notion",
                "Linear",
                "Airtable",
                "Apify"
              ]
            }
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}