# Oneroof Property Search Scraper (`stealth_mode/oneroof-property-search-scraper`) Actor

Scrape detailed property listings from OneRoof.co.nz with precision. Collect prices, bedrooms, bathrooms, images, location data, and 100+ fields per property — perfect for real estate analysts, investors, researchers, and platform developers.

- **URL**: https://apify.com/stealth\_mode/oneroof-property-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## OneRoof Property Search Scraper: Extract NZ Real Estate Data at Scale

---

### What Is OneRoof.co.nz?

OneRoof.co.nz is New Zealand's largest and most trusted property portal, listing residential and commercial real estate across the country. With hundreds of thousands of active listings, it serves as the primary marketplace for home buyers, renters, and investors. Collecting property data manually is labor-intensive and error-prone — the **OneRoof Property Search Scraper** automates extraction, delivering structured datasets ideal for market analysis, investment research, and integration into custom platforms.

---

### Overview

The **OneRoof Property Search Scraper** extracts comprehensive property details from OneRoof search result pages, transforming listings into clean, machine-readable records. It captures everything from basic details (bedrooms, bathrooms, price) to advanced metadata (AVM valuations, project information, agent details, and high-resolution images).

Ideal for:

- **Real estate investors** tracking market trends by region, price band, and property type
- **Data analysts** building NZ property datasets for research and benchmarking
- **Property aggregator platforms** feeding licensed data into custom portals
- **Market researchers** monitoring listing velocity, pricing patterns, and inventory health
- **Developers** building property search APIs or comparison tools

Strengths include flexible URL filtering, configurable item limits, robust error handling, and rich output spanning property attributes, images, pricing, location data, and agent information.

---

### Input Format

The scraper accepts a JSON configuration to control the collection scope:

