# Pararius Listings Scraper ($1/1K) (`carabain-digital/pararius-listings`) Actor

Scrape Dutch rental and sale listings from Pararius (pararius.nl and .com): price, address, living area, rooms, energy label, agent and photos. Filter by city, price, type, rooms and size, newest first. Optional full details and price history.

- **URL**: https://apify.com/carabain-digital/pararius-listings.md
- **Developed by:** [Carabain Digital](https://apify.com/carabain-digital) (community)
- **Categories:** Real estate, Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.75 / 1,000 listings

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 Pararius Listings Scraper?

**Pararius Listings Scraper** scrapes **Dutch rental and sale listings from Pararius ([pararius.nl](https://www.pararius.nl))** and returns clean, flat listing data as JSON, CSV, Excel, XML or HTML: asking price, full address, living area, rooms, energy label, agent, photos and more. Search by **city, price range, property type, rooms and living area**, or paste any search URL you built on the site. Prefilled example: 20 newest rental listings in Amsterdam. Costs **$1.00 per 1,000 listings** (plus a small start fee). Add-ons: full details for $3.00 per 1,000 and price history for $1.00 per 1,000.

- 🔎 **Search like on the site**: city, min/max price, property type, rooms, living area, or your own search URLs
- 🆕 **Newest first**: Pararius lists the newest first (its own default order)
- 🧩 **One real-estate schema**: the same field names as our other property scrapers (NL and BE), so datasets line up
- 📚 **Full details on demand**: switch on **Full details** for description, all photos, coordinates, bedrooms, bathrooms, energy label, build year and agent phone
- 📈 **Price history on demand**: switch on **Price history** to see what changed since your last run
- 🔌 **Connect anywhere**: API, schedules, webhooks, Google Sheets, Make, Zapier, MCP / AI agents

#### What data can I extract from Pararius?

<table>
<tr><td>🆔 Stable listing ID and URL</td><td>💶 Asking price or monthly rent</td></tr>
<tr><td>📍 Address, postcode, city</td><td>🏠 Property type and status</td></tr>
<tr><td>📐 Living area</td><td>🛏 Rooms and bedrooms</td></tr>
<tr><td>⚡ Energy label</td><td>📅 Date listed</td></tr>
<tr><td>🧑‍💼 Agent name and link</td><td>🖼 Photos</td></tr>
<tr><td>📖 Description (add-on)</td><td>🗺 Coordinates (add-on)</td></tr>
</table>

Fields the site does not publish for a listing stay `null`. Every item has the same keys, so exports line up. Pararius cards do not show the date listed, coordinates, bedrooms or energy label: those come with the **Full details** add-on. Some rental agents hide the house number.

#### How do I scrape Pararius listings?

1. [Create a free Apify account](https://console.apify.com/sign-up) and open this Actor.
2. Enter a **Location** (for example `Amsterdam`) and choose **For sale** or **For rent**, or paste your own **Start URLs** from pararius.nl.
3. Optionally set a price range, property type, minimum rooms and living area, and **Max listings**.
4. Optionally switch on **Full details** and/or **Price history**.
5. Click **Start**, then download the listings from the **Output** tab as JSON, CSV, Excel, XML or HTML.

#### How much does it cost to scrape Pararius?

You pay per listing that ends up in your dataset: **$1.00 per 1,000 listings**, plus a small start fee of $0.025 per GB of run memory (the Actor needs a real browser; the default 2 GB run costs $0.05 to start). No subscription. The monthly credit of Apify's Free plan ($5) covers roughly 4,000 to 5,000 listings without add-ons. Paid plans get volume discounts.

- **Add-on: Full details, $3.00 per 1,000 listings** (off by default). Opens every listing's detail page: the full description, all photos, coordinates, the date listed, bedrooms, bathrooms, plot area, energy label, build year and the agent's phone number (shown on sale listings). Charged only for listings that were actually enriched. It is slower (about 3 seconds per listing) and costs more because every detail page is a full browser page load through a residential proxy.
- **Add-on: Price history, $1.00 per 1,000 listings** (off by default). Keeps a price and status history per listing in your own account; see below. Charged only for listings that already had a history (the first run is free).
- Failed runs and empty searches cost nothing; you can cap spending with **Maximum cost per run** in the run options.

See the **Pricing** tab for the current prices.

#### ⬇️ Input

| Field | Description |
|---|---|
| **Location** (`location`) | City or place, as Pararius spells it. Empty = all of the Netherlands |
| **Listing type** (`listing_type`) | `rent` (default) or `sale` |
| **Min / Max price** (`min_price`, `max_price`) | Asking price, or rent per month, in euro |
| **Property type** (`property_type`) | `any`, `apartment`, `house`, `studio` or `room` |
| **Min rooms** (`min_rooms`) | At least this many rooms |
| **Min living area** (`min_living_area_m2`) | At least this many m2 |
| **Start URLs** (`start_urls`) | Search URLs copied from pararius.nl; they replace the filter fields |
| **Max listings** (`limit`) | Stop after this many listings (newest first) |
| **Full details** (`includeDetails`) | Paid add-on: detail page data |
| **Price history** (`trackHistory`, `historyStoreName`) | Paid add-on: history in your own named store |
| **Proxy** (`proxyConfiguration`) | Apify RESIDENTIAL, country NL (default). Pararius blocks data-center IPs |

```json
{
    "location": "Amsterdam",
    "listing_type": "rent",
    "max_price": 2000,
    "limit": 20,
    "includeDetails": false,
    "trackHistory": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "NL"
    }
}
```

Pararius is mostly a rental site; sale listings (`koopwoningen`) are supported too. Search URLs from pararius.nl and pararius.com both work (copy the URL of any search, with its filters, e.g. `https://www.pararius.nl/huurwoningen/amsterdam/1000-2000/50m2`). The site has no URL option for sorting, so you always get its default order, newest first. Pararius's own "Uitgelicht" (featured) ads are skipped. `min_rooms` is applied by the Actor after the search (the site has no rooms filter, only bedrooms).

#### ⬆️ Output

Listings are stored in the default dataset, newest first. View them as a table in the **Output** tab or export JSON, CSV, Excel, XML or HTML.

##### Listing from the search results

```json
{
    "id": "pararius:ff07b7b9-47ee-57b3-83fd-43413a381027",
    "source": "pararius",
    "url": "https://www.pararius.nl/appartement-te-huur/amsterdam/ff07b7b9/sint-nicolaasstraat",
    "title": "Appartement Sint Nicolaasstraat 27 A",
    "listing_type": "rent",
    "property_type": "apartment",
    "status": "available",
    "price": 1228,
    "price_currency": "EUR",
    "price_period": "month",
    "price_type": "asking",
    "address": "Sint Nicolaasstraat 27 A, 1012NJ Amsterdam",
    "street": "Sint Nicolaasstraat",
    "house_number": "27 A",
    "postcode": "1012NJ",
    "city": "Amsterdam",
    "region": null,
    "country": "NL",
    "lat": null,
    "lon": null,
    "living_area_m2": 48,
    "plot_area_m2": null,
    "rooms": 2,
    "bedrooms": null,
    "bathrooms": null,
    "energy_label": null,
    "construction_year": 1924,
    "listed_at": null,
    "agent_name": "GoHome",
    "agent_phone": null,
    "agent_url": "https://www.pararius.nl/makelaars/amsterdam/gohome",
    "image_urls": [
        "https://casco-media-prod.global.ssl.fastly.net/listings/api/media/ff07b7b9-47ee-57b3-83fd-43413a381027/bdfdccf..."
    ],
    "description": null,
    "scraped_at": "2026-10-30T15:05:57+00:00",
    "neighbourhood": "Burgwallen-Nieuwe Zijde",
    "furnishing": null,
    "details_fetched": false
}
```

##### The same kind of listing with the Full details add-on

```json
{
    "id": "pararius:1ea4cd7a-713b-50cf-963a-ea68a6a5aee2",
    "source": "pararius",
    "url": "https://www.pararius.nl/appartement-te-huur/utrecht/1ea4cd7a/prinses-ireneplateau",
    "title": "Appartement Prinses Ireneplateau 24",
    "listing_type": "rent",
    "property_type": "apartment",
    "status": "available",
    "price": 1995,
    "price_currency": "EUR",
    "price_period": "month",
    "price_type": "asking",
    "address": "Prinses Ireneplateau 24, 3554HW Utrecht",
    "street": "Prinses Ireneplateau",
    "house_number": "24",
    "postcode": "3554HW",
    "city": "Utrecht",
    "region": null,
    "country": "NL",
    "lat": 52.116341535,
    "lon": 5.088146502,
    "living_area_m2": 79,
    "plot_area_m2": null,
    "rooms": 3,
    "bedrooms": 2,
    "bathrooms": null,
    "energy_label": "A+",
    "construction_year": 2004,
    "listed_at": "2026-10-29",
    "agent_name": "123Wonen Utrecht",
    "agent_phone": "+31307603394",
    "agent_url": "https://www.pararius.nl/makelaars/utrecht/123wonen-utrecht",
    "image_urls": [
        "https://casco-media-prod.global.ssl.fastly.net/listings/api/media/1ea4cd7a-713b-50cf-963a-ea68a6a5aee2/9a59490...",
        "https://casco-media-prod.global.ssl.fastly.net/listings/api/media/1ea4cd7a-713b-50cf-963a-ea68a6a5aee2/ac70ff2..."
    ],
    "description": "Wonen Dé verhuurmakelaar van Utrecht biedt aan voor 12 maanden:\n\nModern en volledig gemeubileerd 3-kamerappartement met privéparkeerplaats en heerlijk uitzicht...",
    "scraped_at": "2026-10-30T15:07:24+00:00",
    "neighbourhood": "Schaakbuurt en omgeving",
    "furnishing": "Gemeubileerd",
    "details_fetched": true
}
```

`status` is `available` unless Pararius marks the listing as under option (`under_offer`), rented or sold; `price_period` is `month` for rentals.

#### Price history: track price and status changes

Switch on **Price history** (`trackHistory`) to follow listings over time. The Actor keeps a small history record per listing in a **named key-value store in your own Apify account** (default name `realestate-history`; change it with `historyStoreName`). We run no database and hold none of your data.

- **The first run starts the series.** Listings seen for the first time are not charged for the add-on; they only get a first record.
- **Every later run** adds `first_seen_at`, `previous_price`, `price_change`, `price_change_pct`, `status_changed` and `price_history` (the last 20 price/status points) to each listing you saw before. A point is only stored when the price or the status changed.
- **Schedule it**: run the same search daily or weekly with the same store name and you get a price-drop and sold/rented feed. Use the same store name in our other real-estate Actors to share one history.
- **Do not run two runs on the same store at the same time**: the last writer wins per record, so a point can get lost. Run them one after another.
- If you delete the store, history silently starts empty again (the Actor logs it).

#### What can I do with Pararius data?

- 📈 **Market research**: track asking prices and rents per city, neighbourhood or property type over time
- 🔔 **Alerts and feeds**: send new listings and price drops to Slack, e-mail or your own site
- 🏢 **Investors and agents**: find new listings, compare price per m2, benchmark competitors
- 🧠 **AI and analytics**: feed descriptions and attributes into valuation models or LLM pipelines

#### Tips for best results

- Keep the proxy on **RESIDENTIAL / NL**. Cloudflare protects Pararius; the Actor solves the browser check itself and retries on a fresh IP when one gets stuck.
- For a daily feed, schedule a run with a high **Max listings** and **Price history** on; the newest listings come first.
- Leave **Full details** off for monitoring and counting; switch it on when you need descriptions, coordinates or all photos.
- Very large searches (a whole country) are best split by city or price range.
- Pararius serves at most about 60-100 result pages per search: for a full national crawl run one search per city.

#### Frequently asked questions

##### Can I use Pararius Listings Scraper with the Apify API?

Yes. Every run has a dataset you can read through the [Apify API](https://docs.apify.com/api/v2). Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("carabain-digital/pararius-listings").call(run_input={
    "location": "Amsterdam",
    "listing_type": "rent",
    "limit": 100,
})
for home in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(home["price"], home["address"])
```

JavaScript:

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

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('carabain-digital/pararius-listings').call({
    location: 'Amsterdam',
    listing_type: 'rent',
    limit: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'listings');
```

##### Can I use Pararius Listings Scraper through an MCP server or with AI agents?

Yes. Add it to an AI agent through the [Apify MCP server](https://mcp.apify.com) (`https://mcp.apify.com?tools=carabain-digital/pararius-listings`), or let the agent find it with `search-actors` and run it with `call-actor`. A small search (`limit` 20) is the Actor's prefilled example; because it starts a real browser it takes about 15 to 60 seconds to start the browser and pass Cloudflare, longer than the agent's default wait, so the agent polls the run and then reads the flat, small dataset items with `get-dataset-items`. Example prompt: *"Use Pararius Listings Scraper to find the 20 newest rental listings in Amsterdam and summarise the price range per neighbourhood."*

##### Can I integrate Pararius data with other apps?

Yes: Google Sheets, Slack, Make, Zapier, n8n, Airtable or your own webhook, through Apify [integrations](https://apify.com/integrations) and [webhooks](https://docs.apify.com/platform/integrations/webhooks). Schedule runs to keep the data fresh.

##### Why is a field empty?

Pararius search cards show price, address, living area, rooms, agent and one photo. Coordinates, the date listed, bedrooms, bathrooms, plot area, energy label, build year, the full description, all photos and (for sale listings) the agent phone come from the listing page and are only filled with the **Full details** add-on. Rental listings do not show a phone number at all. Some agents hide the house number, so `house_number` can be `null`.

##### Why does a run take a minute to start, and why is a proxy needed?

Pararius sits behind a Cloudflare check that only a real browser passes, and it blocks data-center IPs. The Actor therefore starts a stealth browser on an Apify residential proxy in the Netherlands, which takes 15 to 60 seconds, and keeps it open for the whole run. If Cloudflare does not let one IP through, the Actor retries on a fresh one (up to 4 times).

##### Do I get duplicates?

Within one run every listing appears once (by Pararius ID). The same home is often advertised by several agents or on several portals (Funda, Pararius), under different IDs; match on postcode and house number to deduplicate across sites, or use our Netherlands Real Estate Scraper, which does it for you.

##### Is it legal to scrape Pararius?

The Actor only collects publicly visible listing data, the same information anyone can see on pararius.nl. Listings can contain personal data (for example an agent's name or phone number), and rules such as GDPR may apply to how you store and use it. Check your use case with a lawyer. More background: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

##### Pararius Listings Scraper not working? Feedback

Open an issue on the **Issues** tab of this Actor with the run link and we will look at it. Feature ideas are welcome there too.

#### Other scrapers by us

| Actor | Covers |
|---|---|
| [Zimmo Listings Scraper](https://apify.com/carabain-digital/zimmo-listings) | Belgium: zimmo.be, homes for sale and rent with price history |
| [Immoweb Listings Scraper](https://apify.com/carabain-digital/immoweb-listings) | Belgium: immoweb.be, the largest Belgian property portal |
| [Immovlan Listings Scraper](https://apify.com/carabain-digital/immovlan-listings) | Belgium: immovlan.be |
| [Huislijn Listings Scraper](https://apify.com/carabain-digital/huislijn-listings) | Netherlands: huislijn.nl |
| [Netherlands Real Estate Scraper](https://apify.com/carabain-digital/netherlands-real-estate) | Huislijn and Pararius in one run, merged and deduplicated |

⭐ **Does it work well for you?** A review on the Store page helps others find this Actor and helps us keep it maintained.

# Actor input Schema

## `location` (type: `string`):

City or place name as Pararius spells it. Example: `Amsterdam`, `Den Haag`, `Utrecht`. Leave empty for all of the Netherlands. Ignored when you give Start URLs.

## `listing_type` (type: `string`):

Search homes `rent` or `sale`. Example: `rent`. Ignored when you give Start URLs.

## `min_price` (type: `integer`):

Lowest asking price in euro (rent per month for rentals). Example: `1000` (rent) or `250000` (sale).

## `max_price` (type: `integer`):

Highest asking price in euro (rent per month for rentals). Example: `2000` (rent) or `500000` (sale).

## `property_type` (type: `string`):

Only this type of home. Example: `apartment`. `any` returns every type.

## `min_rooms` (type: `integer`):

Only homes with at least this many rooms (living room included). Example: `3`.

## `min_living_area_m2` (type: `integer`):

Only homes with at least this living area in square metres. Example: `60`.

## `start_urls` (type: `array`):

Search result URLs copied from pararius.nl (with your own filters). They replace the filter fields above. Example: `https://www.pararius.nl/huurwoningen/amsterdam/1000-2000`.

## `limit` (type: `integer`):

Stop after this many listings (newest first). Example: `100`. Up to 10,000, split very large searches by city or price range.

## `includeDetails` (type: `boolean`):

Also open each listing's detail page: full description, all photos, coordinates, date listed, bedrooms, bathrooms, plot area, energy label, build year and the agent phone (sale listings). Adds $3.00 per 1,000 listings on top of the base price. Slower: about 3 seconds per listing.

## `trackHistory` (type: `boolean`):

Keep a price and status history per listing in a named storage in your own account and add `previous_price`, `price_change`, `price_change_pct`, `status_changed` and `price_history` to every listing you have scraped before. Adds $1.00 per 1,000 listings that already had history (the first run only starts the series). Do not run two runs on the same store at once.

## `historyStoreName` (type: `string`):

Name of the key-value store that holds the history (a-z, 0-9 and dashes). Use the same name in all our real-estate Actors to share one history. Example: `realestate-history`.

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

Pararius blocks data-center IPs: keep Apify RESIDENTIAL proxy with country NL (the default).

## Actor input object example

```json
{
  "location": "Amsterdam",
  "listing_type": "rent",
  "property_type": "any",
  "limit": 20,
  "includeDetails": false,
  "trackHistory": false,
  "historyStoreName": "realestate-history",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "NL"
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

All scraped listings, one item per property.

# 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 = {
    "location": "Amsterdam",
    "limit": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "NL"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("carabain-digital/pararius-listings").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 = {
    "location": "Amsterdam",
    "limit": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "NL",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("carabain-digital/pararius-listings").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 '{
  "location": "Amsterdam",
  "limit": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "NL"
  }
}' |
apify call carabain-digital/pararius-listings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,carabain-digital/pararius-listings"
        }
    }
}
```

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/xzgAarMim5y10R6MR/builds/2PmNtJ6zPtFLtabPc/openapi.json
