Skip to content

List comparable land sales

GET
/api/public/v1/comps/
curl --request GET \
--url 'https://example.com/api/public/v1/comps/?acres_max=10&acres_min=1&age=180&dist=8047&fips=8023&page=1&page_size=25&point=-105.42&point=37.2&status=SOLD' \
--header 'Authorization: Bearer <token>'

Returns comparable land sale records (‘comps’) near a county or point, paginated. At least one of fips or point is required.

Cost: 1 token per returned comp. Empty results cost 0 tokens.

Filter examples:

  • By county: ?fips=06037
  • By proximity: ?point=-118.25&point=34.05&dist=16093
  • By status: ?status=SOLD
  • Recent sales: ?age=180 (sold in the last 180 days)
acres_max
number format: float

Maximum lot size in acres.

Examples
Example 10Acres

10 acres

10
acres_min
number format: float

Minimum lot size in acres.

Examples
Example 1Acre

1 acre

1
age
integer

Recency filter: only return comps with sold_date within the last N days.

Examples

Last 6 months

180
dist
integer
default: 1000

Search radius in meters, applied around point. Defaults to 1000 (1 km). Ignored if point is not supplied.

Examples

≈5 miles

8047
fips
string

5-digit county FIPS code to restrict comps to. One of fips or point is required.

Examples

Costilla County, CO

8023
page
integer
default: 1

Page number for pagination (1-indexed).

page_size
integer
default: 100

Results per page, max 500. Each returned comp counts as 1 billed token, so set this conservatively when exploring.

Examples
Example ConservativePage

Conservative page

25
point
Array<number>

Center point of a radius search, supplied as two repeated query parameters in the order longitude then latitude — e.g. ?point=-105.42&point=37.20. Combine with dist to set the radius. One of fips or point is required.

Examples
Example CostillaCounty,COArea

Costilla County, CO area

[
-105.42,
37.2
]
status
string
Allowed values: ACTIVE PENDING SOLD

Filter by listing status. Repeat to OR multiple values: ?status=SOLD&status=PENDING.

Examples
Example ClosedSalesOnly

Closed sales only

SOLD
Media type application/json
object
count
required
integer
next
string format: uri
nullable
previous
string format: uri
nullable
results
required
Array<object>
object
id
required

Comp record identifier.

string format: uuid
source
required

Origin of the comp record (e.g., ‘zillow’).

string
status
required

Listing status. ACTIVE = currently listed, PENDING = under contract, SOLD = closed.

  • ACTIVE - Currently listed for sale.
  • PENDING - Under contract; not yet closed.
  • SOLD - Closed sale.
string
Allowed values: ACTIVE PENDING SOLD
address
required

Street address of the comp parcel.

string
city
required
string
state
required

Two-letter US state code.

string
zip
required

5-digit ZIP code.

string
county
required

County name (raw string from source).

string
apn
required

Assessor’s Parcel Number. May be blank for some sources.

string
latitude
required

Latitude in decimal degrees (WGS84). String-typed in the source data.

string
longitude
required

Longitude in decimal degrees (WGS84). String-typed in the source data.

string
lot_size
required

Lot size in acres. May be null when the source omitted it.

number format: double
nullable
price
required

Asking price for ACTIVE / PENDING listings, sale price for SOLD, in US dollars.

number format: double
sold_date
required

When the comp closed (ISO-8601). Null for non-SOLD comps.

string format: date-time
nullable
days_on_market
required

Days between listing and most recent status transition.

integer
nullable
sale_type
required

Sale type label as reported by the source (e.g., ‘STANDARD’, ‘AUCTION’).

string
url
required

Public URL of the listing on the source site, when available.

string
photos

List of photo URLs scraped from the source listing.

Array<string>
Examples
Example SingleSoldComp

Single sold comp

{
"count": 123,
"next": "http://api.example.org/accounts/?page=4",
"previous": "http://api.example.org/accounts/?page=2",
"results": [
{
"id": "f9c3e4a2-1d2b-4c7e-9f1a-8b2c3d4e5f6a",
"source": "zillow",
"status": "SOLD",
"address": "0 County Rd P",
"city": "SAN LUIS",
"state": "CO",
"zip": "81152",
"county": "Costilla",
"apn": "07111-04-009",
"latitude": "37.198",
"longitude": "-105.419",
"lot_size": 5.05,
"price": 9800,
"sold_date": "2026-02-14T00:00:00Z",
"days_on_market": 142,
"sale_type": "STANDARD",
"url": "https://example.com/listing/abc123",
"photos": []
}
]
}

Validation error.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

Missing or invalid credentials.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

A Pro subscription or higher API tier is required.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

Authenticated but not permitted.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

Resource not found.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

Rate limit exceeded.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}

Internal error.

Media type application/json
object
error
required
object
code
required

Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, validation_error, not_found, method_not_allowed, rate_limited, internal_error.

string
message
required

Human-readable description of the error.

string
request_id
required

Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.

string
details

Present on validation errors only: maps each rejected field to its list of messages.

object
key
additional properties
any
Example generated
{
"error": {
"code": "example",
"message": "example",
"request_id": "example",
"details": {}
}
}