Search Listings with an API Key

Searches the MLS listings your account is licensed for, with the same filters as your website search. Each listing comes with websiteUrl, its page on your website, ready to send to a lead.

GET/v1/listings

Authentication

API keyAuthorization: Bearer

Secret API key as Authorization: Bearer sk_live_…. Create it in the dashboard under Workspace settings › API Keys, with full access or only the areas it needs (see API Keys & Scopes). Keys are for servers only. Needs the listings:read scope.

Query Parameters

propertyTypestring
optional

Residential (homes for sale, the default), Residential Lease (rentals), Residential Income, Commercial Sale, Land…

Default:Residential
statusenum
optional

Listing status.

Default:Active
ActivePendingActive Under ContractClosed
citystring
optional

City. Every word must match: Miami Beach returns Miami Beach and North Miami Beach.

postalCodestring
optional

ZIP code.

buildingNamestring
optional

Condo building name.

subdivisionstring
optional

Subdivision or neighborhood name.

minPricenumber
optional

Lowest price. For rentals, the monthly rent.

maxPricenumber
optional

Highest price. For rentals, the monthly rent.

minBedsnumber
optional

Fewest bedrooms.

maxBedsnumber
optional

Most bedrooms.

minBathsnumber
optional

Fewest bathrooms.

maxBathsnumber
optional

Most bathrooms.

minAreanumber
optional

Smallest living area, in square feet.

maxAreanumber
optional

Largest living area, in square feet.

poolboolean
optional

true keeps only listings with a private pool.

waterfrontboolean
optional

true keeps only waterfront listings.

furnishedboolean
optional

true keeps only furnished listings, false only unfurnished ones. Leave it out for both.

petsAllowedboolean
optional

true keeps only listings that allow pets.

sortenum
optional

Order: highest price first (-price), lowest first, newest first (-listed), fewest beds or baths first.

Default:-price
-priceprice-listedbedsbaths
limitnumber
optional

Listings per page, 1 to 50.

Default:20
offsetnumber
optional

Listings to skip, up to 1000.

Default:0

Responses

200Success
application/json
totalnumber

Matching listings. Past 10 it is a lower bound.

offsetnumber
limitnumber
dataarray

Listings with their RESO fields.

Errors

401Missing, invalid or revoked API key. The body is { error: { code, message } }.
403The account has no active subscription (error.code subscription_inactive), or the key lacks the required scope (insufficient_scope, and error.details.required names it).
429More than 120 requests per minute for this key. Wait for the Retry-After header.
422A parameter is wrong or unknown (a typo such as maxPrize is rejected, never ignored). error.details names it.

Notes

  • This is the server-side search for your own systems and agents. Websites use the Site API's Search Listings with the public key.
  • Only listings from the MLS feeds your account is licensed for are returned.
Request
curl --request GET \
--url "https://api.pandaidx.com/v1/listings?propertyType=Residential%20Lease&city=Miami%20Beach&maxPrice=7000&minBeds=3&minBaths=2&petsAllowed=true" \
--header "Authorization: Bearer {{api_key}}"
Response200 OK
{
"total": 4,
"offset": 0,
"limit": 20,
"data": [
{
"_id": "6a1f0c2b3d4e5f6071829304",
"ListingId": "B26059333",
"PropertyType": "Residential Lease",
"StandardStatus": "Active",
"ListPrice": 5500,
"LeaseAmountFrequency": "Monthly",
"BedroomsTotal": 3,
"BathroomsTotalInteger": 2,
"LivingArea": 1480,
"StreetNumber": "1500",
"StreetName": "Bay",
"UnitNumber": "804",
"City": "Miami Beach",
"StateOrProvince": "FL",
"PostalCode": "33139",
"image": "https://media.example.com/B26059333/1.jpg",
"photos": [
"https://media.example.com/B26059333/1.jpg",
"https://media.example.com/B26059333/2.jpg"
],
"coordinates": {
"lat": 25.7826,
"lng": -80.1371
},
"websiteUrl": "https://anatorres.com/mls/B26059333"
}
]
}