Daft.ie Scraper - Ireland Property Listings
Pricing
from $2.50 / 1,000 listings
Daft.ie Scraper - Ireland Property Listings
Collect Daft.ie property listings across Ireland, including prices, beds, BER ratings, photos and available agent contacts. Pay per delivered row, plus a start fee.
Pricing
from $2.50 / 1,000 listings
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
2
Monthly active users
6 hours ago
Last modified
Categories
Security
Limited permissionsShare
Daft.ie Scraper
Collect Daft.ie property listings across Ireland as structured rows with prices, property details and available agent contacts.
- Sale, rental, sharing and new-home searches.
- Listing links, beds, baths, BER ratings, photos and advertised prices.
- Optional detail enrichment and separate build-to-rent unit rows.
- Dataset exports, scheduled runs, API access and AI-agent integration.
- $2.50 per 1,000 delivered rows, plus a small start fee.
What does Daft.ie Scraper do?
Daft.ie Scraper collects property searches and individual listings from Daft.ie. Give it a location or supported Daft URLs. It returns rows for market research, price comparisons, property monitoring and spreadsheets. Check the location limitation below before using a search as a regional sample.
- Search by location: use
locationandchannelfor sale (BUY), rent (RENT), sharing (SHARING) or new homes (NEW_HOMES). - Search by URL: use
startUrlsfor sale, rent or new-home search links. - Specific listings: put sale or rental listing links in
startUrls. - Detail enrichment:
scrapeDetailsis on by default. Additional details enrich the existing row, without another row charge. - Build-to-rent units:
includeUnitsis off by default. When enabled, each available unit with its own ID and link can add a billed row. These rows also userowType="listing", withparentIdidentifying the development.
What data can you extract from Daft.ie?
All delivered rows use rowType="listing". Development-unit rows share the same fields, with parent links and their own prices and property details. Fields depend on what the listing provides.
| Field | Description | Example |
|---|---|---|
rowType | Row classification. | listing |
id | Listing identifier, stored as a string. | 1234567 |
url | Link to the listing. | https://www.daft.ie/for-sale/example-property/1234567 |
title | Listing title or advertised address. | Example Apartment, Dublin |
channel | Sale or rental classification supplied for the listing. | BUY |
price | Advertised price text, including rental period when present. | €1,800 per month |
priceAmount | Numeric price, without currency or period. | 1800 |
numBedrooms | Advertised bedroom text. | 2 Bed |
numBathrooms | Advertised bathroom text. | 1 Bath |
propertyType | Property category. | Apartment |
berRating | Advertised energy rating. | B3 |
description | Listing description when details are available. | Example property description |
address | Structured street, unit, locality, region, postal code and country. | {"locality":"Dublin"} |
eircode | Advertised postal code from listing details. | null |
geo | Latitude and longitude when available. | {"lat":53.35,"lng":-6.26} |
phones | Published seller numbers and their classification. | [] |
emails | Listing email addresses; currently returned empty. | [] |
person | Seller name and role, where available. | {"name":"Jane Doe","role":"agent"} |
org | Agency or branch name and identifier. | {"name":"Example Agency","id":"123"} |
images | Available image URLs, capped at 50. | [] |
facilities | Advertised facilities, capped at 50. | [] |
features | Detail-page features, capped at 50. | [] |
prs | Build-to-rent development information, including available unit descriptions. | {"subUnits":[]} |
parentId | Development ID on a separate unit row. | 7654321 |
parentTitle | Development title on a unit row. | Example Development |
parentUrl | Link to that development. | https://www.daft.ie/for-rent/example-development/7654321 |
leadSource | Whether contact details came from search or listing details. | detail |
leadAbsences | Reasons recorded for missing contact fields. | {} |
scrapedAt | Collection timestamp. | 2026-10-24T08:00:00+00:00 |
address.unit holds an apartment-style prefix such as Apartment 2; an ordinary house number stays in address.street. Postal codes and coordinates may be missing. Unit rows inherit address and seller context from the development. The older listingId, listingTitle and listingUrl fields remain aliases for the parent links.
How to scrape Daft.ie
- Open Daft.ie Scraper in Apify Console.
- Enter
location, or paste supported links intostartUrls. Clear the sample URLs when using a location. - Set
maxItemsto3for a first run. KeepscrapeDetailsenabled if you need addresses and descriptions. - Click Start and wait for completion, including any automatic resume described below.
- Open the dataset and download the rows, or read them through the API.
An empty input uses the form's Dublin City sale example with maxItems=3, rather than the normal 70-row default. It is a billed example, not a free preview. Providing either target selects the Actor's single collection mode automatically; there is no mode setting to fill.
Search by location
Enter a Daft area name such as dublin-city or text such as Dublin City. Choose channel for the listing family. Location text is normalized, but strict geographic filtering is not guaranteed; check returned addresses.
Search by URL
Use supported /property-for-sale/, /property-for-rent/ or /new-homes-for-sale/ links. Search links take precedence over location and determine the listing family. Do not assume every filter in a copied URL is reproduced. Use the explicit sort setting for ordering.
Specific listing URLs
Use /for-sale/.../<id> or /for-rent/.../<id> links for known properties. Multiple links can be submitted together. Replace the illustrative link below with a current listing URL before running it.
What to fill in
| Field | What to enter | Default |
|---|---|---|
startUrls | Supported Daft search or listing URLs; strings or objects containing url. | No fixed target; example prefill is Dublin City sale |
location | Daft place name or area slug, when no search URL is supplied. | Dublin City fallback |
channel | BUY, RENT, SHARING or NEW_HOMES. | BUY |
maxItems | Most delivered rows per URL or location; 1–2,000. | 70; form prefill 3 |
maxPages | Legacy page setting, 1–100. It is not a reliable total limit for Actor runs; use maxItems. | 1 |
scrapeDetails | Add available listing details to search rows. | true |
includeUnits | Add eligible build-to-rent unit rows; all rows share the limit. | false |
sort | Empty for best match, or publishDateDesc, priceAsc, priceDesc. | Empty |
requestDelayMillis | Request spacing in milliseconds, 0–15,000. | 800 |
maxConcurrency | Concurrent detail requests, 1–8. | 2 |
Location search:
{"location": "dublin-city","channel": "BUY","maxItems": 3,"scrapeDetails": true}
Rental search URL:
{"startUrls": [{"url": "https://www.daft.ie/property-for-rent/cork"}],"maxItems": 3,"includeUnits": true}
Specific listing:
{"startUrls": ["https://www.daft.ie/for-sale/example-property/1234567"],"maxItems": 1}
maxItemsis the canonical row limit.maxResults,limitandmax_resultsare accepted aliases.- Unknown fields are ignored with a note; close misspellings can be corrected. Invalid
channelorsortvalues are ignored rather than stopping the run, so check the interpreted input. - Invalid targets stop before row delivery with an
INVALID_INPUT:message. A foreign URL producesINVALID_INPUT: input — ...with guidance to use a Daft search or listing link. No row is charged, though the start fee still applies. - The
INPUT_REPORTrecord in the default key-value store shows fields filled, normalized, corrected or ignored, and whether this was an example run.
Output example
Illustrative listing row; the property, contact name and address are placeholders:
{"rowType": "listing","id": "1234567","url": "https://www.daft.ie/for-sale/example-property/1234567","source": "daft","channel": "BUY","title": "Example Apartment, Dublin","price": "€425,000","priceAmount": 425000,"numBedrooms": "2 Bed","numBathrooms": "1 Bath","propertyType": "Apartment","berRating": "B3","address": {"street": "Example Street, Dublin","unit": "Apartment 2","locality": "Dublin","region": "Dublin","postalCode": null,"country": "IE","full": "Apartment 2, Example Street, Dublin"},"phones": [],"emails": [],"person": {"name": "Jane Doe", "role": "agent"},"org": {"name": "Example Agency", "id": "123"},"leadSource": "detail","scrapedAt": "2026-10-24T08:00:00+00:00"}
You can export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. OUTPUT and RUN_SUMMARY contain run counts, warnings and timestamps. A failed run can also write ERROR_SUMMARY.
Why use this Daft.ie scraper?
- Pay for delivered rows. Detail enrichment does not add a separate row charge; optional unit rows do.
- Keep available partial results. When a collection stops early and returns partial rows, the Actor delivers them and records the reason. A forced stop can still interrupt delivery.
- Understand missing fields. Unavailable values stay empty rather than being invented; contact absence information helps explain gaps.
- Submit several inputs. Put several supported URLs in
startUrls, with a per-input row limit and a total spending limit. - No proxy setup. You do not need to set up proxies or provide a Daft account or cookies.
How much does it cost to scrape Daft.ie?
The Actor uses pay-per-event pricing. The start event costs $0.005 per GB of Actor memory, with a minimum of one event. At the default 512 MB, the start charge is $0.005. Platform usage is included in these prices.
| Apify plan | Price per row | Price per 1,000 rows |
|---|---|---|
| Free | $0.0025 | $2.50 |
| Starter | $0.0025 | $2.50 |
| Scale | $0.0025 | $2.50 |
| Business | $0.0025 | $2.50 |
maxItemsapplies to each URL or location. The normal default is 70; larger requests are collected in parts. Development and unit rows count together.- Free Apify plan users can make 10 runs of this Actor, with at most 200 rows per run. These are developer-set limits.
- The whole run stops at the Maximum cost per run you choose in run options (
maxTotalChargeUsdin the API).
Example: one input delivering 3 rows at 512 MB costs 3 × $0.0025 + $0.005 = $0.0125. Empty results incur no row charge, but the start charge still applies.
What happens when the run timeout is too short
A search can take longer than the timeout you selected. The Actor can pause with the message "Queued on the collection backend; this run will resume automatically when results are ready (about Ns)." The run temporarily shows ABORTED. When results are ready, the same run resumes, reports "Resumed: delivering N rows.", writes to the same dataset and finishes as SUCCEEDED if delivery succeeds. Previously delivered rows are not delivered or charged again during this resume.
This automatic pause can happen at most 3 times per run. Keep the default timeout of 3600 seconds to reduce interruptions. A manual abort or an unrelated failure is not a promise of automatic recovery.
The synchronous endpoints run-sync and run-sync-get-dataset-items wait at most 300 seconds and can return an empty dataset while the run is paused. For longer jobs, start asynchronously and read the dataset after SUCCEEDED, or use a succeeded-event webhook. Do not launch a duplicate run just because an automatic pause appears as ABORTED.
Use with AI agents and the API
Apify MCP server (Claude, ChatGPT, Cursor, VS Code)
Add this Actor to an MCP client that supports remote servers:
https://mcp.apify.com?tools=lentic_clockss/daft-property-scraper
Sign in with Apify using OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool starts a run and returns run and dataset IDs; the agent can then read rows with get-dataset-items. Clients without remote support can use npx @apify/actors-mcp-server --tools lentic_clockss/daft-property-scraper with APIFY_TOKEN set.
Example prompt: "Run Daft.ie Scraper with location dublin-city, channel BUY and maxItems 3. Show the returned prices, addresses and links, and flag any address outside Dublin."
Apify API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("lentic_clockss/daft-property-scraper").call(run_input={"location": "dublin-city", "channel": "BUY", "maxItems": 3})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('lentic_clockss/daft-property-scraper').call({location: 'dublin-city', channel: 'BUY', maxItems: 3});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
For HTTP, send input JSON to POST https://api.apify.com/v2/acts/lentic_clockss~daft-property-scraper/runs with an Authorization: Bearer <YOUR_APIFY_TOKEN> header. After completion, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.
Integrations
Use the Actor's Integrations tab for Google Sheets, Make, Zapier, n8n, Slack, Airtable or webhooks. Apify Schedules can run the same input regularly; retain separate exports when comparing prices over time.
FAQ
Is it legal to scrape Daft.ie?
Public visibility is not blanket permission to reuse data. You are responsible for checking the site's terms and applicable data-protection law. Personal data needs a lawful basis; collect only what you need and handle it appropriately.
Why did my run end as ABORTED?
Read the status message. The automatic-resume message means the same run is waiting for results. A manual abort or another error is different; inspect the run log and summary before retrying.
How many results can I get?
maxItems accepts 1–2,000 rows per input, subject to availability and the total spending limit. Free-plan runs stop at 200 rows. A limit is a maximum, not a guarantee that enough listings exist.
Why are some fields empty?
Not every listing publishes a price, BER, phone or postal code. Search-only rows usually have fewer details. Listing emails are currently empty, and web.website and web.socials are not populated. Check leadAbsences for available explanations.
Can I collect sale and rent in one run?
Yes. Supply sale and rental search URLs in startUrls. A location-based search uses one channel value per run.
Does each build-to-rent unit cost extra?
With includeUnits=true, each delivered unit is another row at the same price. Units without their own ID or link do not get separate rows. Enriching an existing listing does not add a row charge.
Why did my free-plan runs stop after 10 runs?
The developer limits free-plan use to 10 runs of this Actor. The run status explains the limit. Paid Apify plans remove that run-count restriction; row charges still apply.
Does a successful run always contain rows?
No. A completed search with no matches can succeed with an empty dataset. Review the run summary and input before concluding that an area has no properties.
Limitations
- Collection covers supported Daft listing and search inputs, not arbitrary pages or standalone agent profiles.
- Geographic restrictions are not guaranteed in the current collection path. Results can fall outside the requested location; verify returned addresses before regional analysis.
- Copied search-URL filters are not all reproduced. Use documented input fields and inspect a small sample.
- Detail enrichment can fail for individual listings; a search row may remain less complete.
- Listing emails, seller websites and social links are not populated. The Actor does not submit contact forms.
- Images, facilities, features and other attribute lists are capped at 50; count fields can indicate larger source totals. Large developments may have more units than the returned unit list.
- No field-coverage percentage, fixed completion time or complete inventory is guaranteed.
Related scrapers
More real estate and property data scrapers from the same publisher:
- Zumper Scraper
- Booli Scraper
- Craigslist Scraper
- PropertyGuru Scraper
- OpenSooq Scraper
- Apartments.com Rental Scraper
- Dot Property Scraper
- FINN.no Scraper
Browse all of our scrapers at apify.com/lentic_clockss.
Support
Report a problem or request a field through the Issues tab of this Actor's page. Include the run ID and the input you used.