# Daft Property Search Scraper (`stealth_mode/daft-property-search-scraper`) Actor

Scrape property listings from Daft.ie — Ireland's largest property platform — and collect price, bedrooms, BER rating, seller info, media, and 25+ structured fields per listing. Perfect for real estate analysts, investors, and proptech developers.

- **URL**: https://apify.com/stealth\_mode/daft-property-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Daft.ie Property Search Scraper: Extract Irish Property Listings at Scale

---

### What Is Daft.ie?

Daft.ie is Ireland's most widely used property marketplace, covering residential sales, rentals, and commercial properties across the country. It aggregates listings from estate agents, developers, and private sellers, making it a primary source for Irish real estate market data.

Manually collecting property data from Daft.ie is impractical at any meaningful scale. The **Daft.ie Property Search Scraper** automates extraction from search result pages, turning paginated listings into clean, structured datasets ready for analysis or integration.

---

### Overview

This scraper targets Daft.ie property search/listing pages and extracts rich metadata for each property result. It is suited for:

- **Real estate investors** monitoring market pricing by area
- **Proptech developers** building property aggregators or valuation tools
- **Market analysts** tracking supply, pricing trends, and BER distributions
- **Data scientists** building predictive models on Irish property data

---

### Input Format

```json
{
  "urls": ["https://www.daft.ie/property-for-sale/dublin-city?page=2"],
  "ignore_url_failures": true,
  "max_items_per_url": 50
}
````

| Field | Type | Description |
|---|---|---|
| `urls` | `array` of strings | Search result page URLs to scrape. Supports multiple URLs. Use pagination parameters (e.g., `?page=2`) to target specific result pages. Example: `https://www.daft.ie/property-for-sale/dublin-city?page=2` |
| `ignore_url_failures` | boolean | If `true`, the scraper continues running even when individual URLs fail, rather than stopping the entire run. Recommended for bulk jobs. Default: `true` |
| `max_items_per_url` | integer | Maximum number of property listings to collect per URL. Useful for controlling run size and cost. Default: `20` |

> **Tip:** To collect across multiple pages, add each paginated URL separately — e.g., `?page=1`, `?page=2`, etc. You can also target different search filters (rent, sale, location) as separate URLs in the same run.

***

### Output Format

**Sample output**

