DeedPop API Docs
Base URL
https://deedpop.com/api/publicLive once deedpop.com is published.
Send your key in the X-Api-Key header on every request. Every record includes source and last_updated. Owner names and photos are never returned.
Data is provided as-is, not legal advice. Verify with the county before bidding.
GET/v1/counties
Every county in DeedPop with its sale type, next and last sale, place, how to pay, where unsold properties go, and the official link.
Filters
- None
Example request
curl -H "X-Api-Key: dd_live_YOUR_KEY" \
"https://deedpop.com/api/public/v1/counties"Example response (shape)
{ "data": [ { "county": "Wyandotte", "state": "KS", "sale_type": "deed", "next_sale": "…", "place": "…", "how_to_pay": "…", "where_unsold_goes": "…", "official_link": "https://…", "source": "County data (county website)", "last_updated": "2026-10-03T19:00:00Z" } ] }GET/v1/tax-sales
Tax sale listings. The price is the county's amount owed or minimum bid — not an asking price.
Filters
- state — 2-letter code (MO, KS, MN, WI, AR)
- county — county name, e.g. Wyandotte
- sale_type — deed, lien or unknown
- property_type — e.g. Land
- min_price, max_price — numbers
- status — listing status
- updated_since — date (2026-10-01) or date-time
- page — starts at 1
- limit — up to 100 (default 25)
Example request
curl -H "X-Api-Key: dd_live_YOUR_KEY" \
"https://deedpop.com/api/public/v1/tax-sales?state=KS&county=Wyandotte&limit=10"Example response (shape)
{ "data": [ { "id": "ts_…", "parcel_number": "…", "address": "…", "county": "Wyandotte", "state": "KS", "sale_type": "deed", "sale_date": "2026-10-14", "status": "scheduled", "price": 1234.56, "property_type": "Land", "source": "…", "source_url": "https://…", "last_updated": "…" } ], "page": 1, "limit": 10, "total": 119 }GET/v1/tax-sales/{id}
One tax sale listing, using its id (starts with ts_) from /v1/tax-sales.
Filters
- None
Example request
curl -H "X-Api-Key: dd_live_YOUR_KEY" \
"https://deedpop.com/api/public/v1/tax-sales/ts_abc123def456"Example response (shape)
{ "data": { "id": "ts_…", "parcel_number": "…", "source": "…", "last_updated": "…" } }GET/v1/agent-listings
Land for sale by real estate agents (from RentCast, updated weekly). Prices are asking prices, not bids.
Filters
- state — 2-letter code (MO, KS, MN, WI, AR)
- county — county name, e.g. Wyandotte
- city — e.g. Leawood
- zip — 5 digits
- property_type — e.g. Land
- min_price, max_price — numbers
- status — active (default) or no_longer_listed
- updated_since — date (2026-10-01) or date-time
- page — starts at 1
- limit — up to 100 (default 25)
Example request
curl -H "X-Api-Key: dd_live_YOUR_KEY" \
"https://deedpop.com/api/public/v1/agent-listings?state=MN&city=Stillwater"Example response (shape)
{ "data": [ { "id": "…", "address": "…", "city": "Stillwater", "state": "MN", "asking_price": 125000, "lot_acres": 0.14, "listing_agent": { "name": "…", "phone": "…", "website": "…" }, "listing_office": { "name": "…" }, "source": "RentCast (for sale by agent)", "last_updated": "…" } ], "page": 1, "limit": 25, "total": 42 }GET/v1/liens
Missouri tax lien (certificate) sales already held — winning bid, taxes owed, overbid, and the owner's redemption deadline. Owner and buyer names are never returned.
Filters
- state — 2-letter code (MO)
- county — county name, e.g. Boone
- min_bid, max_bid — numbers
- redeem_before — date (2027-12-31)
- page — starts at 1
- limit — up to 100 (default 25)
Example request
curl -H "X-Api-Key: dd_live_YOUR_KEY" \
"https://deedpop.com/api/public/v1/liens?state=MO&county=Boone&max_bid=50000"Example response (shape)
{ "data": [ { "county": "Boone", "state": "MO", "sale_date": "…", "item_number": "…", "parcel_number": "…", "location": "…", "legal_description": "…", "acres": …, "winning_bid": …, "taxes_owed": …, "research_fee": …, "overbid": …, "redeem_by": "…", "deed_deadline": "…", "source": "County tax sale results", "source_url": "https://…", "last_updated": "…" } ], "page": 1, "limit": 25, "total": … }overbid = winning bid minus taxes owed (and minus the county research fee, where the county charges one). In Missouri, interest is paid only on the taxes portion, not the overbid.
redeem_by = last day the owner can pay and redeem. deed_deadline = last day the buyer can get the collector's deed.
acres is null when the county list gives no acreage.
location is null when the county list gives no street address; legal_description is the county's legal description, when given.
research_fee = county research fee included in the winning bid (null if the county charges none).
Errors
Errors come back as JSON: { "error": { "code", "message" } }
- 400 bad_filter — A filter value isn't valid (the message says which).
- 401 missing_key / bad_key — No X-Api-Key header, or the key isn't valid.
- 403 revoked_key — The key was revoked.
- 429 rate_limited / monthly_limit — Per-minute or monthly limit hit. reset_at says when you can try again.