OneRoof API & Scraper
The OneRoof API returns New Zealand property from oneroof.co.nz as clean JSON in NZD.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
search lists homes for sale, for rent or recently sold in a region, district or any set of suburbs, filtered by property type, bedrooms, bathrooms, price and keyword: each row has the listing URL, address, coordinates, how the home is being sold (asking price, negotiation, auction, tender, deadline sale, enquiries over) or the weekly rent, bedrooms, bathrooms, parking, floor and land area, photos, the listing agents with their phone numbers, the agency, open homes, OneRoof's value estimate with its low-high range and the council rating valuation; sold rows carry the sale price, date and method. listing returns one listing in full with the description, every photo and floor plan, the agents' phone and email, the agency's contact details, the council valuation and the property's sale history. property returns any New Zealand address, on the market or not: OneRoof's estimate, land, improvements and capital value, the last sale and the full sale, listing and valuation history, title, zoning and construction records. suburb returns the median sale price, median weekly rent, rental yield and capital growth with census figures - the inputs a rent-versus-buy or affordability calculator needs. suggest turns a place name or address into the ids the other actions use. No account, no browser - one ReefAPI key and the standard { ok, data, meta, error } envelope.
Most New Zealand homes for sale show no price - here is what you get instead
On 120 live OneRoof rows on 2026-11-07 (sale and rent, six searches), every row had a URL, an address and the site's own price wording, but only 39 carried a dollar figure: all 20 rentals and the minority of sales with an asking price or a lower bound. The API never turns a missing price into 0.
| What the listing says | price | price_qualifier | sale_method |
|---|---|---|---|
| $619,000 / Asking price $739,000 | 619000 / 739000 | asking | asking_price |
| Enquiries Over $1.59M | 1590000 | from | enquiries_over |
| By negotiation | null | null | negotiation |
| Auction 03 Dec 2026 11:00 | null | null | auction (sale_date_display keeps the date) |
| $320 per week (rental) | 320 | per_week | null |
For a number on every home, use the estimate: OneRoof publishes its value estimate with a low-high range and a confidence label on most listings (69 of 120 rows, including rentals, where it is the value of the home, not a rent), and property returns it for any address. The price filter still works on unpriced listings: OneRoof matches them on the price the agent gave it, which is not shown.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/oneroof/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"region": "auckland",
"limit": 10
}
}{
"ok": true,
"meta": {
"api": "oneroof",
"endpoint": "search",
"mode": "live",
"latency_ms": 1112.8,
"record_count": 10,
"bytes": 107847,
"cache_hit": false,
"pagination": {
"page": 1,
"has_more": true,
"page_size": 10,
"total": 17064
},
"charged_credits": 2,
"version": "0.1.0",
"request_id": "b06fd1b8ac56493f",
"fetched_at": "2026-11-06T22:29:45.454Z"
},
"data": {
"purpose": "sale",
"sort": "featured",
"results": [
{
"listing_id": 2549010,
"url": "https://www.oneroof.co.nz/property/auckland/freemans-bay/36-spring-street/l7moE",
"title": "Spring Break - its Freemans Bay!",
"address": "36 Spring Street, Freemans Bay, Auckland City, Auckland",
"street": "36 Spring Street",
"address_withheld": false,
"suburb": "Freemans Bay",
"district": "Auckland City",
"region": "Auckland",
"suburb_id": 1454,
"district_id": 225,
"region_id": 35,
"latitude": -36.8488071,
"longitude": 174.7501323,
"price": null,
"price_qualifier": null,
"price_display": "Set Date of Sale 26 Nov 2026 16:00",
"currency": "NZD",
"sale_method": "set_date_of_sale",
"sale_method_code": 17,
"sale_date_display": "26 Nov 2026 16:00",
"auction_at": null,
"listing_type": "Residential for sale",
"property_type": "Townhouse",
"bedrooms": 2,
"bathrooms": 1,
"parking": 1,
"floor_area_m2": 78,
"land_area_m2": null,
"image": "https://s.oneroof.co.nz/image/d7/7b/d77b4e0282d31f58baa5771f843faa0c.jpg?x-oss-process=image/quality,q_80",
"images": [
"https://s.oneroof.co.nz/image/d7/7b/d77b4e0282d31f58baa5771f843faa0c.jpg?x-oss-process=image/quality,q_80",
"https://s.oneroof.co.nz/image/8d/9e/8d9ebb409c853079d8a6f6e21bfaacd8.jpg?x-oss-process=image/quality,q_80",
"https://s.oneroof.co.nz/image/c0/9f/c09fa8e3f635bd82d3ab33da369f2b03.jpg?x-oss-process=image/quality,q_80"
],
"floor_plan_images": [
"https://s.oneroof.co.nz/image/17/b2/17b2c508aff49c9cce6818540b8c1b76.jpg?x-oss-process=image/quality,q_80"
],
"agents": [
{
"agent_id": "[trimmed-depth]",
"name": "[trimmed-depth]",
"phone": "[trimmed-depth]",
"photo": "[trimmed-depth]"
}
],
"agency": {
"agency_id": 122,
"name": "Bayleys Real Estate Ltd (Licensed: REAA 2008) - Bayleys, Auckland Central - Residential",
"logo": "https://s.oneroof.co.nz/image/3b/29/3b291efc7b46be09a66f4c4058daf534.jpg?x-oss-process=image/quality,q_80"
},
"open_homes": [
{
"start": "[trimmed-depth]",
"end": "[trimmed-depth]"
}
],
"listed_date": "2026-11-07",
"is_new_listing": true,
"is_new_build": false,
"estimate": {
"value": 875000,
"low": 785000,
"high": 960000,
"confidence": 5,
"confidence_label": "High",
"rateable_value": 960000,
"estimate_vs_rateable_value": "right",
"suburb_median_sale_price_12m": 1845494,
"suburb_average_rateable_value": 1864026,
"suburb_sale_vs_rateable_value_percent": -0.99,
"currency": "NZD"
},
"rateable_value": 960000,
"rateable_value_date": "2024-05-01",
"decade_built": "2006",
"available_date": null,
"has_video": false
},
{
"listing_id": 2549009,
"url": "https://www.oneroof.co.nz/property/auckland/eden-terrace/157-symonds-street/LnA9q",
"title": "THREE BEDROOMS. ZERO COOKIE-CUTTER.",
"address": "157 Symonds Street, Eden Terrace, Auckland City, Auckland",
"street": "157 Symonds Street",
"address_withheld": false,
"suburb": "Eden Terrace",
"district": "Auckland City",
"region": "Auckland",
"suburb_id": 2971,
"district_id": 225,
"region_id": 35,
"latitude": -36.8623158,
"longitude": 174.7610835,
"price": 619000,
"price_qualifier": "asking",
"price_display": "$619,000",
"currency": "NZD",
"sale_method": "asking_price",
"sale_method_code": 1,
"sale_date_display": null,
"auction_at": null,
"listing_type": "Residential for sale",
"property_type": "Apartment",
"bedrooms": 3,
"bathrooms": 1,
"parking": null,
"floor_area_m2": 84,
"land_area_m2": null,
"image": "https://s.oneroof.co.nz/image/87/39/87393e66bfb0ab502b120e02f21bd896.jpg?x-oss-process=image/quality,q_80",
"images": [
"https://s.oneroof.co.nz/image/87/39/87393e66bfb0ab502b120e02f21bd896.jpg?x-oss-process=image/quality,q_80",
"https://s.oneroof.co.nz/image/d3/ac/d3acf7489abd07151c0bed2eb7928d3b.jpg?x-oss-process=image/quality,q_80",
"https://s.oneroof.co.nz/image/12/59/125906b845ff5491b3a13657d4bdfead.jpg?x-oss-process=image/quality,q_80"
],
"floor_plan_images": [],
"agents": [
{
"agent_id": "[trimmed-depth]",
"name": "[trimmed-depth]",
"phone": "[trimmed-depth]",
"photo": "[trimmed-depth]"
}
],
"agency": {
"agency_id": 10340,
"name": "Apartment Specialists Group Ltd (Licensed REAA 2008)",
"logo": "https://s.oneroof.co.nz/image/00/b9/00b98a474aa03a8e1ed3b71e70263741.jpg?x-oss-process=image/quality,q_80"
},
"open_homes": [],
"listed_date": "2026-11-07",
"is_new_listing": true,
"is_new_build": false,
"estimate": {
"value": 640000,
"low": 515000,
"high": 770000,
"confidence": 0.5,
"confidence_label": "Low",
"rateable_value": 590000,
"estimate_vs_rateable_value": "left",
"suburb_median_sale_price_12m": 988257,
"suburb_average_rateable_value": 1067951,
"suburb_sale_vs_rateable_value_percent": -7.46,
"currency": "NZD"
},
"rateable_value": 590000,
"rateable_value_date": "2024-05-01",
"decade_built": "1960",
"available_date": null,
"has_video": false
},
{
"listing_id": 2549008,
"url": "https://www.oneroof.co.nz/property/auckland/parnell/2-cracroft-street/SwYmz",
"title": "One. Of. A. Kind.",
"address": "2 Cracroft Street, Parnell, Auckland City, Auckland",
"street": "2 Cracroft Street",
"address_withheld": false,
"suburb": "Parnell",
"district": "Auckland City",
"region": "Auckland",
"suburb_id": 3838,
"district_id": 225,
"region_id": 35,
"latitude": -36.8524794,
"longitude": 174.7778933,
"price": null,
"price_qualifier": null,
"price_display": "By negotiation",
"currency": "NZD",
"sale_method": "negotiation",
"sale_method_code": 2,
"sale_date_display": null,
"auction_at": null,
"listing_type": "Residential for sale",
"property_type": "Apartment",
"bedrooms": 1,
"bathrooms": 1,
"parking": 2,
"floor_area_m2": null,
"land_area_m2": null,
"image": "https://s.oneroof.co.nz/image/23/37/23378fa4c485f5c0d79d4daaff6c6052.jpg?x-oss-process=image/quality,q_80",
"images": [
"https://s.oneroof.co.nz/image/23/37/23378fa4c485f5c0d79d4daaff6c6052.jpg?x-oss-process=image/quality,q_80",
"https://s.oneroof.co.nz/image/66/18/66181c3297797289abe41b0552d81ef9.jpg?x-oss-process=image/quality,q_80",
"https://s.oneroof.co.nz/image/55/de/55defa8df837f72206635e26f369420d.jpg?x-oss-process=image/quality,q_80"
],
"floor_plan_images": [],
"agents": [
{
"agent_id": "[trimmed-depth]",
"name": "[trimmed-depth]",
"phone": "[trimmed-depth]",
"photo": "[trimmed-depth]"
}
],
"agency": {
"agency_id": 10340,
"name": "Apartment Specialists Group Ltd (Licensed REAA 2008)",
"logo": "https://s.oneroof.co.nz/image/00/b9/00b98a474aa03a8e1ed3b71e70263741.jpg?x-oss-process=image/quality,q_80"
},
"open_homes": [],
"listed_date": "2026-11-07",
"is_new_listing": true,
"is_new_build": false,
"estimate": {
"value": 2110000,
"low": 1750000,
"high": 2465000,
"confidence": 1.5,
"confidence_label": "Medium",
"rateable_value": 2125000,
"estimate_vs_rateable_value": "right",
"suburb_median_sale_price_12m": 1957741,
"suburb_average_rateable_value": 2099220,
"suburb_sale_vs_rateable_value_percent": -6.74,
"currency": "NZD"
},
"rateable_value": 2125000,
"rateable_value_date": "2024-05-01",
"decade_built": "1910",
"available_date": null,
"has_video": false
}
],
"count": 10,
"total_results": 17064,
"page": 1,
"limit": 10,
"has_more": true,
"resolved_location": null,
"filters": {
"region": "auckland",
"location_level_sent": "region"
}
}
}What the OneRoof API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | New Zealand homes on OneRoof for sale, for rent or recently sold, by region, district or suburb(s): listing URL, address, coordinates, price or how it is being sold (asking price, negotiation, auction, tender, deadline sale, enquiries over) or weekly rent, bedrooms, bathrooms, parking, floor and land area, property type, photos, the listing agents with phone numbers and the agency, open homes, the site's value estimate and the council rating valuation. Sold returns sale price, date and method. Filter by property type, bedrooms, bathrooms, price and keyword; sort by newest or price. | Real-estate investors call search to get new Zealand homes on OneRoof for sale, for rent or recently sold, by region, district or subu…. | purpose, region, district_id, suburb_id, location, ... |
| listing | One OneRoof listing in full, for sale or for rent: everything in a search row plus the description, every photo and floor plan, the listing agents with phone, email and job title, the agency's phone, email and address, open homes, bond for rentals, the council valuation (land, improvements, capital value and date), title type, legal description, zoning and construction, the property's sale, listing and valuation history, and the suburb's median sale price, median rent and yield. | Brokerage tools call listing to get one OneRoof listing in full, for sale or for rent. | listing_id, max_rotations |
| property | Any New Zealand property on OneRoof, listed or not, by property id, address or URL: the site's value estimate with low-high range and confidence, the council valuation (land, improvements, capital value and date, change since the last valuation), the last sale price and date, the full sale, listing, valuation and building-consent history, bedrooms, bathrooms, floor and land area, title, zoning and construction records, the current listing if it is on the market, and the suburb's median sale price, median weekly rent, rental yield and capital growth. | Property dashboards call property to get any New Zealand property on OneRoof, listed or not, by property id, address or URL. | property_id, address, url, max_rotations |
| suburb | A New Zealand suburb's property market on OneRoof: median sale price, median weekly rent, rental yield and capital growth, with the census median age, median income, years in home and home ownership split. By suburb id or name. | Lead-generation teams call suburb to get a New Zealand suburb's property market on OneRoof. | suburb_id, name, max_rotations |
| suggest | OneRoof's own location and address lookup: regions, districts and suburbs with their ids and live listing counts (for search), streets, and matching properties with property and listing ids (for property and listing). | Real-estate investors call suggest to get oneRoof's own location and address lookup. | query, purpose, max_rotations |
Call search from your stack
curl -X POST https://api.reefapi.com/oneroof/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"region":"auckland","limit":10}'import os
import requests
REEF_KEY = os.environ["REEF_KEY"]
r = requests.post(
"https://api.reefapi.com/oneroof/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"region": "auckland",
"limit": 10
},
timeout=90,
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/oneroof/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"region": "auckland",
"limit": 10
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.oneroof.search with {"region":"auckland","limit":10}.Who uses this API and why
- Rent-versus-buy calculators: suburb median rent and yield next to median sale price and live listings
- Affordability tools: homes in a price band across chosen suburbs, with the estimate when no price is shown
- Comparable sales for a valuation: recent sold prices and dates by suburb or district
- Property reports: estimate, council valuation and sale history for any New Zealand address
Questions developers ask before integrating
Can I get a value estimate for a house that is not for sale?
Yes. property takes a property id, a street address or a OneRoof URL and returns OneRoof's estimate (value, low, high, confidence), the council valuation split into land, improvements and capital value with its date and change since the last valuation, the last sale price and date, and the full history of sales, listings, valuations and building consents. If the home is on the market, current_listing links to the listing.
Is there a rental estimate for a single property?
OneRoof does not publish one for a logged-out visitor, so the API does not invent it. What it does publish is the suburb's median weekly rent, rental yield, median sale price and capital growth - suburb returns them, and listing and property include them for the home's suburb. Current asking rents come from search with purpose rent.
Do I get the agent's contact details?
search rows include each listing agent's name and phone number and the agency name. listing adds the agent's email and job title and the agency's phone, email and address, as OneRoof publishes them. In the live run 159 of 170 agents on search rows had a phone number.
How do I search several suburbs at once?
Pass suburb_id as a list (suggest returns the ids, and every row carries suburb_id, district_id and region_id), or location with a single place name. Add include_surrounding_suburbs to widen to the neighbouring suburbs, as the site does. The most specific level wins: suburbs over district over region.
Why do some recent sales have no price?
Agents often report a sale before the price is public: among the 30 most recent sales in Auckland City on 2026-11-07, 22 said only 'Sold by negotiation' or 'Sold at fixed price'. sold_price is null for those, never 0, and sale_method_display keeps the site's wording. Two rows carried agent-entered sale dates decades in the future; they are flagged sold_date_is_future.
What is the OneRoof API?
OneRoof API is a ReefAPI endpoint group for new zealand homes for sale and rent, recent sales, value estimates and suburb rents, in nzd. It returns live JSON through POST requests under /oneroof/v1.
Is the OneRoof API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. OneRoof calls use the same shared credit balance as every other ReefAPI engine.
Do I need an OneRoof login or account?
No login to OneRoof is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the OneRoof data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the OneRoof API use?
OneRoof actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call OneRoof from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call oneroof actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the OneRoof API an OneRoof scraper?
It is the managed alternative to a DIY OneRoof scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same new zealand homes for sale and rent, recent sales, value estimates and suburb rents, in nzd back as clean JSON.
Why does my OneRoof scraper keep getting blocked?
Most OneRoof scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.