```json
{
  "id": 5975194,
  "title": "14 Rathdrum Road, Dublin 12, Crumlin, Co. Dublin, D12TK68",
  "seo_title": "14 Rathdrum Road, Dublin 12, Crumlin, Co. Dublin, D12TK68",
  "sections": [
    "Property",
    "Residential",
    "House",
    "Semi-Detached House"
  ],
  "sale_type": [
    "For Sale"
  ],
  "featured_level": "FEATURED",
  "featured_level_full": "PREMIER_PARTNER_FEATURED",
  "publish_date": 1778240018024,
  "category": "Buy",
  "price": "€495,000",
  "abbreviated_price": "€495k",
  "num_bedrooms": "2 Bed",
  "num_bathrooms": "1 Bath",
  "property_type": "Semi-D",
  "daft_shortcode": "15975194",
  "seller": {
    "seller_id": 12545,
    "name": "Karl Russell",
    "phone": "01 2963557",
    "alternative_phone": "087 6246325",
    "profile_image": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsicmVzaXplIjp7ImZpdCI6ImNvdmVyIiwid2lkdGgiOjEwMCwiaGVpZ2h0IjoxMDB9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6ImFcLzFcL2ExZWFhZmU2ODU5ODdjMzhmNWMzNDgyMTY0NjhjMzJmLmpwZyJ9?signature=4acc90a9c898ee077998242e44ace63b67e52bce0f15929a0c44c8ac0de16c88",
    "profile_rounded_image": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsicm91bmRDcm9wIjp0cnVlLCJyZXNpemUiOnsiZml0IjoiY292ZXIiLCJ3aWR0aCI6MTAwLCJoZWlnaHQiOjEwMH19LCJvdXRwdXRGb3JtYXQiOiJwbmciLCJrZXkiOiJhXC8xXC9hMWVhYWZlNjg1OTg3YzM4ZjVjMzQ4MjE2NDY4YzMyZi5qcGcifQ==?signature=7edaa6325dee5a698208f5df01037afca7ebef150916f8b52bf10563be0c14ef",
    "branch": "Russell Estate Agents",
    "address": "7A Drummartin Road,Dublin 14, D14 X8W9",
    "standard_logo": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsicmVzaXplIjp7ImZpdCI6Imluc2lkZSIsImhlaWdodCI6ODB9fSwia2V5IjoiZFwvOVwvZDllODM1OTQxNDIxMDgzYjk5OGEyMTdmMjMxNDM2YzFfc3RhbmRhcmQucG5nIn0=?signature=e865fc9fb34d1eeb9d4fe8d039f42e95cecbb0946e2643bf177bb19c29004cea",
    "square_logo": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsicmVzaXplIjp7ImZpdCI6Imluc2lkZSIsIndpZHRoIjoxMjAsImhlaWdodCI6MTIwfX0sIm91dHB1dEZvcm1hdCI6ImpwZWciLCJrZXkiOiJiXC9lXC9iZWU5NGI2Y2IxNDZmNDcyNmI3ZWYyYjdjZmViMDY3Ny5qcGcifQ==?signature=46fc35d41baeb3a74e45b402f0f773e8baaf4a084687e24878af9df4f8e00d7f",
    "background_colour": "#101431",
    "licence_number": "004544",
    "seller_type": "BRANDED_AGENT",
    "show_contact_form": true,
    "premier_partner_seller": false,
    "seller_available": true
  },
  "date_of_construction": "1940",
  "media": {
    "images": [
      {
        "size720x480": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRoZWFzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsMi12NC5wbmcifSwicmVzaXplIjp7ImZpdCI6ImNvdmVyIiwid2lkdGgiOjcyMCwiaGVpZ2h0Ijo0ODB9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6ImZcLzFcL2YxMGNjN2M4LWY1ODgtNGU0NS05OTBiLTA1Y2ExMzg1NTk3Mi5KUEVHIn0=?signature=60d9db33add601241fd0eb2c0e038a3ef5125bbd698c58e5d5d713cbe11d57d1",
        "size72x52": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRoZWFzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsLXY0LnBuZyJ9LCJyZXNpemUiOnsiZml0IjoiY292ZXIiLCJ3aWR0aCI6NzIsImhlaWdodCI6NTJ9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6ImZcLzFcL2YxMGNjN2M4LWY1ODgtNGU0NS05OTBiLTA1Y2ExMzg1NTk3Mi5KUEVHIn0=?signature=c43ad0441a4f0633ae3ca9f38905ae4973cdb8d2ab0f1f7ae7fdbfea1ce5dc49"
      },
      {
        "size720x480": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRoZWFzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsMi12NC5wbmcifSwicmVzaXplIjp7ImZpdCI6ImNvdmVyIiwid2lkdGgiOjcyMCwiaGVpZ2h0Ijo0ODB9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjBcLzhcLzA4MzYxMGQwLTIwNjQtNDQzMC1iZGY2LWMwYzhjOGMwYzk0Ny5KUEVHIn0=?signature=74e0aaffea34a94a01284a045b2a13b2670b0a3f11a5d8dcbc13689eb8f3d028",
        "size72x52": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRoZWFzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsLXY0LnBuZyJ9LCJyZXNpemUiOnsiZml0IjoiY292ZXIiLCJ3aWR0aCI6NzIsImhlaWdodCI6NTJ9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjBcLzhcLzA4MzYxMGQwLTIwNjQtNDQzMC1iZGY2LWMwYzhjOGMwYzk0Ny5KUEVHIn0=?signature=e255fdbcb449e4d9499432a56926cf072f17ffa635b1a136a7baec9e0d22f7df"
      },
      {
        "size720x480": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRod2VzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsMi12NC5wbmcifSwicmVzaXplIjp7ImZpdCI6ImNvdmVyIiwid2lkdGgiOjcyMCwiaGVpZ2h0Ijo0ODB9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6ImZcLzZcL2Y2ZmVkNzdlLTgwZmYtNDNhNy1iMjMwLTkwMDcxMzM4ZmUyMy5KUEVHIn0=?signature=a89a4ddfeef48c3e99d55571a08817bdd519e9b91152cd278c9188ad25a1a12e",
        "size72x52": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRod2VzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsLXY0LnBuZyJ9LCJyZXNpemUiOnsiZml0IjoiY292ZXIiLCJ3aWR0aCI6NzIsImhlaWdodCI6NTJ9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6ImZcLzZcL2Y2ZmVkNzdlLTgwZmYtNDNhNy1iMjMwLTkwMDcxMzM4ZmUyMy5KUEVHIn0=?signature=72c60549ac4f0bfe83daf51bb0b96e704e0ea2e36bfc36d542715028c94a9df7"
      },
      {
        "size720x480": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRod2VzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsMi12NC5wbmcifSwicmVzaXplIjp7ImZpdCI6ImNvdmVyIiwid2lkdGgiOjcyMCwiaGVpZ2h0Ijo0ODB9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6ImJcLzdcL2I3ZDk5N2EwLTQ3NTMtNDJkOC1iOGQ1LTIxNjVjZTIyZjBlOC5KUEVHIn0=?signature=7fdbdeb11c74e09ab70dca03da5090f6b488488121592350aa7a4562e79bf27b",
        "size72x52": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRod2VzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsLXY0LnBuZyJ9LCJyZXNpemUiOnsiZml0IjoiY292ZXIiLCJ3aWR0aCI6NzIsImhlaWdodCI6NTJ9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6ImJcLzdcL2I3ZDk5N2EwLTQ3NTMtNDJkOC1iOGQ1LTIxNjVjZTIyZjBlOC5KUEVHIn0=?signature=90d7782896f2a7c1f5513b8280d0de90c55ba4434edb4bb7f54ad2103c2ee96b"
      },
      {
        "size720x480": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRoZWFzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsMi12NC5wbmcifSwicmVzaXplIjp7ImZpdCI6ImNvdmVyIiwid2lkdGgiOjcyMCwiaGVpZ2h0Ijo0ODB9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjRcLzBcLzQwMjYyYWNlLWYyNmMtNDU1MC04NTc0LWY0ZDk2MjEwZjU2MS5KUEVHIn0=?signature=45253ecccb357dccbf34541265d0bf312e677aad2b7ceaa08e58234c335e7685",
        "size72x52": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRoZWFzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsLXY0LnBuZyJ9LCJyZXNpemUiOnsiZml0IjoiY292ZXIiLCJ3aWR0aCI6NzIsImhlaWdodCI6NTJ9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjRcLzBcLzQwMjYyYWNlLWYyNmMtNDU1MC04NTc0LWY0ZDk2MjEwZjU2MS5KUEVHIn0=?signature=55f6559b7f67d1c6787f96f454569a66fced320f39859afbafc0a8e1deff717a"
      },
      {
        "size720x480": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRod2VzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsMi12NC5wbmcifSwicmVzaXplIjp7ImZpdCI6ImNvdmVyIiwid2lkdGgiOjcyMCwiaGVpZ2h0Ijo0ODB9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjhcLzJcLzgyMzA3NWNlLWU5NTItNGZmOC1iZjIzLWQxYjU5MmNmYzFlMy5KUEVHIn0=?signature=f09071e505c61686f8d959b7d3927fb37aef3c821be33be7f97fdaa1861f01b2",
        "size72x52": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRod2VzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsLXY0LnBuZyJ9LCJyZXNpemUiOnsiZml0IjoiY292ZXIiLCJ3aWR0aCI6NzIsImhlaWdodCI6NTJ9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjhcLzJcLzgyMzA3NWNlLWU5NTItNGZmOC1iZjIzLWQxYjU5MmNmYzFlMy5KUEVHIn0=?signature=a40027659e93c1b3fcd2984256690b905ee7c15b20fd31832861834b2d5785df"
      },
      {
        "size720x480": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRoZWFzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsMi12NC5wbmcifSwicmVzaXplIjp7ImZpdCI6ImNvdmVyIiwid2lkdGgiOjcyMCwiaGVpZ2h0Ijo0ODB9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjlcL2VcLzllMGI2NDU1LTg3NTEtNGU4Yi1iNzliLTY5MTY0M2I4MTY5ZS5KUEVHIn0=?signature=bb7e8b629d993316bf452cf8fece59cb19971c50fca1882dc538b3d7696ff31c",
        "size72x52": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRoZWFzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsLXY0LnBuZyJ9LCJyZXNpemUiOnsiZml0IjoiY292ZXIiLCJ3aWR0aCI6NzIsImhlaWdodCI6NTJ9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjlcL2VcLzllMGI2NDU1LTg3NTEtNGU4Yi1iNzliLTY5MTY0M2I4MTY5ZS5KUEVHIn0=?signature=2eaae6f28c3b81c7566eed269029f8c0d6c3dd6e5ba0767b2dba2ebf926ba8e3"
      },
      {
        "size720x480": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRod2VzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsMi12NC5wbmcifSwicmVzaXplIjp7ImZpdCI6ImNvdmVyIiwid2lkdGgiOjcyMCwiaGVpZ2h0Ijo0ODB9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjRcLzRcLzQ0M2QzZThlLWY0ZjYtNDlhZi04YWJjLTg2ZTAyMjc2YzE1NC5KUEVHIn0=?signature=b6f0fb929a00b860ff0b3783ad2a4b16f70c03067d24e0c3ed607a6385cb3c93",
        "size72x52": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRod2VzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsLXY0LnBuZyJ9LCJyZXNpemUiOnsiZml0IjoiY292ZXIiLCJ3aWR0aCI6NzIsImhlaWdodCI6NTJ9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjRcLzRcLzQ0M2QzZThlLWY0ZjYtNDlhZi04YWJjLTg2ZTAyMjc2YzE1NC5KUEVHIn0=?signature=01cde0759bd97e9ad784b5067af8809ca127f94572847e271b021d0cc7836dd3"
      },
      {
        "size720x480": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRoZWFzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsMi12NC5wbmcifSwicmVzaXplIjp7ImZpdCI6ImNvdmVyIiwid2lkdGgiOjcyMCwiaGVpZ2h0Ijo0ODB9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjlcLzZcLzk2YWJmYzYwLTQxOGEtNGIxZi1hYTc2LTQ1ZWE3NWMwYzUwMC5KUEVHIn0=?signature=68a04487f89e033439e5143a504cf73ad4db84eea8db5c0c06cdd68addf3a55d",
        "size72x52": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsib3ZlcmxheVdpdGgiOnsiYnVja2V0IjoibWVkaWFtYXN0ZXItczNldSIsIm9wdGlvbnMiOnsiZ3Jhdml0eSI6InNvdXRoZWFzdCJ9LCJrZXkiOiJ3YXRlcm1hcmstZGFmdC1sb2dvLXNtYWxsLXY0LnBuZyJ9LCJyZXNpemUiOnsiZml0IjoiY292ZXIiLCJ3aWR0aCI6NzIsImhlaWdodCI6NTJ9fSwib3V0cHV0Rm9ybWF0IjoianBlZyIsImtleSI6IjlcLzZcLzk2YWJmYzYwLTQxOGEtNGIxZi1hYTc2LTQ1ZWE3NWMwYzUwMC5KUEVHIn0=?signature=5e7f442600478dacb32b70048f598522e95dfdc46951eef0232866aea8cad122"
      }
    ],
    "total_images": 13,
    "has_video": false,
    "has_virtual_tour": false,
    "has_brochure": false
  },
  "ber": {
    "rating": "D1",
    "code": "111268892",
    "epi": "256.73 kWh/m2/yr"
  },
  "platform": "WEB",
  "floor_area": {
    "unit": "METRES_SQUARED",
    "value": "68"
  },
  "property_size": "68 m²",
  "point": {
    "type": "Point",
    "coordinates": [
      -6.290945,
      53.330108
    ]
  },
  "seo_friendly_path": "/for-sale/semi-detached-house-14-rathdrum-road-dublin-12-crumlin-dublin-12/5975194",
  "page_branding": {
    "standard_logo": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsicmVzaXplIjp7ImZpdCI6Imluc2lkZSIsImhlaWdodCI6ODB9fSwia2V5IjoiZFwvOVwvZDllODM1OTQxNDIxMDgzYjk5OGEyMTdmMjMxNDM2YzFfc3RhbmRhcmQucG5nIn0=?signature=e865fc9fb34d1eeb9d4fe8d039f42e95cecbb0946e2643bf177bb19c29004cea",
    "square_logo": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsicmVzaXplIjp7ImZpdCI6Imluc2lkZSIsIndpZHRoIjoxMjAsImhlaWdodCI6MTIwfX0sIm91dHB1dEZvcm1hdCI6ImpwZWciLCJrZXkiOiJiXC9lXC9iZWU5NGI2Y2IxNDZmNDcyNmI3ZWYyYjdjZmViMDY3Ny5qcGcifQ==?signature=46fc35d41baeb3a74e45b402f0f773e8baaf4a084687e24878af9df4f8e00d7f",
    "background_colour": "#101431",
    "square_logos": [
      "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsicmVzaXplIjp7ImZpdCI6Imluc2lkZSIsIndpZHRoIjoxMjAsImhlaWdodCI6MTIwfX0sIm91dHB1dEZvcm1hdCI6ImpwZWciLCJrZXkiOiJiXC9lXC9iZWU5NGI2Y2IxNDZmNDcyNmI3ZWYyYjdjZmViMDY3Ny5qcGcifQ==?signature=46fc35d41baeb3a74e45b402f0f773e8baaf4a084687e24878af9df4f8e00d7f"
    ],
    "rectangle_logo": "https://media.daft.ie/eyJidWNrZXQiOiJtZWRpYW1hc3Rlci1zM2V1IiwiZWRpdHMiOnsicmVzaXplIjp7ImZpdCI6Imluc2lkZSIsImhlaWdodCI6ODB9fSwia2V5IjoiZFwvOVwvZDllODM1OTQxNDIxMDgzYjk5OGEyMTdmMjMxNDM2YzFfc3RhbmRhcmQucG5nIn0=?signature=e865fc9fb34d1eeb9d4fe8d039f42e95cecbb0946e2643bf177bb19c29004cea"
  },
  "state": "PUBLISHED",
  "premier_partner": true,
  "unmatched_ad": true,
  "better_best": true
}
```

