Open source · MIT · Build an AI front desk, part 5
fl-parcel-lookup
Open data: Florida parcels, and why the address is the hard part. County property data is public. The hard part is that every county spells the same street differently. How to turn a typed address into a folio number and legal description.
- TypeScript
- ArcGIS
- Google Places
Early (v0.x), written with Claude Code and directed and reviewed by me. Not on npm yet: clone the repository to use it.
Miami-Dade, Broward and Palm Beach publish property data through public ArcGIS services, with no key and no account. Asking them a question is easy. Getting the right answer is not, because the address a customer types is almost never the address the county stored.
- Address from Google Places
- Normalize per county
- County ArcGIS service
- Match the right parcel
- Folio and legal description
One street, three spellings
A customer types "NW 7th Street". One county stores NW 7 ST, another NW 7TH ST. Units may or may not be appended, and a ZIP can be five or nine digits. The normalizer splits an address into parts and produces each county's preferred spellings, so a search can try the alternates.
import { normalizeAddress } from '@27colab/fl-parcel-lookup';
const n = normalizeAddress('100 Northwest 7th Street Apt 4B, Miami, FL 33125');
console.log(n.county, n.unit, n.search['miami-dade'], n.search['palm-beach']);
// miami-dade 4B [ '100 NW 7 ST', '100 NW 7TH ST' ] [ '100 NW 7TH ST', '100 NW 7 ST' ]Try your own address
Only the parsing runs on this page. No county is contacted.
Florida parcels: why the address is the hard part
Miami-Dade, Broward and Palm Beach each store the same street differently (NW 7 ST vs NW 7TH ST). Type an address and see how fl-parcel-lookup (opens in a new tab) breaks it down and what it would search for in each county. Only the parsing runs here. No county is contacted.
- Street number
- 1234
- Direction
- NW
- Street name
- 7TH
- Type
- ST
- Unit
- 5B
- City
- Miami
- ZIP
- 33125
- County detected
- Miami-Dade County
Street line each county would be searched for
- Miami-Dade County: 1234 NW 7 ST or 1234 NW 7TH ST
- Broward County: 1234 NW 7TH ST or 1234 NW 7 ST
- Palm Beach County: 1234 NW 7TH ST or 1234 NW 7 ST
A pre-fill, not a source of truth: confirm folio and legal description against the recorded deed or a title search before any legal use.
Say when you are guessing
If a condo building has dozens of units and the customer gave none, the right behaviour is to say so, not to quietly pick one. Results carry flags for ambiguity and whether the unit matched. Owner names are off unless you ask, and nothing is logged.
What this does not do
- It is a pre-fill, not a source of truth. Property appraiser records are not title: confirm a folio or legal description against the recorded deed or a title search before using it on a legal filing.
- It covers Miami-Dade, Broward and Palm Beach only.
- County services can change; the library returns errors instead of guessing.
Get it
git clone https://github.com/27colab/fl-parcel-lookup.git
cd fl-parcel-lookup && npm ci && npm testUsed in
Want this built into your product? Get in touch.