# Daft.ie Property Scraper (`shahidirfan/daft-ie-property-scraper`) Actor

Scrape Daft.ie property listings instantly. Extract prices, descriptions, agent contacts, and images from Ireland's top real estate portal. Perfect for market analysis, price monitoring, and lead generation across all property types.

- **URL**: https://apify.com/shahidirfan/daft-ie-property-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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 Scraper

Extract property listings and single property details from Daft.ie into clean, structured datasets. Collect pricing, property attributes, seller information, and listing metadata at scale for research, monitoring, and analysis workflows.

### Features

- **URL-first scraping** — Run from listing URLs or direct property URLs.
- **Messy URL handling** — Normalizes malformed and tracking-heavy URL inputs automatically.
- **Pagination control** — Set exact page and result limits.
- **Clean datasets** — Null and empty values are removed automatically.
- **Detail-ready output** — Single property URLs return enriched property records.

### Use Cases

#### Market Research
Track asking prices, property types, and listing trends by location to understand local market movements.

#### Lead Generation
Build organized property datasets for agencies, broker teams, and investment pipelines.

#### Property Monitoring
Watch specific areas or search terms over time and feed updates into dashboards.

#### Competitive Intelligence
Compare listing volume, pricing patterns, and seller activity across locations.

#### Data Enrichment
Combine property records with your internal CRM or analytics data for deeper insights.

---

### Input Parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `propertyUrls` | Array | No | `["https://www.daft.ie/property-for-sale/ireland/houses"]` | One or more Daft.ie listing/search/detail URLs. |
| `results_wanted` | Integer | No | `20` | Maximum number of records to save. |
| `max_pages` | Integer | No | `3` | Maximum listing pages per search URL. |
| `proxyConfiguration` | Object | No | Apify Proxy enabled | Proxy settings for stable production runs. |

---

### Output Data

| Field | Type | Description |
|---|---|---|
| `id` | Integer | Daft listing ID. |
| `daftShortcode` | String | Short listing reference code. |
| `title` | String | Property title. |
| `price` | String | Listing price text. |
| `propertyType` | String | Property type label. |
| `numBedrooms` | String | Bedroom count text. |
| `numBathrooms` | String | Bathroom count text. |
| `publishDate` | String | Publish date in ISO format when available. |
| `sellerName` | String | Seller or agency name. |
| `sellerPhone` | String | Seller contact phone when available. |
| `imageCover` | String | Main large image URL. |
| `imageGallery` | Array | Large image gallery URLs only. |
| `imageCount` | Integer | Total image count from source. |
| `hasVideo` | Boolean | Video availability flag. |
| `hasVirtualTour` | Boolean | Virtual tour availability flag. |
| `url` | String | Property URL. |
| `sourceType` | String | Record source (`search` or `detail`). |
| `sourceUrl` | String | Input URL that produced the record. |
| `search` | Object | Search context derived from input URL. |

---

### Usage Examples

#### Basic URL Run

