The USPS API
you wish existed.
Every address your business runs on — standardized, geocoded, and confirmed deliverable on your own USPS license — through one clean API, with rates, tracking, and labels behind the same key. Flat monthly price. First call in minutes. A free key that does real work today.
XML Web Tools
410 Gone
Deprecated Jan 25
RevAddress v3
200 OK · 42ms
JSON over HTTPS · api.revaddress.com
No credit card. 1,000 calls/month on the free tier. Why Web Tools died →
GET /api/address/validate
// Response — exact match
{
"streetAddress": "1600 PENNSYLVANIA AVE NW",
"city": "WASHINGTON",
"state": "DC",
"ZIPCode": "20500",
"ZIPPlus4": "0005",
"DPVConfirmation": "Y",
"deliveryPoint": "99",
"business": "N",
"vacant": "N"
}What you send
11 Wall St., New York, N.Y., 10005
What comes back
11 WALL ST, NEW YORK, NY, 10005
MATCH-74.01078, 40.70711TRACT 000700MEDIAN INCOME $151,250
One row from the sample donor file — standardized, street-level geocoded, income-enriched in the same pass. Run your file →
01Resilience
Every request gets an answer
DPV verification when the USPS lane is up. Census standardization — clearly labeled — when it isn't. Your integration never sees a raw upstream fault.
GET /api/address/validate
// USPS DPV — authoritative delivery-point record
{
"streetAddress": "1600 PENNSYLVANIA AVE NW",
"ZIPCode": "20500",
"ZIPPlus4": "0005",
"DPVConfirmation": "Y",
"resolution": "deliverable_exact"
}GET /api/address/validate
// Census standardization — automatic fallback, labeled
{
"streetAddress": "2214 SE MORRISON ST",
"city": "PORTLAND",
"coordinates": { "lat": 45.5169, "lng": -122.6434 },
"resolution": "standardized_unverified",
"degraded": true
}Both shapes captured from the live API. Degraded responses carry degraded: true and an explicit notice — never a silent swap.
02Live demo
Try it — validate any address
No signup. No API key. Free tier, live responses.
Raw JSON
Free tier: Census standardization, geocoding, and address extract. Connect your USPS license for DPV, ZIP+4, and rates. Get an API key for higher limits.
03Why RevAddress
Flat pricing, no per-lookup surcharges
SmartyStreets charges per lookup. EasyPost adds per-label fees. RevAddress is a flat monthly rate — your 1,000th validation costs the same as your first: $0.
See the full comparison →Drop-in SDKs
Open-source Python, Node.js, and PHP SDKs. Install, pass your API key, call validate(). Replace XML endpoints with REST in one afternoon.
Your keys, our infrastructure
Bring your own USPS Developer Portal credentials. We handle OAuth token lifecycle, rate limits, and encrypted storage. Your data stays yours, AES-GCM encrypted at rest.
04Migration
Migrate in three steps
Replace your USPS Web Tools XML integration with a modern REST API. Most developers ship within an hour.
Get your API key
Sign up free — no credit card needed. Standardize and geocode immediately; connect your USPS Developer Portal app for DPV and rates on your license.
Install the SDK
pip install usps-v3 or npm install usps-v3. Replace secure.shippingapis.com XML calls with typed REST methods.
Ship
Validate addresses, compare rates, and create labels on your USPS license. Add tracking, batch validation, and intelligence when you need them.
05Quickstart
Working USPS validation in under 60 seconds
cURL first — switch to Python, Node, or PHP with one click. Same shape, same response, drop-in SDKs.
06Get started
Your first call is five minutes away.
A free key standardizes and geocodes 1,000 addresses a month — today, no card. Connect your USPS license when you want DPV and rates; go flat-rate when you outgrow free.
Built on the official USPS v3 endpoints. Never a scrape.