Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "compare_listings", "get_listing_details", "quote_service_booking" and 2 more
⟨792 unchanged words⟩ "type":["string","null"]},"listingCluster":{"description":"Search only: this result stands for listingCount listings one agent lists at one address (scope address) or in one development (scope development), itself and otherListingIds, priced minPrice to maxPrice. Absent for a listing no other on this page or the next joins. The listings may be different homes, since an agent can list two flats in one block; pass an id to get_listing_details to tell them apart.","properties":{"listingCount":{"minimum":2,"type":"integer"},"listingsOnThisPage":{"description":"Present when some of them are on the next page: how many are on this one. The next page leaves those out and names this result in continuedClusters.","minimum":1,"type":"integer"},"maxPrice":{"type":["number","null"]},"minPrice":{"type":["number","null"]},"otherListingIds":{"items":{"type":"string"},"type":"array"},"scope":{"enum":["address","development"],"type":"string"}},"required":["listingCount","otherListingIds","scope"],"type":"object"},"listingType":{"description":"For Sale or For ⟨801 unchanged words⟩
⟨691 unchanged words⟩ "type":["string","null"]},"listingCluster":{"description":"Search only: this result stands for listingCount listings one agent lists at one address (scope address) or in one development (scope development), itself and otherListingIds, priced minPrice to maxPrice. Absent for a listing no other on this page or the next joins. The listings may be different homes, since an agent can list two flats in one block; pass an id to get_listing_details to tell them apart.","properties":{"listingCount":{"minimum":2,"type":"integer"},"listingsOnThisPage":{"description":"Present when some of them are on the next page: how many are on this one. The next page leaves those out and names this result in continuedClusters.","minimum":1,"type":"integer"},"maxPrice":{"type":["number","null"]},"minPrice":{"type":["number","null"]},"otherListingIds":{"items":{"type":"string"},"type":"array"},"scope":{"enum":["address","development"],"type":"string"}},"required":["listingCount","otherListingIds","scope"],"type":"object"},"listingType":{"description":"For Sale or For ⟨728 unchanged words⟩
⟨81 unchanged words⟩ total for each; book one of those times. Without the address no time is checked, and the quote leads with requested_time_open: unknown. When none is open, slotsUnavailableReason says whether the ⟨86 unchanged words⟩ say what to change: start_too_soon names theearliestfirst open start after the window when the quote has the service address and asks for the address otherwise, price_changed the new price, invalid_catalog_version the current ⟨11 unchanged words⟩
⟨147 unchanged words⟩ , and most HDB agent deals are rentals. Pass property_type to rank them by their deals in one kind of home there, such as landed for a landed home seller in D10. For a CEA number, or a name only ⟨39 unchanged words⟩
⟨120 unchanged words⟩ "minimum":1,"type":"integer"},"property_type":{"description":"With an area: count only the agents' CEA-recorded deals in that kind of home there (hdb, condo, ec for executive condominiums, or landed for landed and strata landed houses). Leave out to count every kind.","enum":["hdb","condo","ec","landed"],"type":"string"},"query":{"description":"The agent's name, ⟨18 unchanged words⟩
⟨194 unchanged words⟩ HDB in a town, private in a district, or only propertyType's kind of home when set) since `since`, which order the results, ⟨300 unchanged words⟩ "Up to 10 of their public Homejourney listings. Their listings at one address or in one development are one item, whose listingCluster counts them and names the others.
⟨53 unchanged words⟩ description. pagination.total is the exact number of matchinglistings.listings; the listings one agent has at one address or in one development on a page come back as one result whose listingCluster names the others. Returns summaries of active, published Homejourney listings ⟨32 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbFlatTypeUnknownReason":{"description":"For an HDB flat without hdbFlatType: why its type is unverified. no_block and no_block_records: its block has no HDB resale records yet; no_size_match: its size matches no flat type in its block's records; ambiguous: its size fits more than one flat type in its block; no_size: the listing gives no floor area.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them) and preschools (ECDA-licensed childcare centres, kindergartens and early years centres within 1 km: name, place, walkMinutes; credit \"Contains information from ECDA\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbFlatTypeUnknownReason":{"description":"For an HDB flat without hdbFlatType: why its type is unverified. no_block and no_block_records: its block has no HDB resale records yet; no_size_match: its size matches no flat type in its block's records; ambiguous: its size fits more than one flat type in its block; no_size: the listing gives no floor area.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them) and preschools (ECDA-licensed childcare centres, kindergartens and early years centres within 1 km: name, place, walkMinutes; credit \"Contains information from ECDA\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"leaseFilter":{"additionalProperties":true,"description":"How min_remaining_lease_years narrowed the search.","properties":{"candidates":{"description":"Homes matching every other filter.","type":"integer"},"leaseChecked":{"description":"Homes whose lease was checked; fewer than candidates when the search was too broad.","type":"integer"},"leaseUnknown":{"description":"Homes matching every other filter whose lease left is not known; left out.","type":"integer"},"minRemainingLeaseYears":{"type":"integer"}},"type":"object"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"roomMatches":{"description":"Rooms that match when no whole unit does.","type":"integer"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}Changed the definition of "quote_service_booking" and "search_services"
⟨209 unchanged words⟩ "},"totalAmount":{"type":"number"},"url":{"type":"string"}},"required":["serviceType","serviceId"," ⟨21 unchanged words⟩
⟨178 unchanged words⟩ ]},"unit":{"type":"string"},"url":{"type":"string"}},"required":["serviceType","serviceId"," ⟨100 unchanged words⟩
Changed the definition of "search_agents"
⟨516 unchanged words⟩ items":{"additionalProperties":false,"properties":{"bathrooms":{"description":"The home's bathrooms.","type":["number","null"]},"bedrooms":{"description":"The home's bedrooms; for ⟨86 unchanged words⟩ required":["label"],"type":["object","null"]},"squareFeet":{"description":"The home's floor area.","type":["number","null"]},"title":{"type" ⟨142 unchanged words⟩
Changed the definition of "compare_listings", "fetch", "get_listing_details" and 2 more
⟨368 unchanged words⟩ from bedrooms.","type":"string"},"hdbFlatTypeUnknownReason":{"description":"For an HDB flat without hdbFlatType: why its type is unverified. no_block and no_block_records: its block has no HDB resale records yet; no_size_match: its size matches no flat type in its block's records; ambiguous: its size fits more than one flat type in its block; no_size: the listing gives no floor area.","type":"string"},"hdbLease":{"description":"Details and compare, ⟨1169 unchanged words⟩
⟨22 unchanged words⟩ owner or agent contact details, or theguidewholesummary
Changed the definition of "compare_listings", "get_listing_details", "prepare_guest_service_checkout" and 2 more
⟨97 unchanged words⟩ plus price, size, nearest MRT, nearby schools, the nearest childcare centres and preschools and, for an HDB flat, the lease ⟨22 unchanged words⟩
⟨65 unchanged words⟩ cannot answer it (also listed in missingData). nearestPreschools lists the three nearest ECDA-licensed childcare centres, kindergartens and early years centres within 1 km (name, place, distanceKm, walkMinutes); credit \"Contains information from ECDA\" when you show them.","items":{"additionalProperties":true,"properties": ⟨764 unchanged words⟩ "© OpenStreetMap contributors\" when you show them)and, busStops (LTA bus stops within 400 m:
Changed the definition of "prepare_guest_service_checkout"
⟨38 unchanged words⟩ additionalProperties":false,"properties":{"address":{"description":"The service address with its postal code. Required for every service except moving, which takes pickup_address and delivery_address instead.","maxLength":300,"minLength":5,"type":"string"},"delivery_address":{"description":"Required for moving: where the move ends, with its postal code.","maxLength":300,"minLength":5,"type":" ⟨24 unchanged words⟩ 8,"type":"string"},"pickup_address":{"description":"Required for moving: where the move starts, with its postal code.","maxLength":300,"minLength":5,"type": ⟨479 unchanged words⟩
Changed the definition of "compare_listings", "prepare_guest_service_checkout", "quote_service_booking" and 3 more
⟨12 unchanged words⟩ :"Each listing also carries its rank, reasonCodes and reasons (the same reasons in plain words), tradeoffs, and score out of 100 over ⟨1456 unchanged words⟩
⟨102 unchanged words⟩ with the same verified email or WhatsApp number. When someone else lets the technician in, such as a tenant, add them as onsite_contact.
Changed the definition of "compare_listings", "get_listing_details", "search_agents" and 1 more
⟨984 unchanged words⟩ it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for ⟨459 unchanged words⟩
⟨60 unchanged words⟩ it, and Homejourney link. For an owner listing, including a flat its owner lists on HDB Flat Portal, it adds reportUrl, where the user reports ⟨15 unchanged words⟩
Changed the definition of "get_owner_listing_checklist", "quote_service_booking", "search_agents" and 1 more
⟨60 unchanged words⟩ a landlord before collecting the rental details, with the HDB ones in ruleGroups by what is let (the whole flat, rooms, or every HDB rental), and the steps in order: the agent saves ⟨36 unchanged words⟩
⟨112 unchanged words⟩ ["homejourney"],"type":"string"},"nearestOpenTimes":{"items":{"type":"string"},"type":"array"},"prerequisites":{"items":{"type":"string" ⟨23 unchanged words⟩ "]},"providerPackageId":{"type":["string","null"]},"requestedTimeOpen":{"type":["boolean
Changed the definition of "search_agents"
⟨103 unchanged words⟩ those with the latest deal, each withthattheircountsales and rentals there and their latest deal month. Pass deal_type sale for a seller or buyer, so agents rank by their sales there, or rental for a landlord or tenant; without it every deal counts, and most HDB agent deals are rentals. For a CEA number, or a name ⟨40 unchanged words⟩
⟨18 unchanged words⟩ PropNex Realty Pte. Ltd. (a match's agency)., or a featured agency's short name, such as PropNex, ERA or Huttons.","maxLength":120,"type":"string"}
Changed the definition of "search_agents" and "search_listings"
⟨77 unchanged words⟩ number, Homejourney listing count and public profileURL.URL; with an area, agents with the most CEA-recorded deals there in the last three years come first, then those with the latest deal, each with that count and their latest deal month. For a CEA number, or a name ⟨40 unchanged words⟩
⟨57 unchanged words⟩ "type":["string","null"]},"areaDeals":{"additionalProperties":false,"description":"With an area: the agent's CEA-recorded deals there (HDB in a town, private in a district) since `since`, which order the results, most first.","properties":{"count":{"type":"integer"},"kind":{"enum":["HDB","private"],"type":"string"},"latestMonth":{"description":"The month of the agent's latest deal there, such as 2026-09.","type":"string"},"since":{"description":"The month counting starts, such as 2023-10.","type":"string"}},"required":["kind","count","since","latestMonth"],"type":"object"},"listingCount":{"description":"Homejourney listings on that
Changed the definition of "compare_listings", "get_listing_details", "search_agents" and 1 more
⟨1099 unchanged words⟩ "type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for ⟨309 unchanged words⟩
⟨1037 unchanged words⟩ "type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"
Added "search_agents"; changed the definition of "compare_listings", "search_guides" and "search_listings" (13 tools before, 14 now)
⟨160 unchanged words⟩ ,"type":"number"},"property_type":{"description":"One of HDB, Condominium, Executive Condominium, Landed. Common words such as Condo, EC, Apartment, HDB flat or Bungalow are read as these.","maxLength":80,"minLength":1,"type":" ⟨83 unchanged words⟩
⟨58 unchanged words⟩ Singpass, listing for clients, and viewing requests. Also use it when someone asks how to manage their Homejourney account: changing the sign-in email, resetting the password, verifying the email, or editing the profile. Returns Homejourney's reviewed guides andagent
Changed the definition of "get_owner_listing_checklist", "prepare_guest_service_checkout", "quote_service_booking" and 1 more
⟨43 unchanged words⟩ rules, where to order a floor plan, the HDB and URA letting rules (rentalRules) to check with a landlord before collecting the rental details, and the steps in order: the agent saves ⟨36 unchanged words⟩
⟨6 unchanged words⟩ ,"type":"number"},"catalog_version_id":{"description":"The chosen package's catalogVersionId from search_services.","maxLength":160,"minLength":1,"type":" ⟨260 unchanged words⟩ ,"type":"integer"},"price_source":{"description":"The chosen package's priceSource from search_services.","
Changed the definition of "compare_listings", "get_listing_details", "prepare_guest_service_checkout" and 2 more
⟨815 unchanged words⟩ their nearest edge: name, areaHectares, walkMinutes)and, malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with ⟨540 unchanged words⟩
⟨43 unchanged words⟩ secondary schools, supermarkets, hawker centres, CHAS clinics,
Changed the definition of "compare_listings", "get_listing_details" and "search_listings"
⟨94 unchanged words⟩ ":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string ⟨297 unchanged words⟩ in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.", ⟨923 unchanged words⟩
⟨32 unchanged words⟩ ":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.
Changed the definition of "compare_listings", "get_listing_details", "render_shortlist" and 1 more
⟨64 unchanged words⟩ , each with its score out of 100 (null when no criterion given can be judged) and the points it earns on each criterion, ⟨46 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"additionalProperties":true,"properties":{"criteriaSummary":{"type":"string"},"listings":{"description":"Each listing also carries its rank, reasonCodes, tradeoffs, and score out of 100 over the criteria given that its data answers; scoreBreakdown gives each criterion its points of maxPoints, or null points when the data cannot answer it (also listed in missingData).","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"missingDataNotes":{"items":{"type":"string"},"type":"array"},"offMarketListingIds":{"description":"The unavailable ids of listings taken off the market (sold, withdrawn or archived).","items":{"type":"string"},"type":"array"},"ranking":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"sameHomeListingIds":{"description":"Ids left out because another source lists the same home, which is compared once under the first id given.","items":{"type":"string"},"type":"array"},"unavailableListingIds":{"items":{"type":"string"},"type":"array"}},"required":["listings"],"type":"object"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"}},"required":["data"],"type":"object"}Changed the definition of "compare_listings", "fetch", "prepare_guest_service_checkout" and 3 more
⟨1067 unchanged words⟩ :"string"},"type":"array"},"offMarketListingIds":{"description":"The unavailable ids of listings taken off the market (sold, withdrawn or archived).","items":{"type":"string"},"type":"array"},"ranking":{"items":{"additionalProperties":true," ⟨110 unchanged words⟩
Fetch one Homejourney listing or guide by the ID that search returned, for deep-research ⟨6 unchanged words⟩ text, without owner or agent contact details,andor the guide summary, with its Homejourney URL for citations. After search_listings, use get_listing_details instead.
Changed the definition of "compare_listings", "get_listing_details" and "search_listings"
⟨1111 unchanged words⟩ ":["listings"],"type":"object"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"}},"required":["data"],"type":"object"}
⟨1007 unchanged words⟩ ":["id"],"type":"object"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"}
Changed the definition of "compare_listings", "get_listing_details", "get_owner_listing_checklist" and 1 more
⟨736 unchanged words⟩ last three with name, place and walkMinutes,andparks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from ⟨335 unchanged words⟩
⟨684 unchanged words⟩ last three with name, place and walkMinutes,andparks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes
Changed the definition of "compare_listings", "get_listing_details" and "search_listings"
⟨125 unchanged words⟩ "type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number. ⟨457 unchanged words⟩ "type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the ⟨330 unchanged words⟩ "]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id ⟨58 unchanged words⟩
Changed the definition of "compare_listings", "get_listing_details", "quote_service_booking" and 2 more
⟨657 unchanged words⟩ last three with name, place and walkMinutes, and parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), each with distanceKm. Distances are straight-line from the ⟨62 unchanged words⟩ the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description" ⟨180 unchanged words⟩
Changed the definition of "compare_listings", "get_listing_details", "quote_service_booking" and 2 more
⟨60 unchanged words⟩ ranked against those criteria, each with its score out of 100 and the points it earns on each criterion, the reasons it fits, its tradeoffs and ⟨39 unchanged words⟩
⟨12 unchanged words⟩ ":"Each listing also carries its rank,scorereasonCodes,reasonCodestradeoffs, andtradeoffs.score out of 100 over the criteria given that its data answers; scoreBreakdown gives each criterion its points of maxPoints, or null points when the data cannot answer it (also listed in missingData).","items":{"additionalProperties":true,"properties"
Changed the definition of "search_listings"
⟨232 unchanged words⟩ "minimum":1,"type":"integer"},"listed_by":{"description":"Who lists the home. owner keeps homes their owners list: on Homejourney, or on HDB Flat Portal without an agent. agent keeps every other home. pagination.total counts only these homes.","enum":["owner","agent"],"type":"string"},"listed_within_days":{"maximum":365,"minimum":1, ⟨273 unchanged words⟩ "},"towns":{"description":"HDB townsor, URA planning areas or URA regions the listing lies in, such as \"Tampines\"or, \"Bukit Timah\" or \"East\". A region (Central, East, North, North-East, West) covers all its planning areas.","items":{"maxLength":40,"type" ⟨9 unchanged words⟩
Changed the definition of "compare_listings", "get_listing_details", "search_listings" and 1 more
Use this after search_listings or list_saved_properties when the user wants two to six Homejourney listings compared side by side. Pass their listing_ids (a saved home's property_id), and optionally the user criteria: budget, ⟨82 unchanged words⟩
⟨62 unchanged words⟩ string"},"depositMonths":{"description":"Detailsonlyand compare, for an owner rental: the security deposit ⟨170 unchanged words⟩ "remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array
Added "search_guides"; changed the definition of "search_listings" and "search_services" (12 tools before, 13 now)
⟨142 unchanged words⟩ "minItems":1,"type":"array"},"furnishing":{"description":"The furnishing the renter wants. Matches homes stated as this, and homes that state no furnishing.","enum":["unfurnished","partial","fully_furnished"],"type":"string"},"hdb_flat_types":{"description":"HDB flat types, ⟨323 unchanged words⟩
Use this to find active Homejourney services.A provider-publishedEach resultidentifiescarries the provider, package, catalogue version, and price required for quoting and
Changed the definition of "compare_listings", "get_listing_details", "render_shortlist" and 1 more
⟨61 unchanged words⟩ of lease that must remain, read from each home's lease: an HDB flat's block lease, or a condo, EC or landed home's land lease. Freehold and 999-year tenures always meet it. ⟨159 unchanged words⟩
⟨154 unchanged words⟩ :"string"},"type":"array"},"hdbFlatType":{"description":"Search results only, for an HDB flat: its flat type, such as 4-room or executive, inferred from its block's resale records and its size.","type":"string"},"hdbLease":{"description":"Details and compare, ⟨13 unchanged words⟩ month and the block's age in years,fromasHDB
Changed the definition of "compare_listings", "get_listing_details" and "search_listings"
⟨33 unchanged words⟩ the longest acceptable walk to the MRT, the fewest years of lease that must remain, and must-have features. Returns the listings ranked against ⟨14 unchanged words⟩ missing data, plus price, size, nearest MRTand, nearby schools and, foreach.an HDB flat, the lease left on its block. Never returns owner or agent contact details. To ⟨10 unchanged words⟩
⟨52 unchanged words⟩ "minimum":1,"type":"integer"},"min_remaining_lease_years":{"description":"Fewest whole years of lease that must remain, read from an HDB flat's block lease. Freehold and 999-year tenures always meet it.","maximum":99,"minimum":1,"type":"integer"},"
Changed the definition of "compare_listings", "get_listing_details", "get_owner_listing_checklist" and 2 more
⟨150 unchanged words⟩ ,"type":"object"},"host":{"description":"The AI app making this call, such as chatgpt or claude. It records where the request came from; it is not the listing owner or agent.","maxLength":50,"minLength":1,"type":" ⟨24 unchanged words⟩
⟨48 unchanged words⟩ ":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type": ⟨7 unchanged words⟩ "type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]
Changed the definition of "compare_listings", "get_listing_details", "quote_service_booking" and 1 more
before
—after
{"additionalProperties":true,"properties":{"data":{"additionalProperties":true,"properties":{"criteriaSummary":{"type":"string"},"listings":{"description":"Each listing also carries its rank, score, reasonCodes and tradeoffs.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"canonicalUrl":{"format":"uri","type":"string"},"district":{"description":"Singapore postal district number.","type":["string","null"]},"id":{"format":"uuid","type":"string"},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"propertyType":{"type":["string","null"]},"squareFeet":{"type":["number","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"missingDataNotes":{"items":{"type":"string"},"type":"array"},"ranking":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"unavailableListingIds":{"items":{"type":"string"},"type":"array"}},"required":["listings"],"type":"object"}},"required":["data"],"type":"object"}Added "get_owner_listing_checklist"; changed the definition of "fetch", "quote_service_booking", "render_shortlist" and 2 more (11 tools before, 12 now)
Fetch one Homejourney listing by the ID that searchreturned.returned, for deep-research and citation hosts. Returns the listing text, without owner or agent contact details, and its Homejourney URL for citations. After search_listings, use get_listing_details instead.
⟨14 unchanged words⟩ ,"bookingFee":{"type":"number"},"cancellationTerms":{"type":["string","null"]},"catalogVersionId":{"type":["string","null" ⟨115 unchanged words⟩
Changed the definition of "prepare_guest_service_checkout", "quote_service_booking" and "search_services"
⟨21 unchanged words⟩ the customer confirms the selected provider package,or a Homejourney catalog price (price_source launch_guide with platform_unit_count),the exact price, schedule, address, customer-provided email ⟨21 unchanged words⟩ card for the exact booking without a charge;for a provider packageHomejourney charges it only after verified completion, and PayNow can instead be requested after completion.A catalog price takes a card only: nothing is charged until a verified provider accepts, the amount is held then and charged when the job is done, and the booking is cancelled at no charge if no provider accepts.The booking appears in the Homejourney account of ⟨14 unchanged words⟩
⟨161 unchanged words⟩ :"integer"},"platform_unit_count":{"description":"
Changed the definition of "search_services"
⟨163 unchanged words⟩ ["total"],"type":"object"},"resultReason":{"description":"Why a search found no service; absent when it found services.","enum":["no_such_entity","filtered_out","no_inventory_here"],"type":"string"},"supportedServiceTypes":{"items":{"maxLength":80," ⟨16 unchanged words⟩
Changed the definition of "quote_service_booking" and "search_services"
⟨40 unchanged words⟩ name, email, or phone. A catalog price or provider package also returns the assignment deadline, after which an unaccepted booking is cancelled at nocharge.charge; it needs an exact start at least 12 hours away for a catalog price and 2 hours for a provider package. An operator price quoted with the service address ⟨28 unchanged words⟩
⟨27 unchanged words⟩ for standardized packages, otherwise the provider-owned price. Booking a provider package saves a card and charges nothing until that provider accepts.
Changed the definition of "compare_listings", "fetch", "get_listing_details" and 6 more
Use this after search_listings whena logged-inthe user wantsatworankedto six Homejourney listings compared side by side. Pass their listing_ids,public-safeandshortlistoptionallycomparisontheofusertwocriteria: budget, bedrooms, bathrooms, preferred districts or MRT stations, the longest acceptable walk to
Changed the definition of "prepare_guest_service_checkout" and "quote_service_booking"
⟨124 unchanged words⟩ "maxLength":1000,"type":"string"},"number_of_hours":{"description":"Hours booked, for an offering priced per hour. The provider may charge a minimum number of hours.","maximum":24,"minimum":1,"type":"number"},"number_of_units":{"default":1,"maximum":50, ⟨26 unchanged words⟩ ":{"enum":["provider_catalog","launch_guide"],"type":"string"},"property_size":{"description":"Home size, for an offering priced by home size. A quote without it names the sizes the provider prices.","maxLength":40,"minLength":1,"type":"string"},"provider_id":{" ⟨124 unchanged words⟩
⟨88 unchanged words⟩ Changed the definition of "render_shortlist"
⟨189 unchanged words⟩ ,"squareFeet":{"minimum":1,"type":["number","null"]},"sublettingType":{"maxLength":80,"type" ⟨118 unchanged words⟩
Certificate recorded, valid to 2026-12-27
Authorization not required
Unknown → Live
First tool surface recorded: 11 tools (server version 1.0.0)
https://ai-apps.homejourney.sg/mcp/public (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 42 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
after
{"additionalProperties":true,"properties":{"continuedClusters":{"description":"This page's listings in a listingCluster that the previous page already shows, which data leaves out: listingId is one of its listings on that page, listingIds are this page's listings in it.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"listingId":{"type":"string"},"listingIds":{"items":{"type":"string"},"type":"array"},"page":{"minimum":1,"type":"integer"},"scope":{"enum":["address","development"],"type":"string"}},"required":["listingId","page","listingIds"],"type":"object"},"type":"array"},"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbFlatTypeUnknownReason":{"description":"For an HDB flat without hdbFlatType: why its type is unverified. no_block and no_block_records: its block has no HDB resale records yet; no_size_match: its size matches no flat type in its block's records; ambiguous: its size fits more than one flat type in its block; no_size: the listing gives no floor area.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingCluster":{"description":"Search only: this result stands for listingCount listings one agent lists at one address (scope address) or in one development (scope development), itself and otherListingIds, priced minPrice to maxPrice. Absent for a listing no other on this page or the next joins. The listings may be different homes, since an agent can list two flats in one block; pass an id to get_listing_details to tell them apart.","properties":{"listingCount":{"minimum":2,"type":"integer"},"listingsOnThisPage":{"description":"Present when some of them are on the next page: how many are on this one. The next page leaves those out and names this result in continuedClusters.","minimum":1,"type":"integer"},"maxPrice":{"type":["number","null"]},"minPrice":{"type":["number","null"]},"otherListingIds":{"items":{"type":"string"},"type":"array"},"scope":{"enum":["address","development"],"type":"string"}},"required":["listingCount","otherListingIds","scope"],"type":"object"},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them) and preschools (ECDA-licensed childcare centres, kindergartens and early years centres within 1 km: name, place, walkMinutes; credit \"Contains information from ECDA\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbFlatTypeUnknownReason":{"description":"For an HDB flat without hdbFlatType: why its type is unverified. no_block and no_block_records: its block has no HDB resale records yet; no_size_match: its size matches no flat type in its block's records; ambiguous: its size fits more than one flat type in its block; no_size: the listing gives no floor area.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingCluster":{"description":"Search only: this result stands for listingCount listings one agent lists at one address (scope address) or in one development (scope development), itself and otherListingIds, priced minPrice to maxPrice. Absent for a listing no other on this page or the next joins. The listings may be different homes, since an agent can list two flats in one block; pass an id to get_listing_details to tell them apart.","properties":{"listingCount":{"minimum":2,"type":"integer"},"listingsOnThisPage":{"description":"Present when some of them are on the next page: how many are on this one. The next page leaves those out and names this result in continuedClusters.","minimum":1,"type":"integer"},"maxPrice":{"type":["number","null"]},"minPrice":{"type":["number","null"]},"otherListingIds":{"items":{"type":"string"},"type":"array"},"scope":{"enum":["address","development"],"type":"string"}},"required":["listingCount","otherListingIds","scope"],"type":"object"},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them) and preschools (ECDA-licensed childcare centres, kindergartens and early years centres within 1 km: name, place, walkMinutes; credit \"Contains information from ECDA\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"leaseFilter":{"additionalProperties":true,"description":"How min_remaining_lease_years narrowed the search.","properties":{"candidates":{"description":"Homes matching every other filter.","type":"integer"},"leaseChecked":{"description":"Homes whose lease was checked; fewer than candidates when the search was too broad.","type":"integer"},"leaseUnknown":{"description":"Homes matching every other filter whose lease left is not known; left out.","type":"integer"},"minRemainingLeaseYears":{"type":"integer"}},"type":"object"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"roomMatches":{"description":"Rooms that match when no whole unit does.","type":"integer"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}⟨267 unchanged words⟩ from bedrooms.","type":"string"},"hdbFlatTypeUnknownReason":{"description":"For an HDB flat without hdbFlatType: why its type is unverified. no_block and no_block_records: its block has no HDB resale records yet; no_size_match: its size matches no flat type in its block's records; ambiguous: its size fits more than one flat type in its block; no_size: the listing gives no floor area.","type":"string"},"hdbLease":{"description":"Details and compare, ⟨1096 unchanged words⟩
⟨326 unchanged words⟩ "maximum":5,"type":"number"},"messages_on_homejourney":{"description":"Only homes whose host reads Homejourney messages: start_listing_conversation reaches the listing's Homejourney agent, else its owner, so the user's viewing can be arranged in a Homejourney thread. Leaves out homes reached only by a viewing request or WhatsApp. pagination.total counts only these homes.","type":"boolean"},"min_remaining_lease_years":{"description":"Fewest whole years of ⟨508 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them) and preschools (ECDA-licensed childcare centres, kindergartens and early years centres within 1 km: name, place, walkMinutes; credit \"Contains information from ECDA\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them) and preschools (ECDA-licensed childcare centres, kindergartens and early years centres within 1 km: name, place, walkMinutes; credit \"Contains information from ECDA\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"leaseFilter":{"additionalProperties":true,"description":"How min_remaining_lease_years narrowed the search.","properties":{"candidates":{"description":"Homes matching every other filter.","type":"integer"},"leaseChecked":{"description":"Homes whose lease was checked; fewer than candidates when the search was too broad.","type":"integer"},"leaseUnknown":{"description":"Homes matching every other filter whose lease left is not known; left out.","type":"integer"},"minRemainingLeaseYears":{"type":"integer"}},"type":"object"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"roomMatches":{"description":"Rooms that match when no whole unit does.","type":"integer"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbFlatTypeUnknownReason":{"description":"For an HDB flat without hdbFlatType: why its type is unverified. no_block and no_block_records: its block has no HDB resale records yet; no_size_match: its size matches no flat type in its block's records; ambiguous: its size fits more than one flat type in its block; no_size: the listing gives no floor area.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them) and preschools (ECDA-licensed childcare centres, kindergartens and early years centres within 1 km: name, place, walkMinutes; credit \"Contains information from ECDA\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbFlatTypeUnknownReason":{"description":"For an HDB flat without hdbFlatType: why its type is unverified. no_block and no_block_records: its block has no HDB resale records yet; no_size_match: its size matches no flat type in its block's records; ambiguous: its size fits more than one flat type in its block; no_size: the listing gives no floor area.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them) and preschools (ECDA-licensed childcare centres, kindergartens and early years centres within 1 km: name, place, walkMinutes; credit \"Contains information from ECDA\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"leaseFilter":{"additionalProperties":true,"description":"How min_remaining_lease_years narrowed the search.","properties":{"candidates":{"description":"Homes matching every other filter.","type":"integer"},"leaseChecked":{"description":"Homes whose lease was checked; fewer than candidates when the search was too broad.","type":"integer"},"leaseUnknown":{"description":"Homes matching every other filter whose lease left is not known; left out.","type":"integer"},"minRemainingLeaseYears":{"type":"integer"}},"type":"object"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"roomMatches":{"description":"Rooms that match when no whole unit does.","type":"integer"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}⟨102 unchanged words⟩ PayNow request, after the job is done." For a service priced by home size, such as move-in cleaning, pass the home's floor_area_sqft, hdb_flat_type or bedrooms to get each provider's one package for that home; noPackageForHomeSize names providers with none.
{"additionalProperties":false,"properties":{"bedrooms":{"description":"Bedrooms, matched only where a package or the home gives no floor area.","maximum":10,"minimum":1,"type":"integer"},"floor_area_sqft":{"description":"The home's floor area in sq ft; it outranks hdb_flat_type.","maximum":20000,"minimum":100,"type":"integer"},"hdb_flat_type":{"description":"The HDB flat type, matched by its usual floor area.","enum":["2-room","3-room","4-room","5-room","executive"],"type":"string"},"limit":{"default":10,"maximum":20, ⟨32 unchanged words⟩
⟨198 unchanged words⟩ :"object"},"type":"array"},"noPackageForHomeSize":{"description":"Providers that price the service by home size but sell no package for the home asked about.","items":{"type":"string"},"type":"array"},"pagination":{"additionalProperties":true,"properties":{" ⟨55 unchanged words⟩
⟨46 unchanged words⟩ , hawker centres, CHAS clinics, parks, mallsand, bus stops with their bus numbers, and childcare centres and preschools near it, and Homejourney link. For an ⟨34 unchanged words⟩
⟨771 unchanged words⟩ "© OpenStreetMap contributors\" when you show them)and, busStops (LTA bus stops within 400 m: ⟨14 unchanged words⟩ walkMinutes; credit \"Contains information from LTA DataMall\" when you show them) and preschools (ECDA-licensed childcare centres, kindergartens and early years centres within 1 km: name, place, walkMinutes; credit \"Contains information from ECDA\" when you show them), each with ⟨533 unchanged words⟩
⟨58 unchanged words⟩ ,"quantity":{"type":"number"},"serviceAddress":{"type":"string"},"serviceSubtotal":{"type":"number"},"state" ⟨36 unchanged words⟩
⟨143 unchanged words⟩ ,"label"],"type":"object"},"areaRecentTotal":{"description":"With an area: how many of `total` have a deal there since areaDeals.since. The rest dealt there only before it and come last.","type":"integer"},"data":{"items":{"additionalProperties":false," ⟨584 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"leaseFilter":{"additionalProperties":true,"description":"How min_remaining_lease_years narrowed the search.","properties":{"candidates":{"description":"Homes matching every other filter.","type":"integer"},"leaseChecked":{"description":"Homes whose lease was checked; fewer than candidates when the search was too broad.","type":"integer"},"leaseUnknown":{"description":"Homes matching every other filter whose lease left is not known; left out.","type":"integer"},"minRemainingLeaseYears":{"type":"integer"}},"type":"object"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"roomMatches":{"description":"Rooms that match when no whole unit does.","type":"integer"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them) and preschools (ECDA-licensed childcare centres, kindergartens and early years centres within 1 km: name, place, walkMinutes; credit \"Contains information from ECDA\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them) and preschools (ECDA-licensed childcare centres, kindergartens and early years centres within 1 km: name, place, walkMinutes; credit \"Contains information from ECDA\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"leaseFilter":{"additionalProperties":true,"description":"How min_remaining_lease_years narrowed the search.","properties":{"candidates":{"description":"Homes matching every other filter.","type":"integer"},"leaseChecked":{"description":"Homes whose lease was checked; fewer than candidates when the search was too broad.","type":"integer"},"leaseUnknown":{"description":"Homes matching every other filter whose lease left is not known; left out.","type":"integer"},"minRemainingLeaseYears":{"type":"integer"}},"type":"object"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"roomMatches":{"description":"Rooms that match when no whole unit does.","type":"integer"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}⟨253 unchanged words⟩ "minimum":1,"type":"integer"},"onsite_contact":{"additionalProperties":false,"description":"Optional. The person at the address who lets the technician in when the customer won't be there, such as a landlord's tenant. Only the business assigned to the job sees it, until the job closes; the customer still gets every update and the charge. Send it only after the customer confirms that person agreed to be contacted.","properties":{"consent_confirmed":{"const":true,"type":"boolean"},"name":{"maxLength":120,"minLength":1,"type":"string"},"phone":{"maxLength":40,"minLength":8,"type":"string"}},"required":["name","phone","consent_confirmed"],"type":"object"},"platform_unit_count":{"description":"Retired: Homejourney no ⟨217 unchanged words⟩
⟨68 unchanged words⟩ ":"number"},"estimatedDurationMinutes":{"type":["integer","null"]},"extras":{"items":{"additionalProperties": ⟨160 unchanged words⟩
⟨180 unchanged words⟩ "maxItems":12,"type":"array"},"reasons":{"items":{"maxLength":180,"minLength":1,"type":"string"},"maxItems":12,"type":"array"},"score":{"maximum":100,"minimum":-100, ⟨149 unchanged words⟩
⟨428 unchanged words⟩ page shows.","type":"boolean"},"earliestTransactionMonth":{"description":"The month of the agent's first recorded transaction, such as 2017-01; recordedTransactions and areas count from it.","type":["string","null"]},"latestTransactionMonth":{"description":"The month of the ⟨274 unchanged words⟩
⟨36 unchanged words⟩ ":"string"},"estimatedDurationMinutes":{"type":["integer","null"]},"excludedItems":{"items":{"type": ⟨216 unchanged words⟩
⟨922 unchanged words⟩ it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for ⟨386 unchanged words⟩
⟨468 unchanged words⟩ additionalProperties":false,"properties":{"bedrooms":{"description":"The home's bedrooms; for a let room, read room.","type":"number"},"id":{"type" ⟨14 unchanged words⟩ number"},"propertyType":{"type":"string"},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"title":{"type":"string"}, ⟨141 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"leaseFilter":{"additionalProperties":true,"description":"How min_remaining_lease_years narrowed the search.","properties":{"candidates":{"description":"Homes matching every other filter.","type":"integer"},"leaseChecked":{"description":"Homes whose lease was checked; fewer than candidates when the search was too broad.","type":"integer"},"leaseUnknown":{"description":"Homes matching every other filter whose lease left is not known; left out.","type":"integer"},"minRemainingLeaseYears":{"type":"integer"}},"type":"object"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"roomMatches":{"description":"Rooms that match when no whole unit does.","type":"integer"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. For a flat its owner lists on HDB Flat Portal, the same form takes only that it's gone or its details are wrong. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"leaseFilter":{"additionalProperties":true,"description":"How min_remaining_lease_years narrowed the search.","properties":{"candidates":{"description":"Homes matching every other filter.","type":"integer"},"leaseChecked":{"description":"Homes whose lease was checked; fewer than candidates when the search was too broad.","type":"integer"},"leaseUnknown":{"description":"Homes matching every other filter whose lease left is not known; left out.","type":"integer"},"minRemainingLeaseYears":{"type":"integer"}},"type":"object"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"roomMatches":{"description":"Rooms that match when no whole unit does.","type":"integer"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}⟨349 unchanged words⟩ "type":["string","null"]},"agentNextStep":{"description":"For the agent themselves: how to verify with Singpass to get their viewing requests and add a photo, bio and languages. Null once they claimed the profile.","type":["string","null"]},"areas":{"description":"HDB towns and private ⟨19 unchanged words⟩ ,"type":"object"},"type":"array"},"claimedOnHomejourney":{"description":"Whether the agent has verified and claimed this profile on Homejourney, as their page shows.","type":"boolean"},"latestTransactionMonth":{"description":"The month ⟨202 unchanged words⟩
⟨326 unchanged words⟩ "maximum":5,"type":"number"},"min_remaining_lease_years":{"description":"Fewest whole years of lease that must remain, as compare_listings reads it: an HDB flat's block lease, or a condo, EC or landed home's land lease. Freehold and 999-year homes always match; homes whose lease left is not known are left out, and leaseFilter.leaseUnknown counts them. pagination.total counts only the matches.","maximum":99,"minimum":1,"type":"integer"},"mrt_lines":{"description":"MRT or LRT lines; ⟨449 unchanged words⟩
⟨2522 unchanged words⟩ ,"featuredNote":{"type":"string"},"leaseFilter":{"additionalProperties":true,"description":"How min_remaining_lease_years narrowed the search.","properties":{"candidates":{"description":"Homes matching every other filter.","type":"integer"},"leaseChecked":{"description":"Homes whose lease was checked; fewer than candidates when the search was too broad.","type":"integer"},"leaseUnknown":{"description":"Homes matching every other filter whose lease left is not known; left out.","type":"integer"},"minRemainingLeaseYears":{"type":"integer"}},"type":"object"},"matchedTerm":{"type":"string"},"nextSteps" ⟨154 unchanged words⟩
{"additionalProperties":false,"properties":{"agency":{"additionalProperties":false,"description":"The agency the agents are filtered by, from its full CEA name or a featured agency short name such as PropNex.","properties":{"featured":{"description":"Whether it is one of the agent directory's featured agencies.","type":"boolean"},"label":{"type":"string"},"options":{"description":"When an agency that is not featured finds no agent: the featured agencies it could mean, else every featured agency. Pass one as agency.","items":{"type":"string"},"type":"array"},"value":{"description":"The CEA-registered agency name searched, such as PROPNEX REALTY PTE. LTD.","type":"string"}},"required":["value","label","featured"],"type":"object"},"area":{"additionalProperties":false,"description":"The ⟨78 unchanged words⟩ most first.","properties":{"count":{"description":"The deals counted: sales or rentals as dealType says, else both.","type":"integer"},"kind":{"enum" ⟨6 unchanged words⟩ "The month of the agent's latest deal there of the kind counted, such as 2026-09.","type":"string"},"rentals":{"description":"Whole-unit and room rentals there.","type":"integer"},"sales":{"description":"Resales, new sales and sub-sales there.","type":"integer"},"since":{"description":"The month counting starts ⟨49 unchanged words⟩ ,"type":"object"},"type":"array"},"dealType":{"description":"With an area: the kind of deal that ordered its agents. Absent when every deal counted.","enum":["sale","rental"],"type":"string"},"directoryUrl":{"type":"string"} ⟨259 unchanged words⟩
⟨288 unchanged words⟩ },"max_school_distance_km":{"description":"Keeps homeswith a schoolwithin this many km of a school, such as 1 or 2 for the Primary 1 bands. With school,check searchedSchool.distanceKm: thisthe limitis met byappliesanytonearbythat school,asandoneachtheresult'swebsite.searchedSchool.distanceKm gives its distance.","exclusiveMinimum":0,"maximum":5,"type ⟨456 unchanged words⟩
⟨2625 unchanged words⟩ corrected term.","type":"string"},"roomMatches":{"description":"Rooms that match when no whole unit does.","type":"integer"},"unappliedIntent":{"description":"Words in query that ⟨36 unchanged words⟩
⟨20 unchanged words⟩ including an agent asking what Homejourney shows aboutthem.them, or wants agents who work in an area or at an agency. The query searches names and CEA numbers only: for agents in an area, such as an HDB seller in Tampines, pass area, alone or with agency. Returns matching agents on CEA's register with their ⟨57 unchanged words⟩
{"additionalProperties":false,"properties":{"agency":{"description":"The agency's full name as CEA registers it, in any case, such as PropNex Realty Pte. Ltd. (a match's agency).","maxLength":120,"type":"string"},"area":{"description":"An HDB town (TAMPINES, ANG MO KIO) or private district (D01 to D28), or a place a district names, such as Orchard; lists agents with CEA-recorded transactions there.","maxLength":60,"type":"string"},"limit":{"default":5,"maximum":10, ⟨6 unchanged words⟩ The agent's name, or their CEA registration number. Never an area or agency.","maxLength":120,"minLength":3,"type":"string"}},"required":["query"],"type":"object"}
{"additionalProperties":false,"properties":{"area":{"additionalProperties":false,"description":"The area the agents are filtered by: the area input, or the query when it names only an area and no agent.","properties":{"label":{"type":"string"},"value":{"description":"The area input value, such as TAMPINES or D15.","type":"string"}},"required":["value","label"],"type":"object"},"data":{"items":{"additionalProperties":false," ⟨227 unchanged words⟩ ,"listings"],"type":"object"},"queryNamesArea":{"additionalProperties":false,"description":"An area the query names. Without a matching area, the query was searched as agent names, not as that area.","properties":{"label":{"type":"string"},"value":{"description":"The area input value, such as TAMPINES or D15.","type":"string"}},"required":["value","label"],"type":"object"},"resultReason":{"description":"Set when no agentmatches.matches, or the area is not an HDB town or private district.","enum":["no_match","unknown_area"],"type":"string"},"total": ⟨8 unchanged words⟩
⟨22 unchanged words⟩ buy or rent by area, MRT station, school, budget, bedrooms, flat type or other criteria. ⟨64 unchanged words⟩
⟨284 unchanged words⟩ For Rent"],"type":"string"},"max_school_distance_km":{"description":"Keeps homes with a school within this many km, such as 1 or 2 for the Primary 1 bands. With school, check searchedSchool.distanceKm: this limit is met by any nearby school, as on the website.","exclusiveMinimum":0,"maximum":5,"type":"number"},"mrt_lines":{"description":"MRT or LRT lines; ⟨235 unchanged words⟩ counts only these homes.","type":"boolean"},"school":{"description":"A school's full MOE name, such as \"Tao Nan School\". Matches homes that list it among their nearby schools; each result's searchedSchool gives its distance. Use for \"near a school\" or Primary 1 searches.","maxLength":120,"type":"string"},"size_max":{"description":"Floor area ⟨161 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"searchedSchool":{"description":"Search with school only: {name, distanceKm}, that school and its straight-line distance from the block, or null when the home does not list it nearby. For Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}⟨20 unchanged words⟩ string"},"query":{"maxLength":200,"minLength":1,"type":"string"}},"type":"object"}
⟨426 unchanged words⟩ ,"type":"string"},"property_type":{"description":"One of HDB, Condominium, Executive Condominium, Landed. Common words such as Condo, EC, Apartment, HDB flat or Bungalow are read as these.","maxLength":80,"type":"string"},"psf_max ⟨243 unchanged words⟩
Look up a property agent — Use this when someone asks about a Singapore property agent (salesperson) by name or CEA registration number, such as R028241G, including an agent asking what Homejourney shows about them. Returns matching agents on CEA's register with their agency, CEA number, Homejourney listing count and public profile URL. For a CEA number, or a name only one agent matches, it also returns the profile: transactions CEA records for them, their top areas and their public Homejourney listings, whose ids get_listing_details reads. Never returns contact details; send the user to the profile URL. Needs no sign-…
⟨6 unchanged words⟩ ,"type":"number"},"catalog_version_id":{"description":"The chosen package's catalogVersionId from search_services.","maxLength":160,"minLength":1,"type":" ⟨169 unchanged words⟩ ,"type":"integer"},"price_source":{"description":"The chosen package's priceSource from search_services.","enum":["provider_catalog","launch_guide"],"type" ⟨26 unchanged words⟩ ,"type":"string"},"provider_id":{"description":"The chosen package's providerId from search_services.","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{ ⟨11 unchanged words⟩ ,"type":"string"},"provider_package_id":{"description":"The chosen package's providerPackageId from search_services.","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{ ⟨22 unchanged words⟩ ","type":"string"},"service_details":{"description":"The chosen package's serviceId from search_services, such as leak-repair. Put the customer's own words in issue_description.","maxLength":120,"minLength":1,"type": ⟨63 unchanged words⟩
⟨32 unchanged words⟩ , or renting out a flat or room. Also use it when a property agent asks how Homejourney works for agents: co-broking and CEA rules, verifying with Singpass, listing for clients, and viewing requests. Returns Homejourney's reviewed guides and agent help articles that match, each with its URL, a ⟨12 unchanged words⟩ the date it was last checked. Cite theguideURL and its date. Filter with persona (buyer, seller, renter, landlord orlandlordagent); leave query empty to list every guide ⟨6 unchanged words⟩
⟨14 unchanged words⟩ ["buyer","seller","renter","landlord","agent"],"type":"string"},"query":{ ⟨8 unchanged words⟩
⟨17 unchanged words⟩ ["buyer","seller","renter","landlord","agent"],"type":"string"},"type":" ⟨66 unchanged words⟩
⟨753 unchanged words⟩ their nearest edge: name, areaHectares, walkMinutes)and, malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with ⟨467 unchanged words⟩
⟨46 unchanged words⟩ review-and-authorization link. No OTP is required. The customerapprovessavestheira card there for the exact booking,withoutorachoosescharge;PayNow.HomejourneyTellchargestheitcustomer:only"Nothingafterisverifiedchargedcompletionor held now. We charge your card,andor send a PayNowcanrequest,insteadafterbetherequestedjobafteriscompletion.done." The booking appears in the Homejourney account of ⟨14 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them) and busStops (LTA bus stops within 400 m: code, name, place as the road, services as the bus numbers that call there, walkMinutes; credit \"Contains information from LTA DataMall\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}⟨52 unchanged words⟩ A service can list both. Booking saves acardcard.andBookedchargessignednothinginuntilwith create_service_booking: "Nothing is charged now. We hold the amount once the provideraccepts.accepts, and charge it after the job is done." Booked with prepare_guest_service_checkout: "Nothing is charged or held now. We charge your card, or send a PayNow request, after the job is done."
⟨371 unchanged words⟩ "minimum":1,"type":"integer"},"pets_allowed":{"description":"true for a renter with a pet. Leaves out homes that say no pets; homes that state no pet policy still match, so confirm it with the lister.","type":"boolean"},"price_max":{"minimum":1,"type":"number ⟨223 unchanged words⟩ ":5,"minItems":1,"type":"array"},"utilities_included":{"description":"true for a renter who wants utilities in the rent. Leaves out homes that say utilities are extra; homes that do not say still match, so confirm it with the lister.","type":"boolean"}},"type":"object"}
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing. Absent when that page takes no request: the owner books on a portal (reach.bookOn says where) or no request reaches anyone.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. An owner rental may add \"tenants\", who the owner says the home suits (families, couples, working_professionals, students); none is no preference. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"additionalProperties":true,"properties":{"criteriaSummary":{"type":"string"},"listings":{"description":"Each listing also carries its rank, reasonCodes, tradeoffs, and score out of 100 over the criteria given that its data answers, or null when it answers none or none were given; scoreBreakdown gives each criterion its points of maxPoints, or null points when the data cannot answer it (also listed in missingData).","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"missingDataNotes":{"items":{"type":"string"},"type":"array"},"offMarketListingIds":{"description":"The unavailable ids of listings taken off the market (sold, withdrawn or archived).","items":{"type":"string"},"type":"array"},"ranking":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"sameHomeListingIds":{"description":"Ids left out because another source lists the same home, which is compared once under the first id given.","items":{"type":"string"},"type":"array"},"unavailableListingIds":{"items":{"type":"string"},"type":"array"}},"required":["listings"],"type":"object"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"}},"required":["data"],"type":"object"}before
{"additionalProperties":true,"properties":{"data":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"}},"required":["data"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"}},"required":["data"],"type":"object"}⟨185 unchanged words⟩ "maximum":100,"minimum":-100,"type":["number","null"]},"source":{"maxLength":80,"type" ⟨98 unchanged words⟩ "maximum":100,"minimum":-100,"type":["number","null"]}},"required":["id","rank"] ⟨34 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"description":"The whole home's bathrooms; for a let room, read room.ownBathroom.","type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"room":{"additionalProperties":true,"description":"For a rental that lets a master room, common room or bed space: the room itself, which its card shows in place of the flat's bathrooms and floor area. Null for a whole home, a studio or a sale.","properties":{"label":{"description":"Master room, Common room or Bed space.","type":"string"},"ownBathroom":{"description":"True for an attached bathroom, false for a shared one, null when not stated.","type":["boolean","null"]},"squareFeet":{"description":"The room's own size; null when not stated, never the flat's.","type":["number","null"]}},"required":["label"],"type":["object","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"description":"Floor area. An owner's let room gives the flat's here; read room.squareFeet for the room's own size.","type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}⟨98 unchanged words⟩ "minimum":0,"type":"number"},"extras":{"description":"Optional extras from the quote's availableExtras, each id once with a quantity up to its maxQuantity. Each is charged at the operator's price and leaves the visit's length and start as quoted.","items":{"additionalProperties":false,"properties":{"id":{"maxLength":40,"minLength":1,"type":"string"},"quantity":{"maximum":10,"minimum":1,"type":"integer"}},"required":["id","quantity"],"type":"object"},"maxItems":20,"type":"array"},"host":{"description":"The AI app making ⟨265 unchanged words⟩
⟨111 unchanged words⟩ does not serve it; otherwise quote another date. availableExtras lists the extras the provider sells with the job, such as sofa steaming; quote again with the ones the customer wants in extras to get the total with them, and book with the same extras. A package named for a unit count (" ⟨48 unchanged words⟩
⟨55 unchanged words⟩ "minimum":0,"type":"number"},"extras":{"description":"Optional extras from the quote's availableExtras, each id once with a quantity up to its maxQuantity. Each is charged at the operator's price and leaves the visit's length and start as quoted.","items":{"additionalProperties":false,"properties":{"id":{"maxLength":40,"minLength":1,"type":"string"},"quantity":{"maximum":10,"minimum":1,"type":"integer"}},"required":["id","quantity"],"type":"object"},"maxItems":20,"type":"array"},"issue_description":{"maxLength":1000,"type":"string ⟨213 unchanged words⟩
⟨8 unchanged words⟩ "type":["string","null"]},"availableExtras":{"items":{"additionalProperties":false,"properties":{"currency":{"type":"string"},"id":{"type":"string"},"maxQuantity":{"type":"integer"},"name":{"type":"string"},"unitAmount":{"type":"number"}},"required":["id","name","unitAmount","maxQuantity","currency"],"type":"object"},"type":"array"},"basePrice":{"type":"number"},"bookingFee" ⟨23 unchanged words⟩ "number"},"estimatedDurationMinutes":{"type":"integer"},"extras":{"items":{"additionalProperties":false,"properties":{"amount":{"type":"number"},"id":{"type":"string"},"name":{"type":"string"},"quantity":{"type":"number"},"unitAmount":{"type":"number"}},"required":["id","name","quantity","unitAmount","amount"],"type":"object"},"type":"array"},"gst":{"enum":["provider_included" ⟨120 unchanged words⟩
⟨26 unchanged words⟩ supplied them. Returns canonical listing URLs for citations. When no listing matches, returns the Homejourney guides that answer the question (IDs starting guide:), or an empty list with a note naming the next tool. To filter by price, bedrooms, area or ⟨5 unchanged words⟩
{"additionalProperties":false,"properties":{"note":{"description":"Set only when results is empty: why, and which tool to call next.","type":"string"},"results":{"items":{"additionalProperties":false," ⟨24 unchanged words⟩
⟨2136 unchanged words⟩ a corrected term.","type":"string"},"unappliedIntent":{"description":"Words in query that an explicit filter replaced; those words were not searched.","items":{"additionalProperties":true,"properties":{"kind":{"type":"string"},"value":{"type":["string","number"]},"words":{"type":"string"}},"required":["kind","value","words"],"type":"object"},"type":"array"}},"required":["data","pagination"],"type":"object"}
⟨2037 unchanged words⟩ ,"matchedTerm":{"type":"string"},"nextSteps":{"description":"Suggestions for what the user usually does next, best first. Each names the tool to call or the page to open; none is taken without the user asking, and a tool that writes still needs their confirmation.","items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"tool":{"type":"string"},"url":{"format":"uri","type":"string"},"why":{"type":"string"}},"required":["action","why"],"type":"object"},"maxItems":3,"type":"array"},"pagination":{"additionalProperties":true,"properties":{" ⟨36 unchanged words⟩
⟨59 unchanged words⟩ details with create_listing_draft, then the owner adds photos or confirms the ones you add, verifies with Singpass, joins Homejourney Pro and ⟨14 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, and parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, and parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes) and malls (shopping malls within 2 km from OpenStreetMap: name, walkMinutes; credit \"© OpenStreetMap contributors\" when you show them), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}⟨73 unchanged words⟩ "type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number. ⟨457 unchanged words⟩ "type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the ⟨330 unchanged words⟩ "]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id ⟨6 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, and parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, and parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, and parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"description":{"type":["string","null"]},"descriptionSource":{"description":"Who wrote description: generated means Homejourney wrote it from the listing's photos and data, so say so when quoting it and never present it as the lister's words; listing means the lister wrote it; null with no description.","enum":["generated","listing",null],"type":["string","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"maxOccupants":{"description":"Details only, for a rental: the most people who may live in the home or room, 1 to 20. Null when not stated.","type":["integer","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, and parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]},"utilitiesIncluded":{"description":"Details only, for a rental: whether the rent includes utilities (true) or not (false). Null when the listing does not say.","type":["boolean","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}⟨605 unchanged words⟩ last three with name, place and walkMinutes, and parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), each with distanceKm. Distances are straight-line from the ⟨62 unchanged words⟩ the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description" ⟨128 unchanged words⟩
⟨137 unchanged words⟩ quote the package for the asked count instead. Other refusals say what to change: start_too_soon names the earliest start, price_changed the new price, invalid_catalog_version the current catalog_version_id, and quote_required means the package cannot be booked on Homejourney.
⟨64 unchanged words⟩ ,"launch_guide"],"type":"string"},"providerConfirmsTime":{"type":"boolean"},"providerId":{"type":["string","null" ⟨91 unchanged words⟩
⟨287 unchanged words⟩ string"},"mrt_lines":{"description":"MRT or LRT lines; a listing matches when its nearest station ⟨20 unchanged words⟩ Line","Downtown Line","Thomson-East Coast Line","Bukit Panjang LRT","Sengkang LRT","Punggol LRT"],"type":"string"},"maxItems":69,"minItems":1,"type":"array"}, ⟨268 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, and parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, and parks (NParks parks within 1 km of their nearest edge: name, areaHectares, walkMinutes), each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"reportUrl":{"description":"Details only: for an owner listing, the listing page with its Report this listing form open, where the user tells Homejourney the details or photos are wrong, it isn't the owner's, it's gone or it looks like a scam. The user sends the report themselves; null for other listings.","format":"uri","type":["string","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}⟨59 unchanged words⟩ {"type":"string"},"nextAction":{"description":"quote_service_booking for a priced package; not_bookable when the provider prices the job only after seeing it, which nothing on Homejourney can book yet.","enum":["quote_service_booking","request_provider_quotenot_bookable"],"type":"string"},"platformUnitCount": ⟨167 unchanged words⟩
⟨23 unchanged words⟩ nearest MRT, nearby schools, the MRT stations open or under construction, primary schools by 1 km and 2 ⟨22 unchanged words⟩
⟨138 unchanged words⟩ :"array"},"hdbFlatType":{"description":"Search results only, forFor an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{ ⟨362 unchanged words⟩ shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary ⟨235 unchanged words⟩
⟨80 unchanged words⟩ the total for each; book one of thosetimestimes. When none is open,andslotsUnavailableReasonquotesaysanotherwhetherdatethewhenaddressnonehasisnoopen.postal code, the postal code matches no address, or the provider does not serve it; otherwise quote another date. A package named for a unit count ( ⟨19 unchanged words⟩
⟨39 unchanged words⟩ ,"estimatedDurationMinutes":{"type":"integer"},"gst":{"enum":["provider_included","not_charged",null],"type":["string","null"]},"invoicedBy":{"enum":["homejourney"],"type":"string"},"prerequisites":{"items":{"type":"string" ⟨59 unchanged words⟩ "type":"object"},"type":["array","null"]},"slotsUnavailableReason":{"enum":["missing_postal_code","unknown_postal_code","outside_service_area",null],"type":["string","null"]},"title":{"type" ⟨28 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"Search results only, for an HDB flat: its flat type, such as 4-room or executive, inferred from its block's resale records and its size.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"Search results only, for an HDB flat: its flat type, such as 4-room or executive, inferred from its block's resale records and its size.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"For an HDB flat in search, details and compare: its flat type, such as 4-room or executive, inferred from its block's resale records and its size. Absent when no single type matches, so treat that flat's type as unverified and never infer it from bedrooms.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), futureStations (stations under construction within 1.5 km: name, lines, openingYear as LTA expects it or null when not dated, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}⟨41 unchanged words⟩ price, a small shop's at Homejourney's standardprice.price; priceSetBy says which. A service can list both. Booking saves a ⟨8 unchanged words⟩
⟨37 unchanged words⟩ ,"estimatedDurationMinutes":{"type":"integer"},"excludedItems":{"items":{"type":"string"},"type":"array"},"gst":{"enum":["provider_included","not_charged"],"type":"string"},"includedItems":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"},"nextAction" ⟨25 unchanged words⟩ "],"type":["object","null"]},"priceSetBy":{"enum":["homejourney","provider"],"type":"string"},"priceSource":{"enum":["provider_catalog", ⟨136 unchanged words⟩
⟨43 unchanged words⟩ string"},"depositMonths":{"description":"Detailsonlyand compare, for an owner rental: the security deposit ⟨170 unchanged words⟩ "remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format" ⟨501 unchanged words⟩
⟨380 unchanged words⟩ "maxLength":120,"type":"string"},"reachable_only":{"description":"Only homes whose owner or agent can be reached now: a viewing request reaches the owner or a Homejourney agent, or the lister takes WhatsApp. Leaves out homes whose agent is not on Homejourney yet and has no verified WhatsApp number. pagination.total counts only these homes.","type":"boolean"},"size_max":{"description":"Floor area in square ⟨108 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details only, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"Search results only, for an HDB flat: its flat type, such as 4-room or executive, inferred from its block's resale records and its size.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details only, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"Search results only, for an HDB flat: its flat type, such as 4-room or executive, inferred from its block's resale records and its size.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"Search results only, for an HDB flat: its flat type, such as 4-room or executive, inferred from its block's resale records and its size.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details and compare, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"Search results only, for an HDB flat: its flat type, such as 4-room or executive, inferred from its block's resale records and its size.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"houseRules":{"description":"Details and compare: the house rules the listing states, such as {\"pets\": false, \"cooking\": true} (true allowed, false not allowed) or rules in words such as [\"no_smoking\"]. Empty or null when it states none.","type":["object","array","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}⟨15 unchanged words⟩ , and price required for quoting and checkout.soldUnder "provider" is an operator'sEveryownresultpricesells under its provider's ownbrand;name and logo (soldUnder "homejourneyprovider"is): astandard job sold under the Homejourneylargebrandoperator's atHomejourney's priceitsandownfulfilledpublishedbyprice, a smallshop,shop'ssoatproviderNameHomejourney'sreadsstandardHomejourney.price. A service can list both. Booking saves a ⟨8 unchanged words⟩
⟨105 unchanged words⟩ "minLength":1,"type":"string"},"soldUnder":{"enum":["homejourney","provider"],"type":"string"},"startingPrice":{"type":["number","null" ⟨92 unchanged words⟩
Search Homejourney guides — Use this when someone asks how buying, selling, renting or letting a home in Singapore works: grants and eligibility, BTO and resale, stamp duty, loans and down payments, the MOP, tenancy agreements, or renting out a flat or room. Returns Homejourney's reviewed guides that match, each with its URL, a short answer, who it is for, whether it has a calculator, and the date it was last checked. Cite the guide URL and its date. Filter with persona (buyer, seller, renter or landlord); leave query empty to list every guide for that persona. Needs no sign-in.
⟨135 unchanged words⟩ :"string"},"type":"array"},"hdbFlatType":{"description":"Search results only, for an HDB flat: its flat type, such as 4-room or executive, inferred from its block's resale records and its size.","type":"string"},"hdbLease":{"description":"Details and compare, ⟨13 unchanged words⟩ month and the block's age in years,fromasHDBinresalelease;records.kept for earlier clients. Null when unknown.","properties":{"ageYears": ⟨61 unchanged words⟩ string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the ⟨277 unchanged words⟩
⟨304 unchanged words⟩ "maxItems":6,"type":"array"},"sameHomeListingIds":{"items":{"maxLength":120,"minLength":1,"type":"string"},"maxItems":6,"type":"array"},"unavailableListingIds":{"items":{"maxLength":120," ⟨12 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details only, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, from HDB resale records. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details only, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, from HDB resale records. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details only, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"Search results only, for an HDB flat: its flat type, such as 4-room or executive, inferred from its block's resale records and its size.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details only, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbFlatType":{"description":"Search results only, for an HDB flat: its flat type, such as 4-room or executive, inferred from its block's resale records and its size.","type":"string"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, as in lease; kept for earlier clients. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"lease":{"description":"Search, compare and details, for every home: its tenure, the lease left this month and its age from TOP, as the listing page shows them. An HDB flat's lease comes from its block's resale records; a condo, EC or landed home's from URA's records of its land lease, not its TOP. remainingLabel is 'Lease start not confirmed' for a leasehold whose start is not found, and null for freehold and 999-year homes. Null when nothing is known.","properties":{"ageLabel":{"description":"Such as 26 years.","type":["string","null"]},"ageYears":{"minimum":0,"type":["integer","null"]},"completionYear":{"description":"TOP or the year completed.","type":["integer","null"]},"freehold":{"type":"boolean"},"leaseYears":{"description":"99, 103 or 999; null for freehold.","type":["integer","null"]},"remainingLabel":{"description":"Such as 72 years 10 months.","type":["string","null"]},"remainingMonths":{"maximum":11,"minimum":0,"type":["integer","null"]},"remainingYears":{"minimum":0,"type":["integer","null"]},"startYear":{"description":"The year the lease began; null when not confirmed.","type":["integer","null"]},"tenureLabel":{"description":"Such as 99-year lease from 2000, or Freehold; null when the tenure is not known.","type":["string","null"]}},"required":["freehold"],"type":["object","null"]},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}⟨60 unchanged words⟩ ":"uri","type":"string"},"depositMonths":{"description":"Details only, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published ⟨8 unchanged words⟩ :"string"},"type":"array"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, from HDB resale records. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"id":{"format":"uuid","type": ⟨55 unchanged words⟩ "type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type" ⟨36 unchanged words⟩
⟨21 unchanged words⟩ , furnishing, availability, nearest MRT, nearby schools, the MRT stations, primary schools by 1 km and 2 km band, secondary schools, supermarkets, hawker centres and CHAS clinics near it, and Homejourney link. Never returns owner or agent contact details.
⟨41 unchanged words⟩ ":"uri","type":"string"},"depositMonths":{"description":"Details only, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published ⟨8 unchanged words⟩ :"string"},"type":"array"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, from HDB resale records. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"id":{"format":"uuid","type": ⟨55 unchanged words⟩ "type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type" ⟨10 unchanged words⟩
before
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"district":{"description":"Singapore postal district number.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"propertyType":{"type":["string","null"]},"squareFeet":{"type":["number","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"district":{"description":"Singapore postal district number.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"propertyType":{"type":["string","null"]},"squareFeet":{"type":["number","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details only, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, from HDB resale records. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type":"string"},"depositMonths":{"description":"Details only, for an owner rental: the security deposit in months of rent, as the owner stated it. Null when not stated; partner listings carry none.","type":["number","null"]},"district":{"description":"Singapore postal district number.","type":["string","null"]},"facing":{"description":"Details only: which way the main windows face, as the owner states it (N, NE, E, SE, S, SW, W or NW).","type":["string","null"]},"flatModel":{"description":"Details only: HDB flat model.","type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"hdbLease":{"description":"Details and compare, for an HDB flat: its block's lease start year, the lease left this month and the block's age in years, from HDB resale records. Null when unknown.","properties":{"ageYears":{"minimum":0,"type":"integer"},"remainingMonths":{"maximum":11,"minimum":0,"type":"integer"},"remainingYears":{"minimum":0,"type":"integer"},"startYear":{"type":"integer"}},"required":["startYear","remainingYears","remainingMonths","ageYears"],"type":["object","null"]},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"nearbyPlaces":{"description":"Details only: the places the listing page shows near the block. mrtStations (code, name, walkMinutes), primarySchoolsWithin1Km and primarySchools1To2Km (the Primary 1 registration bands), secondarySchools, supermarkets, hawkerCentres (within 2 km) and clinics (CHAS clinics within 1 km, type gp or dental), the last three with name, place and walkMinutes, each with distanceKm. Distances are straight-line from the block and walks are estimates; for Primary 1 registration, the user checks the exact distance on OneMap SchoolQuery.","type":["object","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"priceReason":{"description":"Details only: the owner's own words on why the home is priced as it is.","type":["string","null"]},"propertyType":{"type":["string","null"]},"renovationYear":{"description":"Details only: the year the owner last renovated.","type":["integer","null"]},"seller":{"description":"Details only, for an owner listing: whether the owner verified with Singpass, their weekly viewing hours (Singapore time, weekday 0 is Sunday; empty when none are open), and how many minutes they usually take to first answer a viewing request (null until they have answered at least 3).","properties":{"role":{"enum":["owner"],"type":"string"},"singpassVerified":{"type":"boolean"},"typicalReplyMinutes":{"minimum":1,"type":["integer","null"]},"viewingHours":{"items":{"properties":{"endsAt":{"description":"HH:MM","type":"string"},"startsAt":{"description":"HH:MM","type":"string"},"weekday":{"maximum":6,"minimum":0,"type":"integer"}},"type":"object"},"type":"array"}},"type":["object","null"]},"squareFeet":{"type":["number","null"]},"storeyRange":{"description":"Details only: HDB's three-storey band, such as 13 to 15, never the exact storey.","type":["string","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}⟨29 unchanged words⟩ ":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type": ⟨7 unchanged words⟩ "type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale ⟨37 unchanged words⟩
⟨67 unchanged words⟩ verifies with Singpass, joins Homejourney Pro andsubmits.publishes. Ask the owner for all required fields in ⟨5 unchanged words⟩
⟨100 unchanged words⟩ ,"type":"number"},"host":{"description":"The AI app making this call, such as chatgpt or claude. It records where the request came from; it is not the listing owner or agent.","maxLength":50,"minLength":1,"type":" ⟨238 unchanged words⟩
{"additionalProperties":false,"properties":{"available_from":{"description":"The renter's move-in date. Matches homes available on or before it, and homes that state no date.","pattern":"^\\d{4}-\\d{2}-\\d{2} ⟨142 unchanged words⟩ 1,"type":"array"},"lease_duration_months":{"description":"The renter's lease length in months. Matches homes whose minimum lease is at most this, and homes that state no minimum.","maximum":60,"minimum":1,"type": ⟨272 unchanged words⟩
⟨30 unchanged words⟩ ":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type": ⟨7 unchanged words⟩ "type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale or For ⟨71 unchanged words⟩ ":"uri","type":"string"},"builtYear":{"description":"Details only.","type":["integer","null"]},"canonicalUrl":{"format":"uri","type": ⟨7 unchanged words⟩ "type":["string","null"]},"floorplans":{"description":"Details only: published floor plan image URLs.","items":{"format":"uri","type":"string"},"type":"array"},"id":{"format":"uuid","type":"string"},"imageLabels":{"description":"One per image, in order: the tag to show with an owner's edited photo, or null for an unedited one.","items":{"enum":["Virtually staged","Decluttered",null],"type":["string","null"]},"type":"array"},"listedAt":{"description":"When the listing was first shown publicly.","format":"date-time","type":["string","null"]},"listingType":{"description":"For Sale ⟨81 unchanged words⟩
before
—after
{"additionalProperties":true,"properties":{"data":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"canonicalUrl":{"format":"uri","type":"string"},"district":{"description":"Singapore postal district number.","type":["string","null"]},"id":{"format":"uuid","type":"string"},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"propertyType":{"type":["string","null"]},"squareFeet":{"type":["number","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"}},"required":["data"],"type":"object"}⟨89 unchanged words⟩ and quote another date when none is open. A package named for a unit count ("3 wall units") is refused for another number_of_units with reason package_unit_count; quote the package for the asked count instead.
before
—after
{"additionalProperties":true,"properties":{"data":{"items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"canonicalUrl":{"format":"uri","type":"string"},"district":{"description":"Singapore postal district number.","type":["string","null"]},"id":{"format":"uuid","type":"string"},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"propertyType":{"type":["string","null"]},"squareFeet":{"type":["number","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featured":{"description":"Labelled Pro listings matching the search, on page 1 only.","items":{"additionalProperties":true,"properties":{"address":{"type":["string","null"]},"bathrooms":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"bookingUrl":{"description":"Where the user asks for a viewing.","format":"uri","type":"string"},"canonicalUrl":{"format":"uri","type":"string"},"district":{"description":"Singapore postal district number.","type":["string","null"]},"id":{"format":"uuid","type":"string"},"listingType":{"description":"For Sale or For Rent.","type":["string","null"]},"price":{"description":"SGD; monthly rent for a rental.","type":["number","null"]},"propertyType":{"type":["string","null"]},"squareFeet":{"type":["number","null"]},"title":{"type":["string","null"]}},"required":["id"],"type":"object"},"type":"array"},"featuredNote":{"type":"string"},"matchedTerm":{"type":"string"},"pagination":{"additionalProperties":true,"properties":{"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"resultReason":{"description":"Why the search found no listing, or that it searched a corrected term.","type":"string"}},"required":["data","pagination"],"type":"object"}⟨45 unchanged words⟩ "minimum":0,"type":"integer"},"bookingUrl":{"format":"uri","maxLength":300,"type":"string"},"canonicalUrl":{"format":"uri","maxLength": ⟨264 unchanged words⟩
Search active Homejourney Singapore propertylistings.listings for deep-research and citation hosts. Broad availability questions are supported; use location, project ⟨7 unchanged words⟩ supplied them. Returns canonical listing URLs for citations. To filter by price, bedrooms, area or rent terms, use search_listings instead.
⟨76 unchanged words⟩ , size, address, nearest MRT, nearby schoolsand, a Homejourney link and a link to book a viewing, but never the owner or agent contact details.
Get the Homejourney owner listing checklist — Use this first when an owner wants to sell or rent out their own home on Homejourney, before asking them anything. Returns every field to collect (required or optional, allowed values, examples, which apply only to HDB, condo, landed or rentals), the photo rules, where to order a floor plan, and the steps in order: the agent saves the details with create_listing_draft, then the owner adds photos, verifies with Singpass, joins Homejourney Pro and submits. Ask the owner for all required fields in one message. Needs no sign-in.
Use this after search_services with the selected provider and packageidentifiers, or with price_source launch_guide and platform_unit_count for a Homejourney catalog price.identifiers. Returns the exact server-revalidated price before confirmation and ⟨8 unchanged words⟩ needs no name, email, or phone. Acatalog price orprovider package also returns the assignment deadline, after ⟨8 unchanged words⟩ charge; it needs an exact start at least12 hours away for a catalog price and2 hoursfor a provider package.away. An operator price quoted with the service address ⟨28 unchanged words⟩
⟨97 unchanged words⟩ :"integer"},"platform_unit_count":{"description":"TheRetired:platformUnitCountHomejourneyofnoalongerlaunch_guideofferssearchitsresult.ownOmitcatalogprovider_idprices,andsoprovider_package_idawithlaunch_guideit.selection is refused. Leave it out.","maximum":50,"minimum":1,"type ⟨154 unchanged words⟩
⟨40 unchanged words⟩ card and charges nothing until that provider accepts.A result with priceSource launch_guide is aHomejourneycatalog price withnoprovider yet: quote itlongerwithoffers itsplatformUnitCount; the booking is offered to verified providers andownthecatalogsavedprices,cardsoiseverychargedbookableonlyresultafternamesoneitsaccepts.provider.
Fetch one Homejourney listingdocumentbyID.the ID that search returned. Returnspublic-safethe listing text, without owner or agent contact details, andaitscanonicalHomejourney URL for citations.
Use this after search_listings when the user wantsmorethepublic-safefullinformationdetailsaboutof one Homejourneylisting.listing, such as its description, size, tenure, furnishing, availability, nearest MRT, nearby schools and Homejourney link. Never returnslisting-partyowner or agent contact details.
⟨123 unchanged words⟩ cancelled at no charge if no provider accepts.AThe booking appears inMaintheafterHomejourneysign-inaccount of the customer once they sign in with the same verified email or WhatsApp number.
⟨29 unchanged words⟩ and does not create a booking row. A quote needs no name, email, or phone. A catalog price also returns the assignment deadline, after which an unaccepted booking is cancelled at no charge. An operator price quoted with the service address also returns slots, the open arrival times there on scheduled_date with the total for each; book one of those times, and quote another date when none is open.
⟨14 unchanged words⟩ string"},"customer_info":{"additionalProperties":false,"propertiesdescription":{"Optional. The service address":{"maxLength":300(pickup_address for moving),"minLengthonly to list the open arrival times of an operator price.":5,"typeproperties":"string"},{"delivery_addressaddress":{"maxLength":300,"minLength":5,"type":"string"},"delivery_unit_number":{"maxLength":40,"type":"string"},"email":{"format":"email","maxLength":254,"type":"string"},"name":{"maxLength":120,"minLength":1,"type":"string"},"phone":{"maxLength":40,"minLength":8,"type":"string"},"pickup_address":{"maxLength":300,"minLength":5,"type":"string"},"pickup_unit_number":{"maxLength":40,"type":"string"},"unit_number":{"maxLength":40,"type":"string"}},"required":["name","email","phone"],"type":"object"},"discount_amount":{"minimum":0," ⟨209 unchanged words⟩ ","catalog_version_id","price_source","scheduled_date","singapore_time","customer_info"],"type":"object"}
⟨75 unchanged words⟩ "minLength":1,"type":"string"},"slots":{"items":{"additionalProperties":false,"properties":{"endSingaporeTime":{"type":"string"},"remaining":{"type":"integer"},"singaporeTime":{"type":"string"},"totalAmount":{"type":"number"}},"required":["singaporeTime","endSingaporeTime","totalAmount","remaining"],"type":"object"},"type":["array","null"]},"title":{"type":"string"},"totalAmount" ⟨26 unchanged words⟩
Render aShowpublic-safeone Homejourney listingdetailasviewa visual card with its photos, key details andanaexternal-openbuttonhandoff.to open it on Homejourney. Use this when the user wants toinspectlook at one listing. Never shows owner or agent contact details.
RenderShowanaalreadycomparisonpreparedthatpublic-safecompare_listingsHomejourneyreturned as a visual shortlistcomparison.card. Use this after compare_listings when the hostsupportscanrichdisplay appUI.cards; pass the comparison unchanged.
SearchFind Homejourney listings to cite
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"SearchFind Homejourney listings to cite"}
Primary listing-discoverytool.tool for homes in Singapore. Use this whena logged-inthe user asks what properties are available, orsuppliesdescribesnatural-languagea home to buy orstructuredrentSingaporebypropertyarea, MRT station, budget, bedrooms, flat type or other criteria. Omit query for a broad availability request; ⟨11 unchanged words⟩ is the exact number of matching listings. Returns summaries of active, published Homejourney listings that may be shown in AI assistants: price,AI-channel-authorizedsize,public-safeaddress,listingnearestsummariesMRT,only.nearby schools and a Homejourney link, but never the owner or agent contact details.