Skip to content
ListingrailGet an API key

How to get Daft.ie listings in Python

By the end of this guide you have a CSV of Dublin rentals with price, bedrooms and the advertiser, from one script you can run again tomorrow. Everything below was run on 15 October 2026; the output table is what it returned.

Why scraping Daft.ie yourself breaks

  • Daft.ie has an official API, but its keys are for estate agent accounts and come through a Daft account manager; there is no public signup.
  • The website carries its results as JSON inside each page, which changes whenever Daft redesigns the page.
  • Daft uses its own place names ("dublin-city", "cork"), which a scraper has to know before it can search.

None of that is impossible, but each point is code you then maintain. The rest of this guide uses Listingrail, which does the reading and hands back clean JSON. The Daft.ie API page has the official options with sources.

1. Get a key

One request with your email returns a key with 100 free listings. It is shown once, so keep it in an environment variable.

curl -X POST https://listingrail.com/v1/signup \
  -H "content-type: application/json" \
  -d '{"email": "you@example.com"}'

export LISTINGRAIL_KEY=re_...

2. Search and save to CSV

Install requests (pip install requests), then run:

import csv
import os

import requests

r = requests.post(
    "https://listingrail.com/v1/listings/search",
    headers={"Authorization": f"Bearer {os.environ['LISTINGRAIL_KEY']}"},
    json={"source":"daft","location":"dublin-city","type":"rent","limit":50},
    timeout=300,
)
r.raise_for_status()
listings = r.json()["listings"]

fields = ["price", "currency", "beds", "baths", "area", "address", "url"]
with open("daft-dublin.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(fields)
    for home in listings:
        writer.writerow([home[k] for k in fields])

print(len(listings), "listings saved to daft-dublin.csv")

The request body, on its own:

{
  "source": "daft",
  "location": "dublin-city",
  "type": "rent",
  "limit": 50
}

Each listing returned costs one credit. A search that finds nothing, or fails at Daft.ie, costs nothing. A request can take up to a minute or two, because Daft.ie is read at that moment.

3. What comes back

The first three rows of the run on 15 October 2026:

AddressPriceSizeAgent
The Cornerstone, Lower Kilmacud Road, Stillorgan, Co. Dublin2,250 EUR / month1 bdLetting Agent - Savills 002233
Sand House, Glass Bottle, Cullet Walk, D04 F8FC, Dublin 42,500 EUR / month1 bdGlass Bottle
The Ironworks, Dundrum Town, Dundrum, Co. Dublin2,450 EUR / month1 bdIronworks

Every listing has the same keys on all 17 portals, so the code for Daft.ie reads the others too. Fields Daft.ie does not show come back as null, and the portal's own record sits in raw. With pandas:

import pandas as pd

df = pd.DataFrame(listings)
df["agent"] = df["agent"].str.get("company")
print(df[["price", "beds", "baths", "area", "address", "agent"]].head())

4. Get new listings and price cuts every day

Running the script on a schedule works, but then you compare the files yourself. A monitor stores the search, checks it once a day, and sends only what changed: new listings and price cuts. The free key holds one monitor.

requests.post(
    "https://listingrail.com/v1/monitors",
    headers={"Authorization": f"Bearer {os.environ['LISTINGRAIL_KEY']}"},
    json={
        "source": "daft",
        "location": "dublin-city",
        "filters": {"type":"rent"},
        "webhook_url": "https://example.com/new-listings",
    },
    timeout=30,
)

Changes can also be read with GET /v1/monitors/{id}/changes or downloaded as CSV. Plans and limits are on the monitors page.

Daft.ie quirks worth knowing

  • Pass a place as it appears in Daft links: "dublin-city", "cork", or "ireland" for the whole country.
  • New developments list several flat sizes. price is the "from" price and beds the smallest flat, so the two belong together.
  • baths and area are often missing on Daft; they come back as null.
  • agent.name is the advertiser: an agency branch, a private landlord or the development's own name. listed_at is the publish date.

Questions

Can I get a Daft.ie API key?

Only as an estate agent, through your Daft account manager. Listingrail gives a key by email with 100 free listings.

Does it cover sales as well as rentals?

Yes: use "type": "sale".

Why do some listings show "from" prices?

They are new developments with several units; the price and bedroom count are those of the smallest unit.

Get 100 free listingsAPI docsOther guides