Each listing returns a structured record with 29 fields:

#### Identification & SEO

| Field | Meaning |
|---|---|
| `ID` | Unique Daft.ie internal identifier for the listing |
| `Title` | Display title of the property listing |
| `SEO Title` | Search-engine-optimised title used in page metadata |
| `Daft Shortcode` | Short reference code for the listing (e.g., for sharing or support) |
| `SEO Friendly Path` | Relative URL path used in canonical links |

#### Listing Classification

| Field | Meaning |
|---|---|
| `Sections` | Listing section categories (e.g., residential sale, rental) |
| `Sale Type` | Type of transaction: sale, rent, sharing, etc. |
| `Category` | Property category (e.g., house, apartment, site) |
| `Property Type` | Specific property subtype (e.g., semi-detached, terrace, duplex) |
| `State` | Current listing state (e.g., active, sold, under offer) |
| `Platform` | Platform context the listing is served on |

#### Pricing

| Field | Meaning |
|---|---|
| `Price` | Full asking price as displayed (e.g., `€425,000`) |
| `Abbreviated Price` | Shortened price label used in map pins or compact views (e.g., `€425k`) |

#### Property Attributes

| Field | Meaning |
|---|---|
| `Number Bedrooms` | Total number of bedrooms |
| `Number Bathrooms` | Total number of bathrooms |
| `Floor Area` | Interior floor area, typically in m² |
| `Property Size` | Overall property size (may include site/garden area) |
| `Date Of Construction` | Year or period the property was built, where available |
| `BER` | Building Energy Rating — energy efficiency classification (A1–G) required by Irish law for all listed properties |

