Scpafl APIscpafl.org ↗
Search Seminole County, FL parcel records by address. Returns parcel ID, just value, assessed value, year built, living area, city, and zip code.
What is the Scpafl API?
The scpafl.org API provides access to Seminole County, Florida property appraiser records through a single search_by_address endpoint that returns up to 8 structured fields per parcel, including parcel ID, current just (market) value, assessed value, year built, and total living area. It covers residential and commercial parcels county-wide, letting developers query the public assessment database by partial or full street address.
curl -X GET 'https://api.parse.bot/scraper/5c232e17-f5db-4da7-a3b1-05a5cbc6d0de/search_by_address?address=100+E+1st+St' \ -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 scpafl-org-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: Seminole County Property Appraiser — search parcels by address."""
from parse_apis.scpafl_org_api import SeminoleCounty, InputFormatInvalid
client = SeminoleCounty()
# Search for parcels matching a street address prefix; limit total results.
for parcel in client.parcels.search(address="100 E 1st St", limit=5):
print(parcel.parcel_id, parcel.site_address, parcel.city, parcel.zip)
print(f" Just value: ${parcel.just_value:,} Assessed: ${parcel.assessed_value:,}")
print(f" Year built: {parcel.year_built} Living area: {parcel.total_living_area_sqft}")
# Drill into the first result from a broader search.
try:
hit = client.parcels.search(address="100 Oakley", limit=1).first()
except InputFormatInvalid as e:
print(f"Bad address format: {e.message}")
hit = None
if hit is not None:
print(f"\nFirst match: {hit.parcel_id} — {hit.site_address}, {hit.city} {hit.zip}")
print("exercised: parcels.search")
Search parcel records by street address. Returns matching parcels with property details including parcel ID, full site address, city, zip code, current just value (market value), assessed value, year built, and total living area. The address is matched as a prefix against the county's parcel address records (case-insensitive). City suffixes like ', Sanford' are automatically stripped before searching. Results are capped at 50 records per call.
| Param | Type | Description |
|---|---|---|
| addressrequired | string | Street address to search for (e.g. '100 E 1st St' or '100 E 1st St, Sanford'). Matched as a prefix against parcel site addresses. Common street type words (Street, Avenue, etc.) are normalized to abbreviations (ST, AVE, etc.). |
{
"type": "object",
"fields": {
"total": "integer count of results returned",
"results": "array of parcel record objects"
},
"sample": {
"data": {
"total": 1,
"results": [
{
"zip": "32771",
"city": "SANFORD",
"parcel_id": "25-19-30-5AG-0203-0040",
"just_value": 2393222,
"year_built": 1922,
"site_address": "100 E 1ST ST",
"assessed_value": 1417273,
"total_living_area_sqft": null
}
]
},
"status": "success"
}
}About the Scpafl API
What the API Returns
The search_by_address endpoint queries the Seminole County Property Appraiser's parcel database and returns a total count alongside a results array of matching parcel objects. Each record includes the parcel ID, full site address, city, zip code, current just value (market value), assessed value, year built, and total living area in square feet. These fields come directly from the county's official assessment records.
Address Matching Behavior
The required address input is matched as a prefix against parcel site addresses in the county database. You can pass a partial address like 100 E 1st St or include the city as 100 E 1st St, Sanford to narrow results. Prefix matching means 100 E will return all parcels whose address begins with that string, so specificity in the input controls result volume.
Data Coverage and Freshness
Coverage is limited to Seminole County, Florida — the seven municipalities and unincorporated areas within county jurisdiction. Assessment values reflect the Property Appraiser's official records and are updated on the appraiser's publish schedule, typically aligned with annual assessment cycles. The API does not expose owner name, legal description, sale history, or exemption details from the underlying records.
The Scpafl API is a managed, monitored endpoint for scpafl.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when scpafl.org 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 scpafl.org 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?+
- Look up assessed and market value for a Seminole County property by street address for real estate due diligence
- Pull year built and living area to build automated comparable property screening tools
- Validate or enrich address data with official parcel IDs for county properties
- Cross-reference tax assessed value against listing price when evaluating investment properties
- Aggregate just values across multiple parcels to estimate neighborhood-level assessment trends
- Verify zip code and city classification for addresses in Seminole County
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Seminole County Property Appraiser offer an official developer API?+
What does the search_by_address endpoint return when multiple parcels match?+
results key, with a total integer indicating the count. Each object includes parcel ID, full site address, city, zip code, just value, assessed value, year built, and total living area. There is no pagination parameter — all matches for the prefix are returned in a single response.