Florida Tax Certificate API
Endpoints

Sources

Per-county delinquency / certificate-sale feed registry — vendor, sale URL, source kind, login requirement, and last-success timestamps. Plus dataset freshness.

GET /api/v1/sources

List the per-county delinquency / certificate-sale feed sources the platform tracks, one row per county + tax year. Each row records the source vendor (LienHub, RealAuction / RealTaxLien, TaxCertSale, WFBS, county-local), the certificate-sale portal URL, the source kind, whether it requires a login, and the last-check / last-success timestamps. This is how you see which counties have certificate coverage and where the data came from.

Authentication

curl -H "X-API-Key: fltc_test_..." \
  "https://fltaxcerts.com/api/v1/sources?county=polk&active=true"

There is also a per-county convenience route:

curl -H "X-API-Key: fltc_test_..." \
  "https://fltaxcerts.com/api/v1/sources/polk"

Query Parameters (/sources)

NameTypeRequiredDefaultDescription
countystringnoCounty slug filter.
vendorstringnoVendor name (case-insensitive contains).
source_kindstringnoSource kind (e.g. cert_sale_portal, bulk_download).
activebooleannotrue/false — only active (or inactive) sources.
limitintegerno100Page size.
offsetintegerno0Pagination offset.

The /sources/{county} route takes the county slug as a path parameter and returns every source row for that county (newest tax year first).

Response (200)

List envelope { data: Source[], pagination, meta }.

{
  "data": [
    {
      "id": "src_polk_2024",
      "countyId": "ckpolk0001",
      "countySlug": "polk",
      "taxYear": 2024,
      "vendor": "lienhub",
      "saleUrl": "https://polk.lienhub.com/",
      "downloadUrl": null,
      "sourceKind": "cert_sale_portal",
      "requiresLogin": true,
      "lastCheckedAt": "2026-06-27T06:00:00.000Z",
      "lastSuccessAt": "2026-06-27T06:00:00.000Z",
      "lastError": null,
      "active": true,
      "notes": "Annual tax-certificate sale via LienHub.",
      "createdAt": "2026-01-12T00:00:00.000Z",
      "updatedAt": "2026-06-27T06:00:00.000Z"
    }
  ],
  "pagination": { "limit": 1, "offset": 0, "total": 1, "has_more": false },
  "meta": { "request_id": "req_1234567890abcdef12345", "dataset_status": "live" }
}

Dataset freshness

GET /api/v1/certificates/freshness returns a small object summarizing the certificate dataset: total certificate count, latest tax year, last ingested timestamp, and last source-success timestamp. Use it to decide whether to re-pull.

{
  "data": {
    "certificate_count": 1284903,
    "latest_tax_year": 2024,
    "last_ingested_at": "2026-06-27T06:00:00.000Z",
    "last_source_success_at": "2026-06-27T06:00:00.000Z"
  },
  "meta": { "request_id": "req_1234567890abcdef12345", "dataset_status": "live" }
}

Error Responses

StatusCodeCause
401unauthorizedMissing or invalid API key.
404not_foundNo sources for that county (/sources/{county}).
429rate_limitedRate limit exceeded.
500internal_errorServer error — retry with backoff.

On this page