Skip to content
AlterEstate

List properties

GEThttps://secure.alterestate.com/api/v1/properties/filter/

Searches the properties your agency publishes on its website. Filter by location, operation, category, price in any currency, rooms, area, agent and amenities.

Use the Properties API to show your AlterEstate inventory on a website, a portal or an app. Results only include listings marked to show on the website, and they come from the agency that owns the public token.

CapabilityEndpoint
Search and filter listingsGET /api/v1/properties/filter/
Get a listing’s full detailGET /api/v1/properties/view/{slug}/
Create a listingPOST /api/v1/properties/create/
Update a listingPATCH /api/v1/properties/edit/{uid}/

Authentication

Send aetoken: your_public_token. Public token. Settings → Public API Token (administrators only).


Pagination

FieldTypeDescription
pageintegerPage number. Defaults to 1. Example: 1.
page_sizeintegerResults per page. Default and maximum: 30. Example: 30.

Location

FieldTypeDescription
citynumberCity ID. Repeat the parameter to match several cities. Get IDs from Locations. Example: 156.
city_namestringCity name, case and accent insensitive. For example Santo Domingo, Santiago or Ciudad de México. Example: Santo Domingo.
sectornumberSector ID. Repeat the parameter to match several sectors. Example: 2234.
searchstringFree text, case and accent insensitive. Matches sector or neighborhood names (Naco, Bella Vista, Reforma) and listing codes (cid, uid or internal code). Example: Naco.

Operation and category

FieldTypeDescription
listing_typenumber1 sale, 2 rent (includes nightly rentals), 3 nightly rental, 4 furnished rental. Required for price filters. Example: 1.
categorynumberCategory ID. Repeat to match several. See Categories below. Example: 1.
conditionnumber9 ready to move in, 5 under construction. Repeat to match both. Example: 9.
is_furnishedbooleantrue returns only listings with a furnished sale or rent price. Example: true.

Price

FieldTypeDescription
currencystringCurrency of value_min and value_max: USD, DOP, MXN, COP, CRC, GTQ or PEN. Example: USD.
value_minnumberMinimum price. Needs currency and listing_type. Example: 150000.
value_maxnumberMaximum price. Needs currency and listing_type. Example: 250000.

Features

FieldTypeDescription
roomsnumberExact number of bedrooms. Example: 2.
rooms_minnumberMinimum bedrooms. Example: 2.
rooms_maxnumberMaximum bedrooms. Example: 3.
bathroomsnumberExact number of bathrooms. Example: 2.
bath_minnumberMinimum bathrooms. Example: 2.
bath_maxnumberMaximum bathrooms. Example: 3.
parkingsnumberExact number of parking spaces. Example: 1.
parking_minnumberMinimum parking spaces. Example: 1.
parking_maxnumberMaximum parking spaces. Example: 2.
area_minnumberMinimum built area in m². Example: 80.
area_maxnumberMaximum built area in m². Example: 200.

Agents and amenities

FieldTypeDescription
agentsstringAgent uid. Separate several with commas. Get uids from Users. Example: IZHIZ6C3Z6.
featuresnumberAmenity ID. Repeat to require several; a listing must have all of them. Example: 74.

Sync

FieldTypeDescription
updated_afterdateListings updated on or after this date (YYYY-MM-DD). Useful for incremental syncs. Example: 2026-10-01.
updated_beforedateListings updated on or before this date (YYYY-MM-DD). Example: 2026-10-13.

Sorting

FieldTypeDescription
sortstringField to sort by. Prefix with - for descending. See Sorting below. Defaults to newest first. Example: -us_saleprice.

Example request

GET
curl --request GET \
  --url 'https://secure.alterestate.com/api/v1/properties/filter/?city=156&listing_type=1&category=1&currency=USD&value_min=150000&value_max=250000' \
  --header 'aetoken: your_public_token' \
  --header 'Accept: application/json'

Example response

200 OK
{
  "count": 74,
  "next": "https://secure.alterestate.com/api/v1/properties/filter/?page=2",
  "previous": null,
  "results": [
    {
      "cid": 292960,
      "uid": "JSORJ9S5AY",
      "name": "Modern apartment in Naco",
      "slug": "modern-apartment-in-naco-292960",
      "category": {
        "id": 1,
        "name": "Apartamentos",
        "name_en": "Apartments"
      },
      "listing_type": [
        {
          "id": 1,
          "listing": "Venta"
        }
      ],
      "sale_price": 185000,
      "currency_sale": "USD",
      "city": "Distrito Nacional",
      "sector": "Naco",
      "room": 2,
      "bathroom": 2,
      "parkinglot": 1,
      "property_area": 110,
      "short_description": "Bright apartment, ready to move in."
    }
  ]
}
400 Bad Request
{
  "listing_type": "listing_type debe ser 1 (venta), 2 (alquiler), 3 (alquiler x noche) o 4 (alquiler amueblado)."
}

Price filtering across currencies

AlterEstate stores every listing price in its own currency and also normalized to USD. When you send value_min, value_max, currency and listing_type, the conversion happens on the server with AlterEstate’s internal exchange rates. You never convert prices in your frontend.

StepValue
Listing priceRD$4,000,000
Query currencyUSD
Exchange rate58.00
Normalized price4,000,000 / 58 = US$68,965
Matchesvalue_min=65000&value_max=70000&currency=USD&listing_type=1

Categories

IDCategory
1Apartments
2Houses
3Buildings
4Lots
5Hotels
6Commercial spaces
7Industrial warehouses
10Penthouses
13Villas
14Lofts
17Townhouses

Common amenity IDs

IDAmenity
74Pool
73Gym
77Shared terrace
516Private terrace
66Appliances included (línea blanca)

Sorting

ValueSorts by
us_saleprice / -us_salepriceSale price in USD, ascending / descending.
us_rentprice / -us_rentpriceLong-term rent in USD.
us_rentalprice / -us_rentalpriceNightly rental in USD.
us_furnished / -us_furnishedFurnished rent in USD.
timestamp / -timestampDate the listing was created.
room, bathroom, parkinglotBedrooms, bathrooms or parking spaces.
name, cid, view_countName, listing code or number of views.

Status codes

StatusMeaning
200The request succeeded.
400A parameter or the body is invalid. The response names the field.
401The token is missing or invalid.
404The resource or route does not exist.
429Too many requests. Wait and retry.
500Server error while processing the request.

Frequently asked questions

How does AlterEstate filter property prices across currencies?

Send currency, listing_type, value_min and value_max. AlterEstate converts each listing with its internal exchange rate, so a RD$4,000,000 listing matches a USD range of 65,000 to 70,000 at a rate of 58.

How many properties does each page return?

Up to 30. Use page to move through results and page_size to request fewer.

How do I sync only the listings that changed?

Send updated_after with the date of your last sync (YYYY-MM-DD). Only listings updated on or after that date are returned.

Where do I get city and sector IDs?

Call GET /api/v1/cities/?country=<id> and GET /api/v1/sectors/?city=<id>. Neither needs a token.

Last updated . Questions? Emailengineering@alterestate.com.