# MyHome.ie Ireland Property Listings Scraper (`automation-lab/myhome-ireland-property-listings-scraper`) Actor

Extract current Irish property listings from MyHome.ie with asking prices, addresses, full descriptions, photo links, agent details, and source change timestamps.

- **URL**: https://apify.com/automation-lab/myhome-ireland-property-listings-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## MyHome.ie Ireland Property Listings Scraper

Collect current Irish residential property listings from MyHome.ie as structured records.
Each result includes the asking price, address, full public brochure description, photo links, source URL, agent details, and source timestamps that help weekly archive workflows identify new or updated listings.

The Actor accepts national, county, locality, and property-type search pages as well as individual brochure URLs.
It follows search pagination, fetches each public brochure, and stores one complete listing per dataset row.

### What can you do with this MyHome.ie scraper?

- Archive current Irish property listings on an Apify schedule.
- Track `createdAt`, `modifiedAt`, `refreshedAt`, and `changeType` fields over time.
- Export asking prices and property facts to CSV, Excel, JSON, XML, or RSS.
- Preserve complete public descriptions and all public photo URLs for later analysis.
- Build county-, town-, or property-type-specific datasets from real MyHome.ie search URLs.
- Filter a recurring run with `modifiedAfter` to focus on recently changed listings.
- Feed clean property data into a database, spreadsheet, BI tool, or automation.

This Actor links to photos; it does not download or copy image binaries into the dataset.

### Who is this Actor for?

**Property analysts** can compare prices, sizes, BER ratings, and listing activity across Irish markets.

**Buyers and investors** can maintain a searchable watchlist from selected MyHome.ie result pages.

**Estate-agency teams** can collect public listing and agency details for market research.

**Researchers and journalists** can create dated snapshots while retaining the original source URL.

**Data engineers** can schedule runs and deliver typed records to a warehouse or downstream workflow.

### Why use it?

MyHome.ie pages expose useful facts across search and brochure views.
This Actor turns those pages into consistent records without requiring a MyHome account, API key, or browser automation.

It provides:

- search-page and direct-listing input modes;
- bounded pagination and concurrency;
- full brochure-level details rather than search-card fragments;
- fail-closed validation when the source returns a challenge or unexpected page;
- per-listing source timestamps for recurring archive jobs;
- a stable listing ID and canonical URL for downstream deduplication.

### Data extracted

| Field | Description |
| --- | --- |
| `listingId` | Stable MyHome.ie property ID |
| `url` | Canonical public brochure URL |
| `address` | Display address from the brochure |
| `locality` | Locality or town when available |
| `county` | MyHome.ie region/county label |
| `eircode` | Public Eircode when supplied |
| `askingPrice` | Numeric minimum asking price in EUR |
| `askingPriceText` | Source display price, such as `€455,000` |
| `propertyType` | Detached house, apartment, site, and similar source type |
| `bedrooms` | Bedroom count when published |
| `bathrooms` | Bathroom count when published |
| `sizeSquareMeters` | Published floor area in square metres |
| `berRating` | Building Energy Rating when available |
| `description` | Full public brochure text when enabled |
| `features` | Public feature list |
| `photos` | Full-size public photo URLs when enabled |
| `floorPlans` | Public floor-plan URLs |
| `latitude`, `longitude` | Published map coordinates |
| `agent` | Agency name, phone, email, address, and negotiator when published |
| `createdAt` | Source listing creation timestamp |
| `modifiedAt` | Source listing modification timestamp |
| `refreshedAt` | Source refresh timestamp |
| `activatedAt` | Source activation timestamp |
| `changeType` | `new`, `updated`, or `active`, derived from source timestamps |
| `hasPriceChanges` | Whether the source exposes price-change entries |
| `priceChanges` | Public source price-change objects when available |
| `scrapedAt` | UTC time when this Actor saved the record |

Optional source values are returned as `null` or an empty array instead of guessed values.

### Getting started

