# Funda In Business Scraper (`nocodeventure/funda-in-business-scraper`) Actor

Our plugin extracts business data from Funda efficiently. Simply enter the starting URL generated by your search query and specify the number of pages you'd like to extract. Please note that our scraper uses a Netherlands-based residential proxy to ensure smooth and reliable performance.

- **URL**: https://apify.com/nocodeventure/funda-in-business-scraper.md
- **Developed by:** [No-Code Venture](https://apify.com/nocodeventure) (community)
- **Categories:** Real estate
- **Stats:** 45 total users, 1 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 🏡 What is Fundainbusiness Real Estate Data Scraper?

Our FundainBusiness.nl Real Estate Data Scraper is a powerful tool designed to extract valuable information from commercial real estate listings on FundainBusiness.nl. With this tool, you can effortlessly search for properties in any location and gather essential data points such as prices, addresses, descriptions, and more.

It's important to note that while web scraping can provide valuable insights, it's crucial to respect copyright rules and terms of service of the websites you scrape. Ensure that you're using the scraped data responsibly and in compliance with legal regulations.

For more information on how to use the scraper and ensure legal compliance, please refer to the documentation and guidelines provided with the tool.

Here's an example of the type of data you can extract with our scraper:

```
{
    "url": "https://www.fundainbusiness.nl/winkel/hilversum/object-43438503-huygensstraat-17-a/",
    "title": "Huygensstraat 17 A",
    "metaDescription": "Winkel Hilversum | Zoek winkels te koop: Huygensstraat 17 A 1222 TJ Hilversum",
    "description": "Tegen het centrum  aan  gelegen hoekwinkelpand  in gebruik  als kapsalon.  Het  NS  station, de markt en horecagelegenheden zijn op  loopafstand  bereikbaar.  Indeling:   Winkel heeft een  verkoopruimte van  ca.  45  m² met toilet en berging, Frontbreedte van ca. 10 meter  Voorzien van een c.v. installatie en systeemplafonds inclusief verlichting.  Vigerend bestemmingsplan: Over 't Spoor. Bestemming: Gemengd-1, d.w.z. dienstverlening, wonen en bedrijven. Functieaanduiding is detailhandel.   Indien de functie wordt gewijzigd is dat vergunningsplichtig en daarmee betreft het een toekomstige ontwikkeling  (Parkeerbeleid Hilversum 2023).  Dit betekent dat in elk plan parkeren opgelost dient te worden op eigen terrein. Dit kan zijn op het betreffende perceel zelf, of als dit niet kan op een terrein elders. Ook is het mogelijk om een deel van de parkeereis (de berekende parkeervraag) af te kopen.",
    "price": "€ 145.000 k.k.",
    "vraagPrijs": "€ 145.000 kosten koper",
    "status": "Beschikbaar",
    "aanvaarding": "In overleg",
    "eigendomssituatie": "",
    "hoofdfunctie": "Winkel met showroom",
    "soortBouw": "Bestaande bouw",
    "bouwjaar": "1929",
    "oppervlakte": "45 m²",
    "bedrijfshalOppervlak": "",
    "voorzieningen": "",
    "energielabel": "D",
    "ligging": "In woonwijk",
    "bereikbaarheid": "",
    "buurtNaam": "Johannes Geradtswegbuurt, Hilversum",
    "constructionDetails": {
        "hoofdfunctie": "Winkel met showroom",
        "soort_bouw": "Bestaande bouw",
        "bouwjaar": "1929"
    },
    "amenities": {
        "treinstation": "Treinstation",
        "bushalte": "Bushalte",
        "supermarkt": "Supermarkt"
    },
    "surfaceDetails": {
        "oppervlakte": "45 m²",
        "verkoopvloeroppervlakte": "45 m²",
        "breedte_gevel": "10 m"
    },
    "transferDetails": {
        "vraagprijs": "€ 145.000 kosten koper",
        "aangeboden_sinds": "",
        "status": "Beschikbaar",
        "aanvaarding": "In overleg"
    },
    "indelingDetails": {
        "aantal_bouwlagen": "1 bouwlaag"
    },
    "objectNumber": "43438503"
}
```

### Pricing Model — Pay Per Event

This Actor uses **Pay Per Event (PPE)** pricing. You are charged based on what the Actor actually does, not by compute time.

| What you pay for | When |
|------------------|------|
| **Property saved** (primary) | Each property record written to the dataset |
| **Browser page load** | Each search results page or property detail page opened |
| **Proxy setup** | Once per run when proxy is enabled |
| **Proxy per record** | Each property saved when proxy is active |
| **Memory above 2 GB** | Once per run — 1 charge per GB above the 2 GB baseline (supports up to 32 GB) |
| **Media image** | Each property/makelaar image URL extracted (when **Retrieve images** is enabled) |
| **Actor start** | Automatically on each run (synthetic event) |

**Search URL flow:** Each listing page + each property detail page incurs a page-load charge. Each property saved incurs a dataset item charge (primary).

For the full list of events, triggers, and Console setup, see [docs/PPE_BILLING_EVENTS.md](docs/PPE_BILLING_EVENTS.md).

Event prices are set in the Apify Console — they are not listed here.

For best results on the Apify platform, use 4096 MB or higher memory when running this browser-based Actor.

### Resources

If you're looking for examples or want to learn more visit:

- [Crawlee + Apify Platform guide](https://crawlee.dev/docs/guides/apify-platform)
- [Documentation](https://crawlee.dev/api/playwright-crawler/class/PlaywrightCrawler) and [examples](https://crawlee.dev/docs/examples/playwright-crawler)
- [Node.js tutorials](https://docs.apify.com/academy/node-js) in Academy
- [Scraping single-page applications with Playwright](https://blog.apify.com/scraping-single-page-applications-with-playwright/)
- [How to scale Puppeteer and Playwright](https://blog.apify.com/how-to-scale-puppeteer-and-playwright/)
- [Integration with Zapier](https://apify.com/integrations), Make, GitHub, Google Drive and other apps
- [Video guide on getting scraped data using Apify API](https://www.youtube.com/watch?v=ViYYDHSBAKM)
- A short guide on how to build web scrapers using code templates:

[web scraper template](https://www.youtube.com/watch?v=u-i-Korzf8w)

# Actor input Schema

## `URL` (type: `string`):

Enter the base URL for the website you wish to crawl.

## `maxPages` (type: `integer`):

Maximum number of listing pages to crawl. Set to 0 for unlimited.

## `maxListings` (type: `integer`):

Maximum number of property listings to scrape. Set to 0 for unlimited.

## `retrieveImages` (type: `boolean`):

Extract property and makelaar image URLs from cloud.funda.nl. Each image is a separate pay-per-event charge when enabled.

## `proxyConfiguration` (type: `object`):

Configure proxy settings for the scraper.

## Actor input object example

```json
{
  "URL": "https://www.fundainbusiness.nl/alle-bedrijfsaanbod/hilversum/koop/100000-750000/+5km/",
  "maxPages": 1,
  "maxListings": 1,
  "retrieveImages": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "NL"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "URL": "https://www.fundainbusiness.nl/alle-bedrijfsaanbod/hilversum/koop/100000-750000/+5km/",
    "maxPages": 1,
    "maxListings": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("nocodeventure/funda-in-business-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "URL": "https://www.fundainbusiness.nl/alle-bedrijfsaanbod/hilversum/koop/100000-750000/+5km/",
    "maxPages": 1,
    "maxListings": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("nocodeventure/funda-in-business-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "URL": "https://www.fundainbusiness.nl/alle-bedrijfsaanbod/hilversum/koop/100000-750000/+5km/",
  "maxPages": 1,
  "maxListings": 1
}' |
apify call nocodeventure/funda-in-business-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nocodeventure/funda-in-business-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/RQr9qvPB8l7TBMI0Q/builds/zyMgvcgPkFds2TCfY/openapi.json