#### Location

| Field | Meaning |
|---|---|
| `Point` | Geographic coordinates (latitude/longitude) for map display |

#### Seller & Branding

| Field | Meaning |
|---|---|
| `Seller` | Agent or private seller details including name and contact info |
| `Premier Partner` | Whether the listing agent holds Premier Partner status on Daft.ie |
| `Page Branding` | Branding assets associated with the listing's agency page |

#### Featuring & Visibility

| Field | Meaning |
|---|---|
| `Featured Level` | Numeric tier of the listing's featured/promoted status |
| `Featured Level Full` | Full label for the featured tier (e.g., "standard", "featured", "premium") |
| `Publish Date` | Date the listing was first published |
| `Unmatched Ad` | Flag indicating the listing could not be matched to a standard format |
| `Better Best` | Internal flag related to listing quality or ranking signals |

#### Media

| Field | Meaning |
|---|---|
| `Media` | Collection of listing images, floor plans, and virtual tour links |

***

### How to Use

1. **Get search URLs** — Run a property search on Daft.ie (filter by location, type, price, etc.) and copy the results page URL.
2. **Add pagination** — Append `?page=N` to collect across multiple result pages.
3. **Configure input** — Paste URLs into the `urls` array; set `max_items_per_url` to the desired batch size.
4. **Run the scraper** — Start the actor and monitor progress in the run log.
5. **Export** — Download results as JSON, CSV, or Excel.

