Manateepao APImanateepao.gov ↗
Search Manatee County parcels, retrieve ownership records, land use, building area, and full sales history via 4 structured API endpoints.
What is the Manateepao API?
The Manatee County Property Appraiser API provides 4 endpoints covering parcel search, property detail retrieval, sales history, and multi-family sales comparables for properties in Manatee County, Florida. The search_properties endpoint accepts filters including DOR land use code, owner last name, zip code, sale price range, and sale date to return matching parcels with owner names and situs addresses.
curl -X GET 'https://api.parse.bot/scraper/8370bc40-1e16-4956-9dff-8f8c62121ae1/search_properties?dor_code=01&own_last=SMITH&zip_code=34212&parcel_id=1102040509' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace manateepao-gov-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Manatee County Property Appraiser — search, detail, sales history."""
from parse_apis.manatee_county_property_appraiser_api import ManateeCounty, PropertyNotFound
client = ManateeCounty()
# Search properties by owner last name, capped at 5 results.
for prop in client.properties.search(own_last="SMITH", limit=5):
print(prop.parcel_id, prop.situs_address, prop.postal_city)
# Drill into the first result to get full property detail.
prop = client.properties.search(zip_code="34212", dor_code="01", limit=1).first()
if prop:
detail = prop.details()
print(detail.ownership, detail.land_size, detail.building_area)
# List sales history for a property constructed by known parcel ID.
target = client.property(parcel_id="1102040509")
for sale in target.sales.list(limit=3):
print(sale.sale_date, sale.sale_price, sale.grantee, sale.instr_desc)
# Typed error handling when a parcel does not exist.
try:
bad = client.property(parcel_id="0000000000").details()
except PropertyNotFound as exc:
print(f"Property not found: {exc.parcel_id}")
# Multi-family sales comparables with minimum 10 units.
for comp in client.multifamilycomparables.search(units_low="10", limit=3):
print(comp.parcel_id, comp.owner, comp.units, len(comp.sales_history))
print("exercised: properties.search / property.details / property.sales.list / multifamilycomparables.search")
Search for properties using multiple filters. Returns a list of matching parcels with basic info including parcel ID, owner names, address, and postal city. At least one filter should be provided. Results are capped at 1000 by the upstream system.
| Param | Type | Description |
|---|---|---|
| dor_code | string | DOR Land Use code. Comma-separated for multiple (e.g. '01' for single family, '03' for 10+ units, '08' for multifamily less than 10 units) |
| own_last | string | Owner's last name |
| zip_code | string | Property zip code |
| parcel_id | string | Parcel ID (e.g. 1102040509) |
| units_low | string | Minimum number of living units |
| situs_address | string | Situs (property) address or partial address to search |
| sale_price_low | string | Minimum sale price |
| sale_date_start | string | Minimum sale date in MM/DD/YYYY format |
| sale_price_high | string | Maximum sale price |
{
"type": "object",
"fields": {
"count": "integer total number of matching parcels",
"items": "array of property objects with Parcel ID, Property Type, Owner(s), Situs Address, Postal City"
},
"sample": {
"data": {
"count": 1000,
"items": [
{
"Owner(s)": ";DHADUVAI, ASHOK KUMAR;DHADUVAI, VIJAYALAKSHMI;",
"Parcel ID": "1101004107",
"Postal City": "BRADENTON",
"Property Type": "REAL PROPERTY",
"Situs Address": ";6173 9TH AVENUE CIR NE;"
}
]
},
"status": "success"
}
}About the Manateepao API
Property Search and Parcel Lookup
The search_properties endpoint accepts up to eight filter parameters simultaneously, including dor_code for DOR Land Use classification (e.g., 01 for single-family, 03 for 10+ units), situs_address for partial or full property address matching, sale_price_low for a minimum sale price threshold, and sale_date_start in MM/DD/YYYY format. Results return a count of total matching parcels alongside an items array containing Parcel ID, Property Type, owner names, situs address, and postal city.
Parcel Detail and Building Characteristics
The get_property_detail endpoint takes a single parcel_id and returns a structured object with fields covering land_use (DOR code and description), land_size in both acres and square feet, building_area, living_units, neighborhood code and name, subdivision, owner_type, ownership (semicolon-separated owner names), situs_address, and parcel_id. This is the primary endpoint for pulling appraiser-level parcel characteristics rather than transaction data.
Sales History and Multi-Family Comparables
The get_property_sales endpoint retrieves every recorded transaction for a given parcel_id, returning fields including Sale Date, Sale Price, Grantee, Instrument Type, instr_desc, qual_desc, and deed book/page references (BOOK, PAGE). For multi-family analysis, search_multifamily_sales_comparables targets DOR codes 03 and 08 and accepts units_low, sale_date_start, and a limit parameter. Each result embeds a full sales_history array alongside year_built, units, address, property_type, and owner — making it usable directly for comp analysis without a secondary lookup.
The Manateepao API is a managed, monitored endpoint for manateepao.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when manateepao.gov changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official manateepao.gov API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Building a multi-family investment comp sheet using
search_multifamily_sales_comparablesfiltered by unit count and sale date - Tracking ownership changes on a specific parcel by polling
get_property_salesfor new transaction records - Filtering all properties by DOR land use code and zip code to identify commercial or residential clusters
- Pulling
building_area,living_units, andland_sizefor a parcel portfolio valuation model - Identifying recent sales above a price threshold using
sale_price_lowandsale_date_startinsearch_properties - Enriching a property database with subdivision, neighborhood code, and owner type from
get_property_detail - Compiling deed book and page references from
get_property_salesto cross-reference with county clerk records
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the Manatee County Property Appraiser office provide an official developer API?+
What does `search_multifamily_sales_comparables` return that `search_properties` does not?+
sales_history array — including Sale Date, Sale Price, Grantee, Instrument Type, and book/page — directly in each result. search_properties returns basic parcel identifiers without transaction records, requiring a separate get_property_sales call per parcel.Does the API cover assessed values or taxable value estimates?+
Is the sales history in `get_property_sales` complete for all recorded instruments, or only arm's-length sales?+
qual_desc (qualification code description) and instr_desc (instrument type description) so you can filter out non-qualified transfers such as foreclosures, family deeds, or corrective instruments on your end.