1. Open the Actor in Apify Console.
2. Keep the default Ireland search URL or paste one or more MyHome.ie residential search/brochure URLs.
3. Set **Maximum listings** to the number of records you need.
4. For a recurring incremental scan, set **Modified after** to the previous scan boundary.
5. Click **Start**.
6. Open the default dataset and export it in your preferred format.
7. Save the configuration as a Task and add a weekly schedule when you need an archive workflow.

Start with a small limit while validating a new URL or integration.

### Input parameters

#### `startUrls`

An array of public `myhome.ie` residential URLs.
Supported inputs are:

- search pages such as `https://www.myhome.ie/residential/ireland/property-for-sale`;
- filtered/location pages such as `https://www.myhome.ie/residential/dublin/apartment-for-sale`;
- brochure pages such as `https://www.myhome.ie/residential/brochure/.../5015344`.

The Actor rejects other hosts and unrelated MyHome.ie paths.
When omitted, it uses the national property-for-sale search.

#### `maxItems`

Maximum dataset records to save.
The default is 20 and the allowed range is 1–10,000.

#### `maxPages`

Maximum search pages fetched for each search URL.
The default is 5.
This safety limit does not apply to direct brochure inputs.

#### `modifiedAfter`

Optional ISO 8601 date-time, for example `2026-08-01T00:00:00.000Z`.
Only records whose source `modifiedAt` or `createdAt` is on or after this boundary are saved.
The Actor may inspect more records than it saves to apply this filter.

#### `includeDescription`

Include the complete public brochure description.
Enabled by default.

#### `includePhotos`

Include all public full-size photo URLs.
Enabled by default.
No image files are downloaded.

#### `maxConcurrency`

Number of brochure pages fetched together.
The conservative default is 3 and the maximum is 10.
Lower it if the source is temporarily unstable.

### Input examples

Extract 20 current listings across Ireland:

```json
{
  "startUrls": [
    { "url": "https://www.myhome.ie/residential/ireland/property-for-sale" }
  ],
  "maxItems": 20,
  "maxPages": 2,
  "includeDescription": true,
  "includePhotos": true
}
```

Collect Dublin apartments without long descriptions:

```json
{
  "startUrls": [
    { "url": "https://www.myhome.ie/residential/dublin/apartment-for-sale" }
  ],
  "maxItems": 50,
  "maxPages": 5,
  "includeDescription": false,
  "includePhotos": true
}
```

Filter for source changes after a weekly boundary:

```json
{
  "startUrls": [
    { "url": "https://www.myhome.ie/residential/ireland/property-for-sale" }
  ],
  "modifiedAfter": "2026-08-01T00:00:00.000Z",
  "maxItems": 100,
  "maxPages": 10
}
```

### Output example

A real current brochure produces a row shaped like this:

```json
{
  "listingId": "5015344",
  "url": "https://www.myhome.ie/residential/brochure/bumblebee-cottage-largysillagh-killybegs-co-donegal/5015344",
  "address": "Bumblebee Cottage, Largysillagh, Killybegs, Co. Donegal",
  "locality": "Killybegs",
  "county": "Donegal",
  "eircode": "F94 HY43",
  "askingPrice": 455000,
  "askingPriceText": "€455,000",
  "propertyType": "Detached House",
  "bedrooms": 2,
  "bathrooms": 1,
  "sizeSquareMeters": 53.5,
  "berRating": "G",
  "description": "An idyllic thatched cottage with stunning sea views...",
  "features": ["Elevated coastal setting with uninterrupted views over Fintra Beach and Donegal Bay"],
  "photos": ["https://photos-a.propertyimages.ie/media/..._l.jpg"],
  "floorPlans": ["https://photos-a.propertyimages.ie/media/..._l.jpg"],
  "latitude": 54.63862,
  "longitude": -8.49654,
  "agent": {
    "name": "Savills - Country",
    "phone": "+353 1 618 1300",
    "email": "Dublin_Country@savills.ie",
    "address": "33 Molesworth Street, Dublin 2",
    "negotiator": "Maria Lawler"
  },
  "createdAt": "2026-07-20T14:14:24.317Z",
  "modifiedAt": "2026-08-04T13:27:44.430Z",
  "refreshedAt": "2026-08-07T21:58:02.043Z",
  "activatedAt": "2026-07-20T14:14:24.317Z",
  "changeType": "updated",
  "hasPriceChanges": false,
  "priceChanges": [],
  "scrapedAt": "2026-08-08T06:10:00.000Z"
}
```