**Best practices:**

- Keep `ignore_url_failures: true` for multi-URL runs to avoid interruptions from stale or expired search pages.
- Use specific search filters in the URL (county, price range, beds) to pre-filter results before scraping.
- For large market surveys, split by county or property type across multiple URLs.

***

### Use Cases & Business Value

- **Price trend analysis:** Track average asking prices by area, bedroom count, or BER rating over time
- **Investment screening:** Filter for undervalued listings based on size, location, and features
- **Portfolio tools:** Feed structured listing data into property management or CRM systems
- **Academic research:** Study Irish housing market supply and demand patterns

***

### Conclusion

The **Daft.ie Property Search Scraper** turns Ireland's largest property portal into a structured data source. With 29 fields per listing — from BER ratings to geo-coordinates — it provides everything needed for serious property market analysis. Configure your search URLs, set your limits, and extract at scale.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## `proxy` (type: `object`):

Select proxies to be used by your scraper.

## Actor input object example

```json
{
  "urls": [
    "https://www.daft.ie/property-for-sale/dublin-city?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "urls": [
        "https://www.daft.ie/property-for-sale/dublin-city?page=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/daft-property-search-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 = {
    "urls": ["https://www.daft.ie/property-for-sale/dublin-city?page=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/daft-property-search-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.daft.ie/property-for-sale/dublin-city?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call stealth_mode/daft-property-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/daft-property-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Daft Property Search Scraper",
        "description": "Scrape property listings from Daft.ie — Ireland's largest property platform — and collect price, bedrooms, BER rating, seller info, media, and 25+ structured fields per listing. Perfect for real estate analysts, investors, and proptech developers.",
        "version": "0.0",
        "x-build-id": "6yhp6bLd7oQpic92t"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~daft-property-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-daft-property-search-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/stealth_mode~daft-property-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-daft-property-search-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/stealth_mode~daft-property-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-daft-property-search-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": {
                    "urls": {
                        "title": "URLs of the property list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Select proxies to be used by your scraper."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
