---
title: "List public-safe listings"
method: GET
path: "/listings"
tags: ["Listings"]
---

# List public-safe listings

`GET /listings`

## Request

- Base URL: `https://platform-api.homejourney.sg/v1`
- URL: `https://platform-api.homejourney.sg/v1/listings`
- Auth: HTTP bearer

Returns public-safe listings. Sandbox credentials receive deterministic fixture listings; live credentials read active public-safe Homejourney and MLS-backed listings through the platform service layer. External URL: `/v1/listings`. Current Next.js implementation path: `/api/platform/v1/listings`. This read-only route does not require `Idempotency-Key` and never exposes source-agent contact metadata, private evidence URIs, or partner routing details.

## Query parameters

- `limit` integer
- `cursor` string
- `q` string
- `listing_type` 'For Sale' | 'For Rent'
- `property_type` string
- `district` string
- `min_price` number
- `max_price` number
- `bedrooms_min` integer
- `bedrooms_max` integer
- `subletting_type` 'whole_unit' | 'master_room' | 'common_room' | 'studio' | 'bed'
- `available_from` string, date
- `lease_duration_months` integer
- `sort` 'newest' | 'price_asc' | 'price_desc' | 'relevance'

## Headers

- `X-Correlation-Id` string

## Response `200`

Public-safe listings.

- ListingListResponse
  - `listings` ListingSummary[], required
    - `id` string, required
    - `title` string, required
    - `property_type` string, required
    - `district` string, required
    - `approximate_location` string, required
    - `price` integer, required
    - `bedrooms` integer, required
    - `bathrooms` integer, required
    - `square_feet` integer, required
    - `public_media_url` string, uri, required
    - `source_updated_at` string, date-time, required
    - `freshness_status` 'fresh' | 'stale' | 'unknown', required
    - `visibility_band` 'fresh' | 'aging' | 'null', nullable: Public listing visibility band. This is separate from source freshness.
    - `last_verified_at` string, date-time, nullable
    - `livemode` boolean, required
  - `pagination` object, required
    - `limit` integer, required
    - `next_cursor` string, nullable, required
  - `livemode` boolean, required
  - `request_id` string, required

## Other responses

- `400`: Request validation failed.
- `401`: Missing or invalid platform API key.
- `403`: Credential, environment, or scope is not allowed.
- `404`: Platform API feature or resource is not available.
- `429`: Rate limit exceeded.
- `500`: Unexpected platform API failure.

---

[API](https://skmtc.dev/homejourney/apis/homejourney-platform-api.md) · [All operations](https://skmtc.dev/homejourney/apis/homejourney-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/homejourney/apis/homejourney-platform-api/revisions/a2c6fe063db1?raw)