```json
{
    "propertyUrls": [
        "https://www.daft.ie/property-for-sale/ireland/houses"
    ],
    "results_wanted": 20,
    "max_pages": 2
}
````

#### Keyword + Location Run

```json
{
    "propertyUrls": [
        "www.daft.ie/property-for-sale/dublin-city/houses?page=2&utm_source=test"
    ],
    "results_wanted": 30,
    "max_pages": 3
}
```

#### Single Property Detail Run

```json
{
    "propertyUrls": [
        "https://www.daft.ie/for-sale/house-braemar-cottage-texas-lane-malahide-co-dublin/6538518"
    ],
    "results_wanted": 1
}
```

***

### Sample Output

```json
{
    "id": 6538518,
    "daftShortcode": "16538518",
    "title": "Braemar Cottage, Texas Lane, Malahide, Co. Dublin, K36VR02",
    "price": "€1,750,000",
    "propertyType": "Detached House",
    "numBedrooms": "5 Bed",
    "numBathrooms": "4 Bath",
    "publishDate": "2026-04-21T21:47:12.000Z",
    "sellerName": "Example Auctioneers",
    "imageCover": "https://media.daft.ie/...size1440x960...",
    "imageGallery": [
        "https://media.daft.ie/...size1440x960..."
    ],
    "url": "https://www.daft.ie/for-sale/house-braemar-cottage-texas-lane-malahide-co-dublin/6538518",
    "sourceType": "detail",
    "sourceUrl": "https://www.daft.ie/for-sale/house-braemar-cottage-texas-lane-malahide-co-dublin/6538518"
}
```

***

### Tips for Best Results

#### Start with Working URLs

- Use live Daft.ie listing URLs for fastest validation.
- Mix listing URLs and detail URLs to cover both output modes.

#### Keep Runs Efficient

- Use `results_wanted: 20` for quick checks.
- Increase `max_pages` only when you need broader coverage.

#### Use Working URL Variants

- You can pass full URLs, `www.daft.ie/...`, or URLs with tracking parameters.
- The actor normalizes messy URL formats automatically.

#### Use Proxy for Reliability

- Keep Apify Proxy enabled for larger runs.
- Residential proxy groups improve consistency during busy periods.

***

### Integrations

Connect your data with:

- **Google Sheets** — Build live market trackers.
- **Airtable** — Create searchable property databases.
- **Make** — Automate downstream workflows.
- **Zapier** — Trigger actions from fresh listings.
- **Webhooks** — Push data to custom systems.

#### Export Formats

- **JSON** — Best for APIs and backend systems.
- **CSV** — Ideal for spreadsheets and BI tools.
- **Excel** — Great for reporting and sharing.
- **XML** — Useful for legacy integrations.

***

### Frequently Asked Questions

#### Can I scrape both listing pages and single property pages?

Yes. Add listing/search URLs and direct property URLs in `propertyUrls`.

#### What happens when duplicate properties appear across pages?

Duplicates are automatically removed using the listing ID.

#### Can I control how many records are returned?

Yes. Use `results_wanted` to set the maximum output size.

#### How is pagination controlled?

Use `max_pages` to limit how many listing pages are processed per search URL.

#### Why are some optional fields missing in output?

Fields are included only when the source provides a non-empty value.

#### Can I run with messy or tracking URLs?

Yes. The actor auto-normalizes malformed and tracking-heavy Daft URLs.

***

### Support

For issues or feature requests, contact support through the Apify Console.

#### Resources

- [Apify Documentation](https://docs.apify.com/)
- [Apify API Reference](https://docs.apify.com/api/v2)
- [Scheduling Runs](https://docs.apify.com/platform/schedules)

***

### Legal Notice

This actor is designed for legitimate data collection. Users are responsible for complying with Daft.ie terms, local laws, and all applicable data usage regulations.

# Actor input Schema

## `propertyUrls` (type: `array`):

Add one or more Daft.ie URLs. Supports listing/search/detail URLs and messy URL formats.

## `results_wanted` (type: `integer`):

Maximum number of properties to save.

## `max_pages` (type: `integer`):

Maximum number of listing pages to process per search URL.

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

Use Apify Proxy for stable production runs.

## Actor input object example

```json
{
  "propertyUrls": [
    "https://www.daft.ie/property-for-sale/ireland/houses"
  ],
  "results_wanted": 20,
  "max_pages": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "propertyUrls": [
        "https://www.daft.ie/property-for-sale/ireland/houses"
    ],
    "results_wanted": 20,
    "max_pages": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/daft-ie-property-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 = {
    "propertyUrls": ["https://www.daft.ie/property-for-sale/ireland/houses"],
    "results_wanted": 20,
    "max_pages": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/daft-ie-property-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 '{
  "propertyUrls": [
    "https://www.daft.ie/property-for-sale/ireland/houses"
  ],
  "results_wanted": 20,
  "max_pages": 3
}' |
apify call shahidirfan/daft-ie-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Daft.ie Property Scraper",
        "description": "Scrape Daft.ie property listings instantly. Extract prices, descriptions, agent contacts, and images from Ireland's top real estate portal. Perfect for market analysis, price monitoring, and lead generation across all property types.",
        "version": "0.0",
        "x-build-id": "IVScplY70DsswCetS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~daft-ie-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-daft-ie-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/shahidirfan~daft-ie-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-daft-ie-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/shahidirfan~daft-ie-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-daft-ie-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "propertyUrls": {
                        "title": "Property URLs",
                        "type": "array",
                        "description": "Add one or more Daft.ie URLs. Supports listing/search/detail URLs and messy URL formats.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "results_wanted": {
                        "title": "Results wanted",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of properties to save.",
                        "default": 20
                    },
                    "max_pages": {
                        "title": "Maximum pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of listing pages to process per search URL.",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Use Apify Proxy for stable production runs.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