```json
{
  "urls": [
    "https://www.oneroof.co.nz/search/houses-for-sale/region_all-new-zealand-1_bedroom_2_order_latest-0_property-type_house-1_page_2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Field | Type | Description |
|---|---|---|
| `urls` | Array of strings | Direct links to OneRoof search result pages (filtered by region, property type, price, bedrooms, etc.). URLs can include query parameters for refined searches. |
| `max_items_per_url` | Integer | Maximum number of properties to extract per URL. Set to `200` for comprehensive collection or lower values for targeted sampling. |
| `ignore_url_failures` | Boolean | If `true`, the scraper skips failed URLs and continues running. If `false`, it stops on the first failure. Recommended: `true` for large-scale runs. |

> **Best practice:** Customize OneRoof search URLs using their filter interface (region, property type, price range, bedrooms, sort order) before pasting into the scraper. This reduces data noise and speeds collection.

***

### Output Format

**Sample output**

```json
{
  "id": 2469857,
  "uid": "62pIN",
  "slug": "central-otago-lakes-district/alexandra/29b-station-street/62pIN",
  "is_carousel": false,
  "is_premium": false,
  "listing_type_id": 1,
  "type_id": 1,
  "teaser": "Modern, Chic, Practical",
  "brief": "",
  "images": [
    "https://s.oneroof.co.nz/image/1f/77/1f7717515bcdbc3b98aff57570410b07.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/24/17/241763163bab02f30c5af540ebfd22b8.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/d0/f0/d0f0124013d4f2c8aaa0c6b9924dee0a.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/a4/29/a429e0a73032de23e8e5021e9c505ddf.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/67/e0/67e0dad0fc7d98eec90fb4697f7766bc.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/a9/48/a948bcea08c5bd56c77b2146e787018f.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/41/e3/41e3768d891f26c431d5c9ff93e1c1c3.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/56/07/5607a294e123840e739e566917483bfc.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/06/aa/06aa45ed09a89875c1151b3b807b31c4.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/90/59/905972ae2a25fe0393733e9d7880beda.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/cf/1e/cf1e60fff27d2d03c561dc627da7b86f.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/09/62/0962e1671e9c2ec12bb7fe214d6815fa.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/a7/55/a7550317b4b931c80f75163a3bf2eaa5.jpg?x-oss-process=image/quality,q_80",
    "https://s.oneroof.co.nz/image/c1/70/c17024a046be4e628d66f04c149421a1.jpg?x-oss-process=image/quality,q_80"
  ],
  "image_tag_tidy": [
    {
      "key": "living room",
      "label": "Living Room",
      "images": [
        "https://s.oneroof.co.nz/image/24/17/241763163bab02f30c5af540ebfd22b8.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/d0/f0/d0f0124013d4f2c8aaa0c6b9924dee0a.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/a4/29/a429e0a73032de23e8e5021e9c505ddf.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/67/e0/67e0dad0fc7d98eec90fb4697f7766bc.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/cf/1e/cf1e60fff27d2d03c561dc627da7b86f.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/a7/55/a7550317b4b931c80f75163a3bf2eaa5.jpg?x-oss-process=image/quality,q_80"
      ]
    },
    {
      "key": "kitchen",
      "label": "Kitchen",
      "images": [
        "https://s.oneroof.co.nz/image/24/17/241763163bab02f30c5af540ebfd22b8.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/d0/f0/d0f0124013d4f2c8aaa0c6b9924dee0a.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/a4/29/a429e0a73032de23e8e5021e9c505ddf.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/a9/48/a948bcea08c5bd56c77b2146e787018f.jpg?x-oss-process=image/quality,q_80"
      ]
    },
    {
      "key": "bedroom",
      "label": "Bedroom",
      "images": [
        "https://s.oneroof.co.nz/image/41/e3/41e3768d891f26c431d5c9ff93e1c1c3.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/06/aa/06aa45ed09a89875c1151b3b807b31c4.jpg?x-oss-process=image/quality,q_80"
      ]
    },
    {
      "key": "bathroom",
      "label": "Bathroom",
      "images": [
        "https://s.oneroof.co.nz/image/56/07/5607a294e123840e739e566917483bfc.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/90/59/905972ae2a25fe0393733e9d7880beda.jpg?x-oss-process=image/quality,q_80"
      ]
    },
    {
      "key": "real estate exterior",
      "label": "Exterior",
      "images": [
        "https://s.oneroof.co.nz/image/1f/77/1f7717515bcdbc3b98aff57570410b07.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/a4/29/a429e0a73032de23e8e5021e9c505ddf.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/cf/1e/cf1e60fff27d2d03c561dc627da7b86f.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/09/62/0962e1671e9c2ec12bb7fe214d6815fa.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/a7/55/a7550317b4b931c80f75163a3bf2eaa5.jpg?x-oss-process=image/quality,q_80"
      ]
    },
    {
      "key": "aerial shot",
      "label": "Aerial View",
      "images": [
        "https://s.oneroof.co.nz/image/09/62/0962e1671e9c2ec12bb7fe214d6815fa.jpg?x-oss-process=image/quality,q_80"
      ]
    },
    {
      "key": "floor plan",
      "label": "Floor Plan",
      "images": [
        "https://s.oneroof.co.nz/image/c1/70/c17024a046be4e628d66f04c149421a1.jpg?x-oss-process=image/quality,q_80"
      ]
    },
    {
      "key": "other room",
      "label": "Others",
      "images": [
        "https://s.oneroof.co.nz/image/1f/77/1f7717515bcdbc3b98aff57570410b07.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/1f/77/1f7717515bcdbc3b98aff57570410b07.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/24/17/241763163bab02f30c5af540ebfd22b8.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/d0/f0/d0f0124013d4f2c8aaa0c6b9924dee0a.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/67/e0/67e0dad0fc7d98eec90fb4697f7766bc.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/67/e0/67e0dad0fc7d98eec90fb4697f7766bc.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/a9/48/a948bcea08c5bd56c77b2146e787018f.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/41/e3/41e3768d891f26c431d5c9ff93e1c1c3.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/41/e3/41e3768d891f26c431d5c9ff93e1c1c3.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/06/aa/06aa45ed09a89875c1151b3b807b31c4.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/06/aa/06aa45ed09a89875c1151b3b807b31c4.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/cf/1e/cf1e60fff27d2d03c561dc627da7b86f.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/09/62/0962e1671e9c2ec12bb7fe214d6815fa.jpg?x-oss-process=image/quality,q_80",
        "https://s.oneroof.co.nz/image/a7/55/a7550317b4b931c80f75163a3bf2eaa5.jpg?x-oss-process=image/quality,q_80"
      ]
    }
  ],
  "property_image_from_house_id": 0,
  "oss_images": [],
  "floor_plan_images": [],
  "detail_images": [],
  "new_house": false,
  "price_method": 13,
  "price_bold": "Enquiries Over $749,000",
  "price_light": null,
  "auction": null,
  "open_homes": {
    "times": [
      {
        "id": 72172316,
        "start": "1781397000",
        "end": "1781398800",
        "is_added": false,
        "link": null,
        "zoom_id": null,
        "platforms": null
      }
    ]
  },
  "online_open_homes": null,
  "online_auctions": null,
  "showroom": null,
  "showroom_time": null,
  "type": "Residential for sale",
  "category": "House",
  "category_id": 1,
  "category_logo": "",
  "sub_category": "",
  "sub_category_id": null,
  "has_saved_search": false,
  "is_favourite": false,
  "enquired": false,
  "is_viewed": false,
  "tracked": false,
  "bedrooms": 2,
  "bathrooms": 2,
  "carspaces": 2,
  "underline_color": "#000000",
  "font_color": "#000000",
  "bg_color": "#ffffff",
  "button_color": "#000000",
  "landarea": 335,
  "land_area_unit": 1,
  "land_area_string": "335m&sup2;",
  "floorarea": null,
  "floor_area_unit": 1,
  "floor_area_string": null,
  "publish_address": true,
  "suburb_name": "Alexandra",
  "suburb_id": 4184,
  "district_id": 287,
  "region_id": 50,
  "street": "29B Station Street",
  "suburb": "Alexandra",
  "district": "Central Otago",
  "region": "Central Otago/Lakes District",
  "market_time": 1781024400,
  "new_listing": true,
  "lng": 169.395322,
  "lat": -45.2470318,
  "is_recommended": false,
  "is_showcase": false,
  "is_showcase_repeat": null,
  "is_project": false,
  "village_type": 0,
  "project_status": null,
  "is_ready": false,
  "is_land_home": false,
  "ad": null,
  "code": "L41168323",
  "video": "https://www.youtube.com/watch?v=pcY1HJugjic",
  "video_id": "pcY1HJugjic",
  "status": 1,
  "self_listing": true,
  "my_note": null,
  "three_dview": null,
  "share_link": "https://www.oneroof.co.nz/property/central-otago-lakes-district/alexandra/29b-station-street/62pIN",
  "agents": [
    {
      "id": 99894,
      "icon": "https://s.oneroof.co.nz/image/82/72/8272b5d74c007c843d7ce76abbd402db.jpg?x-oss-process=image/quality,q_80",
      "name": "Rhys Chamberlain",
      "phone_number": "0272013172"
    },
    {
      "id": 119529,
      "icon": "https://s.oneroof.co.nz/image/0f/94/0f9487791d641baf87c04427d79bfb6e.jpg?x-oss-process=image/quality,q_80",
      "name": "Renee Suszko",
      "phone_number": "0277234443"
    }
  ],
  "office": {
    "id": 11034,
    "name": "Raine & Horne Alexandra | Cromwell",
    "icon": "https://s.oneroof.co.nz/image/53/a8/53a8500d13402d86b733fabd5014e847.png?x-oss-process=image/quality,q_80",
    "hero_pic": "https://s.oneroof.co.nz/image/50/18/5018b0e6997fbd202f7670983957aee2.jpg?x-oss-process=image/quality,q_80",
    "underline_color": "#000000",
    "font_color": "#000000",
    "bg_color": "#ffffff",
    "button_color": "#000000"
  },
  "tags": [],
  "houses_of_project": [],
  "project_of_house": null,
  "avm": {
    "avm": "$$730,000",
    "high": "$$810,000",
    "low": "$$645,000",
    "rv": "$$700,000",
    "confidence": 3.5,
    "show_avm": true,
    "avm_rv_rate": "left",
    "confidence_score": "High",
    "suburb_month_sale_price12": "$$823,616",
    "suburb_avg_rv": "$$802,426",
    "suburb_sale_rvdiff": 2.64
  },
  "rv": "$$700,000",
  "rv_time": 1756641600,
  "building_age": "2019",
  "median_sale_price": null,
  "updated": null,
  "last_view_time": null,
  "property_floor_area": null,
  "property_land_area": null,
  "village_logo_detail": null,
  "village_logo_bottom": null,
  "village_contact_email": null,
  "village_contact_phone": null,
  "village_second_contact_email": null,
  "village_second_contact_phone": null,
  "village_contact_name": null,
  "village_second_contact_name": null,
  "village_link": null,
  "village_color_bottom": null,
  "nzme_info": null,
  "available_floor_plans": [],
  "unit_order": [],
  "living_options": [],
  "is_coming_soon": false,
  "available_date": null,
  "from_url": "https://www.oneroof.co.nz/search/houses-for-sale/region_all-new-zealand-1_bedroom_2_order_latest-0_property-type_house-1_page_2"
}
```

Each property returns a comprehensive record with 100+ fields:

#### Core Identification

| Field | Meaning |
|---|---|
| `ID` | Unique internal OneRoof property identifier |
| `UID` | Alternate unique identifier for cross-referencing |
| `Slug` | URL-friendly property identifier |
| `Code` | Listing code assigned by the agent or OneRoof |
| `Status` | Current listing status (active, sold, withdrawn, etc.) |

#### Listing Type & Promotion

| Field | Meaning |
|---|---|
| `Listing Type ID` | Categorization of the listing type |
| `Type ID` | Property transaction type (sale, rent, etc.) |
| `Is Carousel` | Whether the property has a carousel image gallery |
| `Is Premium` | Premium/featured listing flag |
| `Is Showcase` | Featured showcase placement on OneRoof |
| `Is Showcase Repeat` | Repeated showcase promotion |
| `New Listing` | Flag indicating a recently added listing |
| `Is Coming Soon` | Whether the property is coming soon but not live |
| `Available Date` | Date when the property becomes available (for rentals/projects) |

#### Property Attributes & Specifications

| Field | Meaning |
|---|---|
| `Bedrooms` | Number of bedrooms |
| `Bathrooms` | Number of bathrooms |
| `Carspaces` | Number of car parking spaces |
| `Type` | Property type (house, apartment, townhouse, section, etc.) |
| `Category` | Property category |
| `Category ID` | Numeric ID for the category |
| `Sub Category` | Detailed property subcategory |
| `Sub Category ID` | Numeric ID for the subcategory |
| `New House` | Whether this is a new build property |
| `Is Land Home` | Whether the listing includes land-only or home + land |
| `Is Ready` | Ready-to-occupy flag for new properties |
| `Building Age` | Age of the building structure |

#### Pricing Information

| Field | Meaning |
|---|---|
| `Price Method` | How price is displayed (fixed, auction, tender, etc.) |
| `Price Bold` | Prominent price display value |
| `Price Light` | Secondary/lighter price information |
| `Median Sale Price` | Comparable median price for the area |
| `AVM` | Automated Valuation Model (estimated property value) |
| `RV` | Rateable Value (council assessment) |
| `RV Time` | Last update timestamp for RV |
| `Auction` | Whether property is going to auction |
| `Online Auctions` | Online auction event details |
| `Online Open Homes` | Virtual open home scheduled |

#### Size & Area Details

| Field | Meaning |
|---|---|
| `Land Area` | Plot/land size value |
| `Land Area Unit` | Unit of measurement (sqm, hectares) |
| `Land Area String` | Human-readable land area text |
| `Floor Area` | Building floor area |
| `Floor Area Unit` | Floor area unit (sqm) |
| `Floor Area String` | Human-readable floor area text |
| `Property Floor Area` | Calculated floor area for standardization |
| `Property Land Area` | Calculated land area for standardization |

#### Location & Geography

| Field | Meaning |
|---|---|
| `Publish Address` | Street address displayed in the listing |
| `Street` | Street name only |
| `Suburb Name` | Suburb/locality name |
| `Suburb ID` | Suburb numeric identifier |
| `Suburb` | Full suburb information object |
| `District` | District/city name |
| `District ID` | District numeric identifier |
| `Region` | Region/state name (e.g., Auckland, Canterbury) |
| `Region ID` | Region numeric identifier |
| `Latitude` | Geographic latitude coordinate |
| `Longitude` | Geographic longitude coordinate |
| `Market Time` | Time listed on the OneRoof market |

#### Images & Media

| Field | Meaning |
|---|---|
| `Images` | Array of property image URLs and metadata |
| `Image Tag Tidy` | Categorized image tags (kitchen, bedroom, etc.) |
| `Property Image From House ID` | Reference to the originating property ID |
| `OSS Images` | Overseas/international property images |
| `Floor Plan Images` | Floor plan diagrams and URLs |
| `Detail Images` | High-resolution detail photos |
| `Video` | Video listing URLs if available |
| `Video ID` | Video platform identifier |
| `3D View` | 3D tour or virtual walkthrough link |

#### Agent & Office Information

| Field | Meaning |
|---|---|
| `Agents` | Real estate agent name(s) and contact details |
| `Office` | Real estate office/agency information |
| `Self Listing` | Flag if property is self-listed (no agent) |
| `My Note` | Agent notes or internal annotations |

#### Description & Content

| Field | Meaning |
|---|---|
| `Teaser` | Short property headline/teaser text |
| `Brief` | Brief property description |
| `Enquired` | Whether the viewer has inquired about the property |
| `Is Viewed` | Flag indicating if user has viewed this property |
| `Is Favourite` | Favorite/watchlist status flag |
| `Tracked` | Whether property price or status changes are tracked |
| `Has Saved Search` | If property matches a saved search |
| `Is Recommended` | OneRoof's recommendation algorithm flag |

#### Project & Development Properties

| Field | Meaning |
|---|---|
| `Is Project` | Whether the listing is a project/development |
| `Project Status` | Development project status (planning, under construction, completed) |
| `Project Of House` | Project metadata for this property |
| `Houses Of Project` | Related properties in the same project |
| `Village Type` | Village/retirement village type |
| `Available Floor Plans` | Available floor plan options (for projects) |
| `Unit Order` | Unit/lot order number in a project |

#### Open Homes & Viewings

| Field | Meaning |
|---|---|
| `Open Homes` | Scheduled physical open home times |
| `Showroom` | Whether property has a showroom facility |
| `Showroom Time` | Showroom opening hours or scheduled times |

#### Styling & Branding

| Field | Meaning |
|---|---|
| `Underline Color` | Custom listing color (underline) |
| `Font Color` | Custom font color for listing |
| `Background Color` | Custom background color |
| `Button Color` | Custom button color for listing |
| `Category Logo` | Logo associated with the property category |

#### Tags & Classifications

| Field | Meaning |
|---|---|
| `Tags` | User-generated or system tags (pet-friendly, renovated, etc.) |
| `Living Options` | Lifestyle/living options available |

#### Metadata & Administrative

| Field | Meaning |
|---|---|
| `Updated` | Last update timestamp for the listing |
| `Last View Time` | When the property was last viewed |
| `Share Link` | Shareable URL for the property |
| `Ad` | Advertisement/promotion metadata |

#### Additional Data (Village/Project Contacts)

| Field | Meaning |
|---|---|
| `Village Logo Detail` | Village community logo (detailed version) |
| `Village Logo Bottom` | Village logo (bottom placement) |
| `Village Contact Email` | Primary village contact email |
| `Village Contact Phone` | Primary village contact phone |
| `Village Contact Name` | Primary contact person name |
| `Village Second Contact Email` | Secondary contact email |
| `Village Second Contact Phone` | Secondary contact phone |
| `Village Second Contact Name` | Secondary contact person name |
| `Village Link` | Link to village/project website |
| `Village Color Bottom` | Village branding color |

#### Additional Metadata

| Field | Meaning |
|---|---|
| `NZME Info` | New Zealand Media & Entertainment related metadata |

***

### How to Use

1. **Build your search URL** — Use OneRoof.co.nz's advanced search interface to filter by region, property type, price range, bedrooms, and sort order. Copy the resulting URL.

   Example filters:

   - Region: All New Zealand / Specific region (Auckland, Wellington, etc.)
   - Property type: Houses, apartments, sections, commercial
   - Price range: Minimum and maximum price
   - Bedrooms: 1+, 2+, 3+, etc.
   - Sort: Latest, price (high to low), price (low to high)

2. **Paste URLs** — Add one or more search result URLs to the `urls` array. You can scrape multiple searches in one run.

3. **Configure limits** — Set `max_items_per_url` based on your needs:
   - `20–50`: Quick samples or specific searches
   - `100–200`: Comprehensive regional datasets
   - Higher values for market-wide collections

4. **Enable error handling** — Set `ignore_url_failures: true` for robustness. This allows the scraper to skip broken links and continue.

5. **Run the scraper** — Start the actor and monitor progress. Results appear in JSON, CSV, or Excel format.

6. **Export & analyze** — Download the dataset and import into spreadsheets, databases, or BI tools for further analysis.

**Tips:**

- **Pagination:** OneRoof URLs include page numbers. Modify page parameters to collect multiple pages in sequence, or scrape one page at a time.
- **Filtering:** Use OneRoof filters to narrow results. Narrow searches are faster and return more relevant data.
- **Rate limiting:** For large-scale runs, monitor for temporary blocks and use delays between requests if needed.

***

### Use Cases & Business Value

- **Investment analysis:** Track property prices, market time, and inventory by region and property type
- **Market intelligence:** Monitor competitor listings, pricing strategies, and market velocity
- **Market research:** Analyze NZ property market trends, affordability, supply/demand patterns
- **Data products:** Feed property data into custom search platforms, comparison tools, or investment apps
- **Portfolio management:** Track properties matching specific investment criteria (price, location, age)
- **Valuation benchmarking:** Compare AVM and RV estimates across comparable properties
- **Development tracking:** Monitor new projects and their progress toward completion

The **OneRoof Property Search Scraper** eliminates weeks of manual research, providing actionable datasets that power smarter investment and market decisions.

***

### Conclusion

The **OneRoof Property Search Scraper** unlocks the full value of New Zealand's largest property dataset. With over 100 data fields per property — spanning pricing, location, imagery, and agent details — it enables investors, researchers, and platform developers to build data-driven strategies and products. Start scraping today and transform OneRoof listings into competitive intelligence.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.oneroof.co.nz/search/houses-for-sale/region_all-new-zealand-1_bedroom_2_order_latest-0_property-type_house-1_page_2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.oneroof.co.nz/search/houses-for-sale/region_all-new-zealand-1_bedroom_2_order_latest-0_property-type_house-1_page_2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/oneroof-property-search-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 = {
    "urls": ["https://www.oneroof.co.nz/search/houses-for-sale/region_all-new-zealand-1_bedroom_2_order_latest-0_property-type_house-1_page_2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/oneroof-property-search-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.oneroof.co.nz/search/houses-for-sale/region_all-new-zealand-1_bedroom_2_order_latest-0_property-type_house-1_page_2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/oneroof-property-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/oneroof-property-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Oneroof Property Search Scraper",
        "description": "Scrape detailed property listings from OneRoof.co.nz with precision. Collect prices, bedrooms, bathrooms, images, location data, and 100+ fields per property — perfect for real estate analysts, investors, researchers, and platform developers.",
        "version": "0.0",
        "x-build-id": "xH4viqZy7sDyVjNK5"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~oneroof-property-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-oneroof-property-search-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/stealth_mode~oneroof-property-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-oneroof-property-search-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/stealth_mode~oneroof-property-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-oneroof-property-search-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": {
                    "urls": {
                        "title": "URLs of the property list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
