Daft.ie Scraper | Irish Property Listings + Agents
Pricing
from $0.70 / 1,000 results
Daft.ie Scraper | Irish Property Listings + Agents
Scrape Daft.ie — Ireland's biggest property portal. Per-listing price, beds, type, BER energy rating, geo coordinates, full description, features, agent profile and Eircode. Supports sale, rent, sharing, commercial and new-homes searches across Dublin, Cork, Galway, Limerick and every county.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
3
Monthly active users
3 days ago
Last modified
Categories
Share
Daft.ie Scraper | Irish Property Listings with BER, Geo & Agent Data
The fastest way to pull every listing on Daft.ie — Ireland's biggest property portal — into a clean structured dataset. Per property you get the price, beds, type, BER energy rating, geo coordinates, Eircode, full description, features and the listing agent's profile. Covers for-sale, for-rent, sharing (rooms), new-homes and commercial sections across every Irish county.
No browser. No login. No API key. The actor reads each search and detail page's Next.js __NEXT_DATA__ state directly, so the data is structured, complete and matches exactly what daft.ie renders.
TL;DR — Pick a section + location ("property-for-sale" + "dublin-city"), pick a
maxRecordscap, run. Every row is one property with everything joined: price, beds, BER, lat/lon, agent.
What you get
For each property, one row with:
| Field | What |
|---|---|
propertyId | Numeric Daft.ie listing id (stable) |
daftShortcode | Daft's own short code (shown on the card) |
title | Full title / address line as Daft.ie publishes it |
category | "Buy" / "Rent" / "Share" / "Commercial" |
propertyType | Apartment / House / Studio / Site / … |
priceRaw | Original price string ("€450,000" or "From €710 per month") |
priceMin, priceMax | Numeric values (€). For range prices both are set; for single prices min == max |
priceCurrency | "EUR" (or "GBP" for the rare cross-border listing) |
pricePeriod | "month" / "week" / "year" / null (sale) |
numBedrooms | Raw label ("3 Bed", "1, 2 & 3 bed", "Studio") |
numBedroomsMin, numBedroomsMax | Parsed integer min/max |
numBathrooms | Bath count |
berRating | Irish Building Energy Rating (A1, A2, A3, B1, … G, EXEMPT) |
floorArea | "120 m²" string when published |
dateOfConstruction | Year built |
address | The full title address |
eircode | Irish postcode (D02 RK57, T12 HD21, …) mined from title + URL |
city | Parsed city / area |
county | Parsed Irish county |
country | "Ireland" |
latitude, longitude | Geo coordinates from Daft's Point GeoJSON |
featuredLevel | FEATURED / etc. (premium tier on the search page) |
publishDate, firstPublishDate, lastUpdateDate | ISO dates |
description | Full description (when scrapeDescription: true) |
features | Array of bullet features (when scrapeDescription: true) |
agentName, agentBranch, agentType, agentLicenceNumber, agentLogoUrl | Listing agent profile |
premierPartner, showContactForm | Daft.ie agent-tier flags |
imageUrl, images, imageCount | First image + up to 12 gallery URLs |
subUnitCount | When the listing is an apartment-complex parent, how many sub-units it has |
listingUrl | Canonical Daft.ie detail URL |
searchSection, searchLocation, searchUrl | Echo of the search you ran |
scrapedAt | ISO timestamp |
The complete schema with types is in dataset_schema.json.
Why these fields matter
BER (Building Energy Rating) — Ireland's mandatory energy label. Buyers and renters increasingly filter on it; investors track it for value-add deal flow ("buy F-rated, retrofit to B2, resell"). No other property data source surfaces it as a structured column.
Eircode — Ireland's seven-character postcode. Every Eircode pinpoints to a single building, making it perfect for joining with census, demographic and electricity-use datasets.
Latitude / longitude — pulled straight from Daft's own Point geometry. Drop the dataset into Mapbox / Tableau / Looker for instant heat-maps.
Agent profile — the agentId, agentName, agentBranch, agentLicenceNumber plus premierPartner flag let you build a competitive map of who lists what in which area. Estate agencies use this to monitor competitors; PropTech vendors use it for sales pipeline.
featuredLevel / premierPartner — Daft.ie's premium ad tier signal. Useful for marketers and agencies to size the paid-ad budget of the market.
Use cases
Real-estate agencies (competitive intel)
- Snapshot the entire
dublin-cityproperty-for-salemarket daily — track which agents are getting new instructions, what's selling, what's lingering. - Build a heat-map of new listings per area to time outreach to landlords.
PropTech / data analytics
- BER-rated rental yield analysis — pair
priceMinwithfloorAreafor €/m² and stratify byberRatingfor a real-time energy-vs-price index. - Affordability dashboards — pull all of Ireland by county weekly, model median asking price by bedroom count.
Mortgage / lending teams
- Pre-approval intelligence — surface fresh listings in your target customer's price band the moment they're posted.
International buyers (US / UK)
- Save hours of manual browsing — filter Daft via this actor for your exact
priceFrom/priceTo/minBedsand pipe to Notion, Sheets or your buyer's CRM.
Estate-agent SaaS / CRM vendors
- Map every active agent in Ireland (
agentName+agentBranch+agentLicenceNumber) — the single best B2B prospecting list for selling to estate agents.
Investment funds / institutional rental
- Track the new-build BTR pipeline in real time via the
new-homes-for-salesection + theprs.subUnitscount we surface.
Compliance / market research
- Run the same query weekly and dataset-diff to compute time-on-market, price reductions and supply by area.
Inputs (full list)
Definitions live in input_schema.json; here's the human summary.
section(select) —property-for-sale(default),property-for-rent,sharing,new-homes-for-sale,commercial-properties-for-sale,commercial-properties-for-rent.location(string) — Daft.ie location slug. Examples:dublin-city,cork,galway,limerick,kildare,wicklow,dun-laoghaire-rathdown. Leave empty for all-Ireland.startUrls(array) — Paste Daft.ie search URLs directly. Overrides section / location / filters.priceFrom,priceTo(integer) — Optional price band (€). For rent these are per-month.minBeds(integer) — Minimum bedroom count.scrapeDescription(boolean) — Visit each detail page for full description + features + last-update date. The base listing already carries title, price, beds, BER, geo, agent — disable detail visit for 5× faster runs.maxRecords(integer) — Hard cap on properties returned. Default100.maxPages(integer) — Hard cap on pagination.0= unlimited (bounded bymaxRecords).requestDelay(integer) — Milliseconds between page fetches. Default1000.proxyConfiguration(proxy) — Apify Proxy. Defaults to RESIDENTIAL + country IE — datacenter triggers Daft.ie's "Security Check" interstitial within a few requests.
Example inputs
1. Dublin sale listings, default cap
{"section": "property-for-sale","location": "dublin-city","maxRecords": 100}
2. Cork rentals under €2,000/month, ≥2 beds, fast list-only
{"section": "property-for-rent","location": "cork","priceTo": 2000,"minBeds": 2,"scrapeDescription": false,"maxRecords": 250}
3. Galway room-shares with full descriptions
{"section": "sharing","location": "galway-city","scrapeDescription": true,"maxRecords": 60}
4. Direct Daft.ie URL paste
{"startUrls": [{ "url": "https://www.daft.ie/property-for-sale/dublin-city-centre?price=300000-500000&numBeds_from=2" }],"maxRecords": 300}
5. All-Ireland new-homes pipeline (deep crawl)
{"section": "new-homes-for-sale","location": "ireland","scrapeDescription": true,"maxRecords": 1000,"maxPages": 60,"requestDelay": 1500,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "IE"}}
Output sample
{"propertyId": "6561825","daftShortcode": "96561825","title": "Baile Adaim, Carrigtwohill, Co. Cork","category": "Rent","propertyType": "Private Rental Sector","priceRaw": "From €710 per month","priceMin": 710,"priceMax": 710,"priceCurrency": "EUR","pricePeriod": "month","numBedrooms": "1, 2 & 3 bed","numBedroomsMin": 1,"numBedroomsMax": 3,"numBathrooms": null,"berRating": "A2","floorArea": null,"dateOfConstruction": null,"address": "Baile Adaim, Carrigtwohill, Co. Cork","eircode": null,"city": "Baile Adaim","county": "Cork","country": "Ireland","latitude": 51.91742,"longitude": -8.24198,"featuredLevel": "FEATURED","publishDate": "2026-05-05","firstPublishDate": null,"lastUpdateDate": null,"agentId": "13053","agentName": "Paul Barry","agentBranch": "Cork County Council","agentType": "UNBRANDED_AGENT","agentLicenceNumber": "Cork County Council","agentLogoUrl": "https://media.daft.ie/…","premierPartner": false,"showContactForm": true,"imageUrl": "https://media.daft.ie/…","imageCount": 8,"subUnitCount": 3,"listingUrl": "https://www.daft.ie/for-rent/baile-adaim-carrigtwohill-co-cork-…/6561825","searchSection": "property-for-rent","searchLocation": "cork","scrapedAt": "2026-05-31T18:57:13.000Z"}
Cost & throughput
Pay-per-event pricing — small apify-actor-start fee plus a per-result charge. The exact tier is on the actor's Apify Store page.
Default throughput (scrapeDescription: false, requestDelay: 1000):
- ~20 listings per page × ~1.5 s per page = ~13 listings / second.
- 1,000 listings ≈ 80 seconds.
- With
scrapeDescription: trueadd ~1 s/listing for the detail fetch.
Daft.ie caps pagination at ~167 pages × 20 listings = ~3,300 results per query. To go deeper, split by county, then by city / area, then by price band.
How it works (under the hood)
- Search URL build —
https://www.daft.ie/{section}/{location}?page=N&priceFrom=…&numBeds_from=…. __NEXT_DATA__parse — Daft.ie ships its entire React state inside<script id="__NEXT_DATA__">. We pullprops.pageProps.listings(per-page array of 20 properties),props.pageProps.paging(current page, total pages, total results) andprops.pageProps.queryFilters.- Field mapping — listing.title → title, listing.price → priceRaw + parsed
priceMin/priceMax/priceCurrency/pricePeriod, listing.ber.rating → berRating, listing.point.coordinates → lat/lon, listing.seller → agent fields, listing.seoFriendlyPath → listingUrl. - Eircode mining — Irish postcode regex (
[ADEFHKNPRTVWXY]\d{2} [A-Z0-9]{4}) over title + URL slug + description. - Detail enrichment (optional) — for each listing, fetch the detail URL and pull the longer
description,featuresarray andlastUpdateDatefrom its own__NEXT_DATA__block. - Dedup — by numeric
propertyId. The same listing surfacing on overlapping pages is only emitted once. - Backoff — retries on 403 / 429 / "Security Check" interstitial with a fresh proxy session per attempt.
Built on got-scraping + cheerio — no Puppeteer, no Playwright, runs in 512 MB.
Tips & troubleshooting
Q: I'm getting No properties scraped — Daft.ie blocked the discovery page.
A: Almost certainly the proxy group is wrong. Daft.ie shows a "Security Check" challenge to datacenter IPs within a few requests; switch the proxy group to RESIDENTIAL and set country to IE. UK / US residential IPs sometimes also trigger the check — IE residential is the most reliable.
Q: My run says No properties matched your filters.
A: Your filter is too narrow. Drop priceTo, lower minBeds, broaden the location to the county slug (e.g. cork instead of cork-city-centre).
Q: Why is berRating null on so many rentals?
A: Landlords aren't legally required to publish BER on every rental ad until certified. The actor reads what Daft.ie publishes — when the rating is missing on the source page, the field stays null. (Sale listings carry BER far more reliably.)
Q: eircode is empty most of the time.
A: Eircode is included in the title / URL slug only when the seller chose to publish it. Set scrapeDescription: true and we also mine the full description text — that recovers Eircode for an additional ~15-20% of listings.
Q: I want sub-units inside apartment-complex listings as separate rows.
A: The parent listing's subUnitCount flags how many sub-units it has. v1 emits one row per parent listing with the sub-units summary; ping the Store page if you want a mode: per-subUnit flag added.
Q: Why does pagination stop earlier than the total pages count?
A: Daft.ie caps deep pagination around page 167 (~3,300 results) regardless of true total. To go further, split the query (e.g. by priceFrom/priceTo bands).
Q: How fresh is the data?
A: Real-time. Each run pulls Daft.ie's live __NEXT_DATA__; there is no cache layer in the actor.
Q: Can I scrape just one specific listing?
A: Yes — drop the listing's detail URL into startUrls. The actor recognises detail URLs and emits one row.
Q: Can I run this on a schedule?
A: Yes — Apify Schedules picks it up natively. Daily / hourly cron is fine; lower maxRecords to keep cost predictable.
How this compares
There's exactly one other Daft.ie scraper on the Apify Store (about 350 runs / month). Here's how this one positions:
- Multi-section — sale, rent, sharing, new-homes, commercial sale, commercial rent. The competitor covers sale + rent only.
- BER rating + Eircode + geo lat/lon as structured columns — the high-signal Irish-specific fields the alternative doesn't surface.
- Agent profile in every row —
agentId,agentName,agentBranch,agentLicenceNumber. Build the agent-leads list for free as a side-effect of every property run. - Cloudflare / "Security Check" handling baked in — proxy prefill is RESIDENTIAL + IE because that's what survives Daft.ie's anti-bot for sustained runs.
- Healthy run semantics — empty filter results exit
SUCCEEDEDwith an actionable status message rather thanFAILED.
Legal & ethical use
This actor reads public, indexable Daft.ie HTML — the same pages Google sees. Use responsibly:
- Republishing the data as a competing portal infringes Daft.ie's Terms; build derived products (analytics, dashboards, alerts) instead.
- Contacting agents en-masse without an established business relationship needs a lawful basis under the GDPR (legitimate interest works for B2B if the topic is relevant and you respect opt-outs).
- The actor never bypasses logins, paywalls or
robots.txt-disallowed paths.
Pricing-tier playbooks (when you graduate from one-off runs)
If you're scheduling Daft.ie runs daily / weekly for a real workflow, these are the patterns that survive at scale:
- County-by-county sweep. Don't try to grab "all of Ireland" in one run — Daft.ie caps pagination ~3,300 results. Run one search per county (
dublin-city,cork,galway,limerick,kildare,wicklow,meath,donegal, …) and union the datasets. Daily refresh keeps cost in the cents. - Price-band shards. For Dublin sale (
> 3,300results) split by price:<300k,300-500k,500-750k,750k-1m,>1m. Five small runs cover the full market without hitting the pagination cap. - Delta scheduling. Run the same query once a day and dedup by
propertyIdagainst your warehouse's previous snapshot — new rows = new listings, missing rows = sold / withdrawn. Tracks time-on-market for free. - Agent prospecting. Run a single sale-and-rent sweep per county per week; dedup the result by
agentIdand you've built a refreshed agent list ideal for B2B SaaS targeting Irish estate agents.
Frequently-asked filters
location— Irish county slugs use the official Daft.ie slug. The most common ones:dublin-city,dublin-county,dun-laoghaire-rathdown,fingal,south-dublin,cork-city,cork-county,galway-city,galway-county,limerick-city,kerry,kildare,meath,wicklow,wexford,donegal,mayo,clare,tipperary,waterford-city. For all-Ireland leave empty or useireland.- Direct URL paste — every Daft.ie search-results page works as a
startUrlsvalue. Toggle filters in your browser, copy the URL once you're happy, paste in. numBeds_from— Daft.ie's own URL parameter; the actor passes it through when you setminBeds. UsestartUrlsfor the more exotic combinations (numBeds_to,dateOfConstruction_from, etc.).
Changelog
- 1.0 — Initial release. Sections: property-for-sale, property-for-rent, sharing, new-homes-for-sale, commercial sale & rent.
__NEXT_DATA__parser, BER + Eircode + geo + agent extraction. Detail-page enrichment for description + features.
Roadmap / feature requests
mode: per-subUnitfor apartment-complex parents.- Historical price-change tracking (compare across runs).
- Agent-list-only mode (one row per
agentId, with summary stats). - Map-bounding-box search input (lat/lon polygon → Daft search URL).
- Saved-search delta mode (emit only listings new vs the previous run).
Drop a comment on the Store page if any of these would unblock you.