{
  "openapi": "3.0.1",
  "info": {
    "title": "Daft.ie Scraper - Irish Property, BER & Agent Data",
    "description": "Scrape Daft.ie property listings across Ireland: asking price, BER energy rating, Eircode, beds, baths, floor area, agent contact and GPS. For sale, to rent, sharing, new homes and commercial. Export JSON, CSV or Excel.",
    "version": "1.0",
    "x-build-id": "78GpKA25phfYrR0I4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~daft-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-daft-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/sian.agency~daft-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-daft-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/sian.agency~daft-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-daft-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": {
          "operation": {
            "title": "🎯 What do you want to scrape?",
            "enum": [
              "search",
              "detail"
            ],
            "type": "string",
            "description": "Pick one operation per run. Search returns many rows per call and is where the value is; Detail expands a single listing and is priced as an add-on.",
            "default": "search"
          },
          "site": {
            "title": "🌍 Market",
            "enum": [
              "IE"
            ],
            "type": "string",
            "description": "Which marketplace to query.",
            "default": "IE"
          },
          "locations": {
            "title": "📍 Irish areas",
            "type": "array",
            "description": "Daft area slugs to search, e.g. dublin-city, cork-city, galway-city, dublin (the whole county), kerry, wicklow. Any town works too — malahide-dublin, kinsale-cork. Areas are searched in order until the Max properties budget is spent, so list the one you care about most first. Leave the list empty to sweep the whole of Ireland in one pass.",
            "default": [
              "dublin-city"
            ],
            "items": {
              "type": "string"
            }
          },
          "section": {
            "title": "🏘️ What to search",
            "enum": [
              "residential-for-sale",
              "residential-to-rent",
              "sharing",
              "new-homes",
              "commercial-for-sale",
              "commercial-to-rent"
            ],
            "type": "string",
            "description": "Which part of Daft to search. Homes for sale is the largest section (16,384 live ads nationwide); Rooms to share is the one most people miss.",
            "default": "residential-for-sale"
          },
          "maxResults": {
            "title": "🔢 Max properties",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stop after this many properties in TOTAL, counted across every area in the run — three areas with a limit of 100 return 100 rows between them, not 300. Each search call returns 50, so the run finishes the call it is on and may hand you a few more than you asked for; you are only charged for rows delivered. FREE accounts stop at 25 whatever you type here.",
            "default": 100
          },
          "includeDetails": {
            "title": "📄 Add descriptions, Eircodes & lease terms",
            "type": "boolean",
            "description": "Open each property's own page to add the full description, the Eircode, furnishing and lease terms for rentals, the view count and the complete photo set. Costs one extra request per property and bills the Property Detail event on top of the search row.",
            "default": false
          },
          "listingUrls": {
            "title": "🔗 Property URLs",
            "type": "array",
            "description": "Used by the Property Detail operation: Daft property URLs to expand, e.g. https://www.daft.ie/for-sale/2-churchwell-close-belmayne-clongriffin-dublin-13/6657535. A bare listing ID works too.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchUrls": {
            "title": "🌐 Daft search URLs",
            "type": "array",
            "description": "Paste Daft search URLs instead of filling the fields above. Area, section and every filter on the URL are read straight off it, so you can build the search on daft.ie and hand the finished link over.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "minPrice": {
            "title": "💵 Min price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest asking price to include. For rentals this is euro per month. 0 means no lower bound.",
            "default": 0
          },
          "maxPrice": {
            "title": "💰 Max price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest asking price to include. For rentals this is euro per month. 0 means no upper bound.",
            "default": 0
          },
          "minBeds": {
            "title": "🛏️ Min bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Fewest bedrooms to include. 0 means no lower bound.",
            "default": 0
          },
          "maxBeds": {
            "title": "🛌 Max bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Most bedrooms to include. 0 means no upper bound.",
            "default": 0
          },
          "minBaths": {
            "title": "🛁 Min bathrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Fewest bathrooms to include. 0 means no lower bound.",
            "default": 0
          },
          "propertyType": {
            "title": "🏡 Property type",
            "enum": [
              "",
              "houses",
              "detached-houses",
              "semi-detached-houses",
              "terraced-houses",
              "end-of-terrace-houses",
              "townhouses",
              "apartments",
              "studio-apartments",
              "duplexes",
              "bungalows",
              "sites"
            ],
            "type": "string",
            "description": "Narrow to one kind of property. Any type is the default and is what most market-wide sweeps want. Houses (all) covers detached, semi-detached, terraced and end-of-terrace together.",
            "default": ""
          },
          "minBer": {
            "title": "⚡ Minimum BER",
            "enum": [
              "",
              "A0",
              "A",
              "B",
              "C",
              "D",
              "E",
              "F",
              "G",
              "exempt"
            ],
            "type": "string",
            "description": "Only properties rated at least this well on Ireland's Building Energy Rating scale. Daft filters by letter band rather than sub-grade, so choosing B returns B3 and everything above it. Useful for retrofit-grant targeting and for landlords screening against minimum-standard rules.",
            "default": ""
          },
          "maxBer": {
            "title": "🔻 Maximum BER",
            "enum": [
              "",
              "A0",
              "A",
              "B",
              "C",
              "D",
              "E",
              "F",
              "G",
              "exempt"
            ],
            "type": "string",
            "description": "Only properties rated no better than this on Ireland's Building Energy Rating scale. This is the retrofit filter: set it to D to get D-and-worse stock, which is the housing an insulation, heat-pump or window business wants to be calling on. Combine it with the minimum to take a single band.",
            "default": ""
          },
          "keywords": {
            "title": "🔤 Keyword",
            "type": "string",
            "description": "Free-text match against the ad, e.g. 'sea view', 'south facing', 'turnkey'. Leave empty to take everything in the area.",
            "default": ""
          },
          "addedInLastDays": {
            "title": "🆕 Added in the last N days",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Only ads first published within this many days. Set it to 1 and schedule the run daily to pay for new listings only.",
            "default": 0
          },
          "adState": {
            "title": "📌 Availability",
            "enum": [
              "published",
              "sale-agreed"
            ],
            "type": "string",
            "description": "Available covers live ads. Sale agreed shows what has gone under offer — the closest thing Daft publishes to sold data.",
            "default": "published"
          },
          "sort": {
            "title": "↕️ Sort by",
            "enum": [
              "",
              "publishDateDesc",
              "priceAsc",
              "priceDesc"
            ],
            "type": "string",
            "description": "Newest first is what you want for monitoring. Best match is Daft's own ranking and is fine for a one-off sweep.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}