Funda in Business Scraper icon

Funda in Business Scraper

Scrape Funda in Business commercial listings: offices, retail, industrial, catering and more. Full detail pages, pricing, floor areas, energy labels,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Funda in Business Scraper at a glance

Funda in Business Scraper is a ready-to-run Apify actor from abotapi for collecting real estate data. Its documented output includes id, title, change type (incremental mode), deal and type, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Real Estate
Region
Europe
Pricing
$1.80 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
38 options

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.

What Funda in Business Scraper can do

  • Dual input modes. Search mode builds listing URLs from location and filter fields. URL mode scrapes the listing or search-result links you already have.
  • Deep filters. Property category, buy or rent, price and area ranges, energy label, construction period, surrounding context, building features, parking, publication date, auction and open day windows, and nine sort orders.
  • Full detail-page enrichment. Complete description, every characteristic grouped by section (transfer, construction, areas, layout, energy), map coordinates, all photos and the listing agent's phone number.
  • Agency profiles with reviews. Opt in to add each listing's agency contact details, address, employee count, average rating and individual reviews.
  • Rich nested output. Pricing, location, property characteristics, media and agency relationships come back as one structured record, not a flat row.
  • Built for schedules. Incremental mode tracks a search over time and returns only new and changed listings on recurring runs, and a rejected run fails loudly instead of returning an empty dataset.

Choose what to collect

These inputs let you configure Funda in Business Scraper - Commercial Property & Agents. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredChoose how to start: 'search' uses the location + filter fields below; 'url' scrapes the listing URLs you paste.

Choices: search, url

locationsarrayCities, towns or areas to search, for example Amsterdam, Rotterdam, Utrecht. Each becomes a separate search. Leave empty to search all of the Netherlands.
propertyTypestringWhich 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.

Choices: 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

dealTypestringFilter 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.

Choices: both, buy, rent

keywordstringOptional free-text term to narrow results.
minPriceintegerLowest price or rent. For rent this is interpreted with the rent price basis below.
maxPriceintegerHighest price or rent.
Show 31 more inputs
More input fields
InputWhat it controls
rentPriceBasisstringHow rent price bounds are applied (per month, per year, or per square metre).

Choices: per_month, per_year, per_sqm

minAreaintegerSmallest floor area in square metres.
maxAreaintegerLargest floor area in square metres.
publicationDatestringOnly listings published within this window.

Choices: any, today, since_3_days, since_5_days, since_10_days, since_30_days

surroundingarrayFilter by the type of area the property sits in.
amenitiesarrayRequire one or more building features.
availabilityarrayFilter by availability characteristics.
parkingstringMinimum number of parking spaces.

Choices: any, less_than_5, 5_plus, 10_plus, 20_plus, 50_plus

constructionTypestringFilter by existing versus new construction.

Choices: any, resale, new

propertyAgearrayFilter by the period the property was built.
energyLabelarrayFilter by energy label.
auctionDatestringFilter by upcoming auction window.

Choices: any, all, today, next_week, next_month

openDaystringFilter by open day availability.

Choices: any, all, next_weekend, today

includeSoldRentedbooleanAlso include historical listings that are already sold or rented.
sortBystringResult ordering.

Choices: relevance, date, city, postcode, address, sale_price, rent_price, area, units

urlsarrayFunda in Business URLs. Search-result pages (category, location, buy/rent, archive, English, or a /pN/ start page) are paginated forward; listing URLs are scraped directly; a project page scrapes the detail page of each listing it links (skipped with a warning when Fetch full detail pages is off), and an agency (makelaar) profile follows the agency's own all-listings page. With several URLs, Max items is split evenly across them. Broker directories and id-only /object-/ links are skipped with a warning. 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.
highlightedbooleanReturn 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.
languagestringLanguage of the listing pages (nl or en).

Choices: nl, en

fetchDetailsbooleanInclude the full description, all characteristics, coordinates, all images, and the agent phone for each listing. Adds one request per listing.
includeAgencyDetailsbooleanEnrich each listing's agency with contact details, address, ratings and reviews from its profile page. Profiles are fetched once and reused across listings.
maxItemsintegerMaximum listings to return across the whole run. The single cap: set 0 for unlimited.
maxPagesintegerSafety ceiling on result pages walked per search. Leave at 0: the run stops at Max items, and a hard cap of 200 pages per search applies in code (values above 1000 are clamped to 1000).
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large crawl of listings without returning or charging for listings already collected there. Use this after an interrupted run, or when continuing a large search in another run. For recurring daily monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns all matching listings as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED listings. Turn on "Emit unchanged" or "Emit expired" only when you also want those listings returned (and billed). State is kept separately for each mode/location/URL and filter setup; use State key when you want to name or deliberately share a monitoring campaign. Compared: every output field (price, status, location, property and detail data and so on); a change makes the row UPDATED and changedFields names the top-level groups that moved. Excluded: scrape time and the listing's position and page number in the results, plus anything you list under Ignore fields below (all stay in the output). To continue one specific interrupted run instead, use Resume from a previous run above.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the mode/location/URL and filter settings -- different searches then never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return listings that have not changed since the last run, marked UNCHANGED. This returns -- and bills -- extra rows you already have, so leave it off unless you specifically want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return listings that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search -- not when Max items capped it or when Resume was used. This returns -- and bills -- extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayIncremental mode only. Field names (or dotted paths such as entity.status or pricing.price) whose changes should NOT turn a listing into UPDATED. The fields stay in the output; they are just left out of the comparison and out of changedFields. The scrape timestamp and the listing's position and page number in the result list are always ignored.
mcpConnectorsarrayOptionally 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.
notionParentPageUrlstringURL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

