Home Valuation

Estimates a home's value from closed sales in the account's own MLS feeds. Send a `placeId` for an address or a `listingId` for a listing. A city or ZIP place returns a market overview instead.

GET/v1/home-valuation

Authentication

Public key?key=pk_…

Public key in the `key` query parameter. No OAuth, no secret.

Edge cache: public, max-age=300, s-maxage=3600, stale-while-revalidate=86400

Query Parameters

keystring
required

The site's public key (pk_…). It selects the account. Safe to ship to the browser.

listingIdstring
optional

MLS number of a listing the feeds hold. When present it wins over `placeId`, and `unit` is ignored.

placeIdstring
optional

Place ID from `GET /v1/places/autocomplete`. Required when `listingId` is not sent.

unitstring
optional

Unit typed by the visitor, up to 16 characters of letters, digits, `#` and `-`.

sqftnumber
optional

Living area in square feet, for a home the MLS has no record of.

bedsnumber
optional

Bedrooms, for a home the MLS has no record of.

bathsnumber
optional

Bathrooms, for a home the MLS has no record of.

typestring
optional

Property subtype hint, for example `Condominium`.

Responses

200Success
application/json
placeobject | null

The resolved Google place (`kind`, street, unit, city, ZIP, `coordinates` as [lng, lat], `formattedAddress`). Null for `listingId` requests.

valuationobject

`kind` is `address` for one home or `area` for a city or ZIP overview. `estimate` is null when `reason` is set: `no-record`, `unit-required`, `not-enough-comps` or `missing-living-area`.

Errors

400Neither `placeId` nor `listingId` was sent, or `listingId`, `placeId` or `unit` has an invalid format.
401Missing or invalid public key.
403The account is not active. The body also has `code: "TENANT_INACTIVE"`.
404The place or listing could not be resolved, or the account has no MLS data feed. A place lookup can fail once, so retry it once.
429Too many requests. The limit is 60 per minute per visitor IP and account. `Retry-After` is 60 seconds.
500Internal Server Error.

Notes

  • The estimate is a comparable-sales model over closed sales of the account's MLS feeds. It is not a third-party valuation and not an appraisal.
  • Answers are cached for an hour per address. `comps` holds up to 12 comparables for an address.
Request
curl --request GET \
--url "https://api.pandaidx.com/v1/home-valuation?key={{public_key}}&listingId=A11855701"
Response200 OK
{
"place": null,
"valuation": {
"kind": "address",
"address": "1200 Brickell Bay Dr #2504, Miami, FL 33131",
"subject": {
"listingId": "A11855701",
"address": "1200 Brickell Bay Dr",
"unitNumber": "2504",
"city": "Miami",
"kind": "condo",
"livingArea": 1180,
"bedrooms": 2,
"bathrooms": 2,
"saleHistory": [
{
"listingId": "A10234567",
"closePrice": 610000,
"closeDate": "2021-06-15"
}
],
"standardStatus": "Active",
"listPrice": 725000
},
"estimate": {
"value": 705000,
"low": 668000,
"high": 742000,
"pricePerSf": 597,
"confidence": "medium",
"compsUsed": 7
},
"market": {
"scope": "building",
"label": "Bay Harbor Towers",
"months": 12,
"sales": 23,
"medianPricePerSf": 590,
"p25PricePerSf": 540,
"p75PricePerSf": 640,
"trend": [
{
"period": "2026-Q2",
"medianPricePerSf": 588,
"sales": 6
}
],
"histogram": [
{
"binStart": 500,
"binEnd": 550,
"count": 4
}
]
},
"comps": [
{
"listingId": "A11602345",
"address": "1200 Brickell Bay Dr",
"unitNumber": "2204",
"closePrice": 698000,
"closeDate": "2026-05-02",
"livingArea": 1180,
"pricePerSf": 592,
"distanceM": 0,
"sameLine": true,
"weight": 0.91
}
],
"generatedAt": "2026-10-14T15:30:00.000Z"
}
}