Listings differ, so some optional fields may be `null` or empty.

### How much does it cost to extract MyHome.ie property listings?

The Actor uses pay-per-event pricing:

- a one-time **Start** charge of **$0.005** per run;
- one **Item processed** charge for each complete listing saved;
- the current BRONZE item price is **$0.009132 per listing**, with lower unit prices on higher platform tiers.

At BRONZE pricing, 20 saved listings cost about **$0.188** including the start charge.
One hundred saved listings cost about **$0.918**.
Filtered-out, duplicate, and failed records are not charged as items.
Apify platform plan and usage rules still apply.

### Weekly archive workflow

Create an Apify Task with the national or filtered search URL.
Schedule it weekly and send each run's dataset to your storage destination.
Use `listingId` as the stable key and compare `askingPrice`, `description`, `photos`, and `modifiedAt` with your previous snapshot.

For a smaller incremental output, update `modifiedAfter` to the previous successful boundary before each run.
The Actor reports source change metadata; it does not rewrite or delete rows in an external archive for you.

Useful automations include:

- dataset-to-Google-Sheets;
- dataset webhook to a database loader;
- Make or Zapier workflows;
- scheduled dataset export to cloud storage;
- change comparison by `listingId` in your own pipeline.

### API usage with cURL

Replace `APIFY_TOKEN` with your Apify API token:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~myhome-ireland-property-listings-scraper/runs?token=APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [{"url":"https://www.myhome.ie/residential/dublin/property-for-sale"}],
    "maxItems": 20,
    "maxPages": 2
  }'
```

Use the returned run's `defaultDatasetId` to fetch items.

### API usage with JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/myhome-ireland-property-listings-scraper').call({
  startUrls: [{ url: 'https://www.myhome.ie/residential/cork/property-for-sale' }],
  maxItems: 25,
  maxPages: 3,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### API usage with Python

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/myhome-ireland-property-listings-scraper").call(
    run_input={
        "startUrls": [
            {"url": "https://www.myhome.ie/residential/galway/property-for-sale"}
        ],
        "maxItems": 25,
        "maxPages": 3,
    }
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

### Use with Apify MCP

Add this Actor to Claude Code:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/myhome-ireland-property-listings-scraper"
```