record_idID
entity.titleTitle
changeTypeChange type (incremental mode) (text)
listing.deal_typeDeal
property.property_typeType
pricing.price_textPrice
property.floor_areaArea m2
property.energy_labelEnergy
location.cityCity
location.latitudeLat
location.longitudeLng
relationships.agency.nameAgency
Show 19 more fields
relationships.agency.phoneAgency phone
entity.urlURL
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
entity.descriptionDescription
property.featuresFeatures
property.usage_typesUsage
property.construction_yearBuilt
media.image_countPhotos
media.main_image_urlMain photo
availability.statusAvailability
availability.available_fromAvailable from
relationships.agency.emailEmail
relationships.agency.websiteWebsite
relationships.agency.addressAddress
relationships.agency.employee_countEmployees
relationships.agency.reviewsReviews
relationships.agency.urlAgency URL

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "record_type": "property_listing",
  "record_id": "00000001",
  "source_context": {
    "source_domain": "fundainbusiness.nl",
    "source_url": "https://www.fundainbusiness.nl/kantoor/amsterdam/object-00000001-sample-street-1/",
    "enrichment_status": "enriched",
    "page_number": 1,
    "position": 1,
    "scraped_at": "2026-01-01T00:00:00+00:00",
    "language": "nl",
    "country": "NL"
  },
  "entity": {
    "title": "Sample Street 1, Amsterdam",
    "description": "Full listing description appears here when Fetch full detail pages is on.",
    "url": "https://www.fundainbusiness.nl/kantoor/amsterdam/object-00000001-sample-street-1/",
    "category": "Office"
  },
  "listing": {
    "deal_type": "rent",
    "offer_type": "rent",
    "is_featured": false,
    "source_category": "Kantoor",
    "available_from": "Per direct beschikbaar"
  },
  "pricing": {
    "price": 3250,
    "currency": "EUR",
    "price_text": "EUR 3.250 /mnd"
  },
  "location": {
    "city": "Amsterdam",
    "region": "Noord-Holland",
    "latitude": 52,
    "longitude": 4
  },
  "property": {
    "property_type": "office",
    "floor_area": 98,
    "energy_label": "A",
    "construction_year": "2020"
  },
  "media": {
    "image_count": 6,
    "image_urls": [
      "https://cloud.funda.nl/valentina_media/000/000/000_1440x960.jpg"
    ]
  },
  "relationships": {
    "agency": {
      "name": "Sample Brokers",
      "url": "https://www.fundainbusiness.nl/makelaar/0000-sample-brokers/",
      "phone": "+310000000000",
      "email": "agent@example.com",
      "reviews": {
        "total": 2,
        "average_score": 8.6,
        "formatted_average_score": "8,6"
      }
    }
  }
}

Ways to use this data

  • Commercial brokers and agencies: track competing listings and new inventory across Dutch cities to spot pricing and availability trends.
  • Investors and asset managers: build a searchable database of office, retail, industrial and investment properties with pricing, area and location for deal sourcing.
  • Market research and PropTech: monitor supply, energy labels and construction periods across the commercial market for reports and models.
  • Lead generation: collect listing agent and agency contact details, plus agency ratings, for outreach.
  • Recurring monitoring: schedule the actor with Incremental mode to catch only new and updated listings in a target market without re-downloading everything each run.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Funda in Business Scraper return?

The documented output for Funda in Business Scraper includes id, title, change type (incremental mode), deal, type, price, area m2 and energy. Availability of each field depends on the source page and the selected mode.

How much does Funda in Business Scraper cost?

It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed listings on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental changes for scheduled runs. Each run then returns only new and updated listings by default, and unchanged ones are not billed.

What is the difference between Resume and Incremental mode?

Resume from a previous run continues one specific interrupted crawl from a pasted run or dataset ID and never repeats what that run already collected. Incremental changes for scheduled runs is for running the same search again and again, for example daily, without pasting anything: the actor remembers the previous run itself and returns only what changed. Use Resume after an interruption, and Incremental mode for ongoing monitoring.

Why did my run fail instead of returning an empty dataset?

If every page fetch for a search was rejected, the run stops with a clear message instead of quietly returning zero listings, so "no listings match this search" is never confused with "nothing could be read." Run it again in a few minutes. In URL mode, a pasted listing URL that comes back as a clean 404 is treated as a normal outcome, the listing was removed or sold, not a failure; only fetches that exhaust every retry count toward that failure message.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push listing summaries into Notion, Linear or Airtable.

Ready to collect with Funda in Business Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.