Rechat SDK
    Preparing search index...

    Listings

    sdk.Listings searches Rechat's listing inventory from code. On a portal site the search routes through the portal (which scopes results to the brokerage); on any other site it falls back to the public API.

    const sdk = new Rechat.Sdk()

    const result = await sdk.Listings.search({
    filters: {
    listing_statuses: ['Active'],
    minimum_price: 500000,
    maximum_price: 900000,
    minimum_bedrooms: 3,
    property_types: ['Residential'],
    },
    sortBy: '-price',
    limit: 20,
    offset: 0,
    })

    console.log(result.info.total, 'matches')
    result.data.forEach(listing => console.log(listing))
    Param Default Description
    filters required The filter object (see below). listing_statuses is required.
    sortBy "-price" Sort field; - prefix = descending, + or no prefix = ascending. On a portal this is sent as sort: [{ by, dir }] in the request body; on the direct /valerts fallback it stays an order_by[] query parameter.
    limit 20 Listings per page
    offset 0 Pagination offset

    Resolves with { data, info } where data is the listings array and info is { count, total }: count for this page, total across all pages.

    Same parameters as search, but only returns the total:

    const { total } = await sdk.Listings.count({
    filters: { listing_statuses: ['Active'], pool: true },
    })

    All optional except listing_statuses.

    General: listing_statuses (e.g. ['Active', 'Sold']), brand.

    Ranges: minimum_price / maximum_price, minimum_bedrooms / maximum_bedrooms, minimum_bathrooms, minimum_parking_spaces, minimum_square_meters / maximum_square_meters, minimum_lot_square_meters / maximum_lot_square_meters, minimum_year_built / maximum_year_built, minimum_sold_date (Unix epoch seconds).

    Flags: pool, open_house, office_exclusive.

    Classification: property_types, property_subtypes, architectural_styles, agents, list_agents, list_offices, mls_number, mlses (brokerage-side MLS scope: restricts every search to these MLSes regardless of other filters).

    Free text: content matches listing descriptions rather than the address index. In the web components this is what the Keywords input in More filters sets; it is independent of the address search box. Expect it to be considerably slower than a status-only query.

    Geo: postal_codes, mls_areas, school_districts, subdivisions, counties, boundaries, points (an array of { latitude, longitude } polygon vertices).

    Note the JavaScript filters use square meters, unlike the web-component attributes, which take square feet.

    Looking for a ready-made UI instead? The Web Components render a full search experience on top of this same API.