Use the same configuration with **Claude Desktop**, **Cursor**, or **VS Code**:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/myhome-ireland-property-listings-scraper"
    }
  }
}
```

Example prompts:

- “Run the MyHome.ie scraper for the current Dublin apartment search and return 20 records.”
- “Extract this MyHome.ie brochure and summarize its asking price, BER, size, and last modification date.”
- “Collect recently modified Irish listings and save the dataset URL for my weekly review.”

### Reliability and failure behavior

The Actor validates every host and path before requesting it.
It retries timeouts, HTTP 429, and temporary server errors with bounded backoff.
It does not repeatedly retry deterministic invalid URLs or 404 responses.

A MyHome.ie challenge page or missing SSR state is treated as an error, not as an empty result.
Individual failed brochure pages are logged while other discovered listings continue.
If search pages contain listings but every detail extraction fails, the run fails instead of returning misleading success.

### Limits and data freshness

- Results reflect public MyHome.ie pages at run time.
- A listing can be edited or removed by its publisher after collection.
- `modifiedAfter` uses source timestamps; it is not a guarantee that every visual change modifies that field.
- Source filters are defined by the exact search URL supplied by the user.
- The Actor links photos but does not create a permanent copy of image binaries.
- Contact fields are included only when publicly supplied on the brochure.
- Large nationwide archives may need a higher `maxPages` value and a longer run.

### Legality and responsible use

MyHome.ie listing content may be protected by website terms, copyright, database rights, and privacy law.
Collect only public data that you are authorized to use.
Keep request volume reasonable, respect applicable terms, and do not use contact data for unlawful or unsolicited activity.

The Actor does not bypass login controls and does not access MyHome accounts.
You are responsible for retention, redistribution, and compliance decisions for exported data and linked media.

### Troubleshooting

**The run saved fewer items than `maxItems`.**
The search may have ended, pages may contain duplicates, or `modifiedAfter` may filter older listings.
Raise `maxPages` when the requested search has more pages.

**A URL is rejected.**
Use a public MyHome.ie residential search or brochure URL.
Other domains and unrelated MyHome.ie sections are intentionally unsupported.

**The run reports missing SSR state.**
The source may be returning a temporary challenge or changed page structure.
Retry later with a small limit and review the run log; do not interpret the failed run as an empty market.

**Photo links later stop working.**
The dataset stores source links, not image binaries.
Download media only when you have the right to retain it and need independent archival storage.

### FAQ

#### Does it require a MyHome account or API key?

No.
It reads public residential search and brochure pages.

#### Can it find previous house listings that are already gone?

No.
It collects listings that are publicly reachable at run time.
Run it on a schedule and retain your datasets if you need a future historical archive.

#### Does it compare this run with a previous run automatically?

It exposes stable IDs, source timestamps, `changeType`, and price-change data for comparison.
Your Task, database, spreadsheet, or automation should retain and compare snapshots.

#### Can it download every photo?

It returns all public full-size photo URLs found in the brochure state.
It does not download binaries, which keeps runs faster and less expensive.

#### Can I scrape rental listings or a selected county?

Use the corresponding public MyHome.ie residential search URL.
The Actor preserves its location, property-type, sale/rental, and query parameters while paginating.

#### Are records charged when a date filter excludes them?

No.
The item event is charged only for complete records saved to the default dataset.

### Related Actors

For cross-source Irish market research, see the Automation Lab portfolio on Apify for other public real-estate data Actors as they become available.
This Actor is intentionally limited to MyHome.ie and does not claim Daft.ie coverage.

# Actor input Schema

## `startUrls` (type: `array`):

Residential search pages and/or individual brochure URLs on myhome.ie. Search filters in each URL are preserved.

## `maxItems` (type: `integer`):

Stop after saving this many listings.

## `maxPages` (type: `integer`):

Safety limit for pagination. Individual brochure URLs do not use this setting.

## `modifiedAfter` (type: `string`):

Optional ISO 8601 date-time. Save only listings created or modified on or after this time; useful for weekly archive runs.

## `includeDescription` (type: `boolean`):

Include the complete public brochure description in each record.

## `includePhotos` (type: `boolean`):

Include all public full-size listing photo URLs. Images are linked, not downloaded.

## `maxConcurrency` (type: `integer`):

Number of listing pages fetched at once. Keep the default for reliable recurring runs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.myhome.ie/residential/ireland/property-for-sale"
    }
  ],
  "maxItems": 20,
  "maxPages": 5,
  "includeDescription": true,
  "includePhotos": true,
  "maxConcurrency": 3
}
```

# Actor output Schema

## `overview` (type: `string`):

Open the default dataset in the property-listings overview view.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.myhome.ie/residential/ireland/property-for-sale"
        }
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/myhome-ireland-property-listings-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 = {
    "startUrls": [{ "url": "https://www.myhome.ie/residential/ireland/property-for-sale" }],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/myhome-ireland-property-listings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.myhome.ie/residential/ireland/property-for-sale"
    }
  ],
  "maxItems": 20
}' |
apify call automation-lab/myhome-ireland-property-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automation-lab/myhome-ireland-property-listings-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/KcymzcUuXefakLfKU/builds/rULyaQnEwQOqmx4cG/openapi.json
