Address Validation for Real Estate and Property Data
Listings, tax rolls and CRMs each write the same property address their own way. Here is what one standard address form looks like, tested live on a landmark and an office building, and where address verification stops and property data begins.
An address validation API for real estate and property data checks US property addresses against postal data and standardizes the ones it matches into one form: street, unit, city, state, ZIP+4 and county. You then use that form to find listings, tax records and CRM entries that may be the same property. It does not tell you who owns the property or what it is worth; property data APIs such as ATTOM and BatchData sell that.
Why property records need one address form
A listing feed may say "525 South Winchester Boulevard". A tax record may say "525 S Winchester Blvd". A plain text match treats them as two properties. In our test the long form came back as "525 S Winchester Blvd, San Jose, CA 95128-2537", so both records now share the same street line and show up as a candidate match.
Four parts of the address do most of the work when you match records:
- Street line. Abbreviations, directions and suffixes written one way ("S", "Blvd").
- Unit. Returned as its own fields (unit type and unit number). In our test, "#900" came back as unit type "STE" and unit number "900".
- ZIP+4. The four digits after the ZIP Code. In our test, a suite and its building got different ZIP+4 codes (see below).
- County. Useful when you join to county-level records. Verification returns the county name, for example "Santa Clara". Geocoding returns "Santa Clara County" plus a numeric county code, "06085". Pick one form before you join.
Live test: a landmark and an office building
We sent three addresses to the sthan.io verification API on October 16, 2026: a landmark in San Jose with no units, one suite in a San Francisco office building, and the same building with no suite. Each answered in under 2 seconds.
| What we typed | Standardized address | Unit fields | County | Record type | deliverableStatus |
|---|---|---|---|---|---|
| 525 South Winchester Boulevard, San Jose CA | 525 S Winchester Blvd, San Jose, CA 95128-2537 | none | Santa Clara | S (street) | Confirmed |
| 1355 Market Street #900, San Francisco CA 94103 | 1355 Market St STE 900, San Francisco, CA 94103-1337 | STE / 900 | San Francisco | H (highrise) | Confirmed |
| 1355 Market St, San Francisco, CA 94103 (answer returned at 8:32 a.m. Pacific) | 1355 Market St, San Francisco, CA 94103-1307 | none | San Francisco | S (street) | ConfirmedPrimaryOnly |
Four things stand out. The San Jose input had no ZIP Code; the response filled in 95128-2537 and marked both the ZIP Code and the ZIP+4 as inferred. The "#900" came back split into unit type "STE" and unit number "900". The building without a suite came back ConfirmedPrimaryOnly, which sthan.io's documentation defines as "primary OK but secondary unit missing or invalid", with a different ZIP+4 (1307) from the suite (1337). And that building record had record type S, while the suite had H, so the record type alone does not tell you a building has units.
Find duplicates on the standardized address
The building result above is the trap. If one record has the suite and another does not, they get different ZIP+4 codes, so a key built on ZIP+4 splits them, and a key built on street and 5-digit ZIP alone lumps every suite in the building together. A shared address also does not prove that two listings, sales or parcel records are the same property.
Our suggested workflow: use the standardized street, unit and ZIP to find candidate matches, then confirm the property or parcel identifier and the record type before you merge.
| Situation | Key for finding candidates | Suggested next step |
|---|---|---|
| Status Confirmed, unit fields empty | Standardized street line + 5-digit ZIP | Candidate match. Confirm the parcel identifier and record type before merging. |
| Status Confirmed, unit fields filled | Standardized street line including unit + 5-digit ZIP | Candidate match only when the unit matches too. Then confirm the parcel identifier. |
| Status ConfirmedPrimaryOnly | Street line without unit + 5-digit ZIP | Do not merge into a unit record. Find the unit first. |
| Status NotDeliverable or Unknown | None yet | Hold for review instead of merging. |
Coordinates do not settle it either. In our geocoding test below, the suite and the building came back as two points 39.2 meters apart, so do not merge records on latitude and longitude.
For a property file in a spreadsheet, the same logic applies: verify each row once, store the standardized fields next to the original, and look for candidate duplicates on the stored fields. sthan.io's Address Cleaner takes an Excel, .csv or .tsv file of up to 100,000 rows and gives back your original columns plus the cleaned address, ZIP+4, county and a status for every row. It costs $1.20 per 1,000 rows found in postal records; rows that need review or are not found are free, and your first 100 rows each day are free.
Geocode for maps
Maps and radius searches need coordinates, which come from a geocoding API, a separate product from verification. sthan.io's forward geocoding endpoint is /Geocoding/USA/Forward/{address} and the reverse endpoint is /Geocoding/USA/Reverse/{lat}/{lon}. Here is what they returned on October 16, 2026:
| Request | Result | accuracy.type | confidence | County |
|---|---|---|---|---|
| Forward: 525 S Winchester Blvd, San Jose, CA 95128 | 37.3189377, -121.9507648; 525 S Winchester Blvd, San Jose, CA 95128-2537 | address_point | 0.84 | Santa Clara County (06085) |
| Reverse: 37.3189377, -121.9507648 | 525 S Winchester Blvd, San Jose, CA 95128, distance 0 | address_point | 0.95 | Santa Clara County (06085) |
| Forward: 1355 Market St Ste 900, San Francisco, CA 94103 | 37.776548, -122.416795; 1355 Market St STE 900, San Francisco, CA 94103-1337 | address_point | 0.83 | San Francisco County (06075) |
| Forward: 1355 Market St, San Francisco, CA 94103 | 37.776740, -122.416422; 1355 Market St, San Francisco, CA 94103 | rooftop | 0.9 | San Francisco County (06075) |
The reverse lookup on the San Jose point came back to the same address. All four answers carried a county, written with the word "County" and a numeric code, which differs from the verification response. Forward and reverse geocoding are included together in the same plan: 3,000 free requests a month (up to 100 a day), then from $5 a month for 10,000.
A geocoder tells you where an address sits on the map. It is not a deliverability check, so run verification first if you also need the standardized postal address.
Address verification and property data APIs answer different questions
sthan.io's address verification and property data APIs such as ATTOM and BatchData are different products. They answer different questions, so their prices are not comparable.
| Address verification (sthan.io) | Property data APIs (for example ATTOM, BatchData) | |
|---|---|---|
| Question it answers | Is this a real, deliverable address, and what is its standard form? | What is known about the property at this address? |
| What comes back | Standardized address, unit, city, state, ZIP+4, county, record type, deliverability status | ATTOM's Property API: "property characteristics, ownership, transactions, and valuation metrics". BatchData lists "1,000+ data points across 155 million properties", including owner names, automated valuation models (AVM) and mortgage and lien data |
| Owner, value, tax fields | None in sthan.io's response | Yes |
| Typical use | Clean and match addresses before they enter your systems | Enrich a property record once its address is known |
The two work together: standardize the address first, then look it up in a property data source.
Where sthan.io fits. sthan.io verifies US property addresses and standardizes the ones it matches: street line, separate unit fields, ZIP+4, county name and a deliverability status, plus geocoding for maps and Address Cleaner for whole spreadsheets. Verification is free for 3,000 lookups a month (up to 100 a day) with no credit card; paid plans start at $12 a month for 10,000. Its responses carry no owner, value or tax fields. sthan.io is not CASS-certified.
Frequently Asked Questions
Sources
All read October 16, 2026: live sthan.io API calls to /v2/address-verification/usa/ (three addresses above), /Geocoding/USA/Forward/ (three addresses above) and /Geocoding/USA/Reverse/ (the San Jose point); sthan.io/docs (deliverableStatus and recordType definitions, geocoding paths, free-tier limits); sthan.io/products/address-verification-usa; sthan.io/products/geocoding-usa; sthan.io/products/reverse-geocoding-usa; sthan.io/address-cleaner; api.developer.attomdata.com/docs; attomdata.com/data/property-data/; batchdata.io. Prices change; check the vendor page before you buy.
Standardize your property addresses free
3,000 verifications a month, no credit card. Street line, unit, ZIP+4, county and deliverability status with each successful match.