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

NameUseDescription
countyrequiredCounty code, e.g. hillsborough, miamidade, palmbeach, tx-dallas. See /v1/counties.
fromoptionalEarliest sale date, YYYY-MM-DD. /sales defaults to today.
tooptionalLatest sale date, YYYY-MM-DD. /results is capped at today.
statusoptional, /resultsComma list: sold, canceled, redeemed, no_bids, struck_off (default all of them).
limitoptionalRows per page, 1 to 1000 (default 500).
cursoroptionalPass 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.