For data buyers
Auction data API
Read-only JSON for upcoming foreclosure and tax deed sales and their results, by county, with date filters. The same data that powers the site, refreshed daily with a weekly re-check.
API keys are issued by request during early access. Each key is tied to the counties on your plan. Request access.
Authentication and limits
Send your key in the x-api-key header. Keys are rate limited to 5 requests per second (bursts of 10) and 10,000 requests per day. Over the limit you get 429; a missing, wrong or disabled key gets 403; a county outside your plan gets 403 with a message.
curl -H "x-api-key: YOUR_KEY" \
"https://ulyrdenahj.execute-api.us-east-1.amazonaws.com/prod/v1/sales?county=hillsborough&from=2026-11-01&to=2026-11-30"Endpoints
GET /v1/sales: upcoming scheduled sales (sale date today or later), oldest first.GET /v1/results: past sales with an outcome (sold, canceled, redeemed…), newest first.GET /v1/counties: county codes.
Base URL: https://ulyrdenahj.execute-api.us-east-1.amazonaws.com/prod/v1
Query parameters
| Name | Use | Description |
|---|---|---|
| county | required | County code, e.g. hillsborough, miamidade, palmbeach, tx-dallas. See /v1/counties. |
| from | optional | Earliest sale date, YYYY-MM-DD. /sales defaults to today. |
| to | optional | Latest sale date, YYYY-MM-DD. /results is capped at today. |
| status | optional, /results | Comma list: sold, canceled, redeemed, no_bids, struck_off (default all of them). |
| limit | optional | Rows per page, 1 to 1000 (default 500). |
| cursor | optional | Pass the cursor from the previous response to get the next page. |
Response
{
"items": [
{
"item_id": "hillsborough#25-CA-001234#1a2b3c4d",
"county": "hillsborough",
"case_number": "25-CA-001234",
"auction_date": "2026-11-05",
"auction_status": "scheduled",
"auction_type": "FORECLOSURE",
"property_address": "123 EXAMPLE ST, TAMPA, FL- 33607",
"final_judgment_amount": 182450.12,
"assessed_value": 241000,
"owner_name": "EXAMPLE OWNER",
"pa_homestead": false
}
],
"count": 1, "total": 37, "cursor": null,
"data_as_of": "2026-10-17T04:12:09+00:00",
"query": { "county": "hillsborough", "from": "2026-11-01", "to": "2026-11-30", "status": "scheduled" }
}Example values are illustrative. Empty fields are omitted.
Fields
- item_id
- Stable record id (county#case#address hash)
- county, county_name, state
- Where the sale is held
- case_number
- Court case / tax deed number
- auction_date
- Sale date (YYYY-MM-DD)
- auction_status, auction_status_raw
- Normalized status and the county site's wording
- auction_type
- FORECLOSURE or TAXDEED
- property_address, city, zip, latitude, longitude
- Location (coordinates are geocoded and may be missing)
- parcel_id, parcel_url, case_url
- Identifiers and links from the auction listing
- final_judgment_amount, opening_bid, plaintiff_max_bid
- Amounts as published (plaintiff max bid is often hidden)
- assessed_value, market_value
- Values published with the listing
- sold_amount, sold_to, buyer_type, sold_at
- Results: winning bid and buyer type (plaintiff, third_party, cert_holder)
- surplus_est
- Sold amount minus final judgment (third-party sales only; an estimate)
- owner_name, pa_parcel_id, pa_just_value, pa_assessed_value, pa_homestead
- Florida DOR tax-roll match by parcel ID, when available
- first_seen, loaded_at
- When we first saw and last loaded the record
Paging example (Python)
import requests
url, key = "https://ulyrdenahj.execute-api.us-east-1.amazonaws.com/prod/v1/results", "YOUR_KEY"
params, rows = {"county": "palmbeach", "from": "2026-01-01", "status": "sold"}, []
while True:
r = requests.get(url, params=params, headers={"x-api-key": key}, timeout=30)
r.raise_for_status(); d = r.json(); rows += d["items"]
if not d["cursor"]: break
params["cursor"] = d["cursor"]
print(len(rows))Compiled from public county records; may contain errors. Not legal or investment advice. Verify with the county clerk before bidding.