Address Verification API
Validate, correct, and parse addresses programmatically. One penny per verification, half a penny per parse, 100 free per month, and a 24-hour cache that makes repeat lookups free. Single calls or batches up to 100.
1¢
Per Verification
Cheapest production address API on the market
100/mo
Free Tier
No credit card to start
24h
Cache (Free Hits)
Cached lookups do not count against your usage
100
Batch Size
Verify up to 100 addresses in one request
Benefits
Why Businesses Choose This Feature
- Drop-In Address Validation
POST a structured or free-text address, get back a normalized response with components, deliverability status, and confidence score. Standard JSON. No SDK required.
- Parse Free-Text Addresses
POST /api/v1/addresses/parse takes a raw string like "123 main st apt 4b ny ny 10001" and returns clean structured fields. Great for ingesting messy CSV uploads or scraped data.
- 24h Cache, Cached Hits Free
Look up the same address twice in 24 hours and the second lookup is free — does not count against your quota or your billing. Great for forms with retry logic and re-validation flows.
- Batch Up to 100 Per Request
For bulk imports, send up to 100 addresses in one POST and get back 100 results. Each address counts as one verification. Pagination handled by your code if you need more.
- Per-Key Rate Limits & Usage
Generate multiple API keys, scope them to environments (production, staging), and track usage per key. Webhooks notify you when a key approaches its monthly quota.
- Powered by EasyPost — Battle-Tested
Under the hood, verifications hit EasyPost is address verification (which routes to USPS for US addresses and partner providers for international). You get our caching layer, parsing, and pricing on top.
How the API Works
Generate an API Key
Sign up for a ShipWave account and create an API key in the Developer Settings. Free tier gives you 100 verifications per month with no credit card required.
POST Your Address
Send a request to /api/v1/addresses/verify (single or batch) or /api/v1/addresses/parse with your API key in the Authorization header. Get back JSON.
Cache Handles Repeats
Identical addresses (same normalized key) within 24 hours return the cached result instantly and do not count against your quota. Saves you money on retry-heavy workflows.
API Reference Highlights
POST /api/v1/addresses/verify — Single or Batch
The verify endpoint accepts a structured address payload: { street1, street2, city, state, zip, country }. Country defaults to US if omitted. The response includes the normalized address (correct casing, expanded suffixes like "Street" instead of "St"), a deliverable boolean, a confidence score (0-100), and a list of any corrections applied. For batch verification, wrap addresses in an array: { addresses: [...] }, up to 100 per request. Each batch entry counts as one verification against your quota. Latency is typically 80-300ms for single lookups and 200-800ms for batches, depending on cache hit ratio. Failed lookups (invalid addresses) still count against quota — they consume API resources whether or not the address is real.
POST /api/v1/addresses/parse — Free-Text to Structured
The parse endpoint takes messy real-world address strings and returns clean structured fields. Input: { input: "123 main st apt 4b ny ny 10001" }. Output: { street1: "123 Main St", street2: "Apt 4B", city: "New York", state: "NY", zip: "10001", country: "US", confidence: 92 }. Parsing is cheaper than verification (0.5¢ vs 1¢) because it does not hit the underlying postal authority — it is pure NLP on the input string. Great for ingesting CSV uploads where users typed addresses into a single field, scraped data, or chat-based address collection. Pair it with verify for full validation: parse the string into components, then verify the components against USPS.
The 24-Hour Cache — Why Cached Hits Are Free
Every successful verification is cached for 24 hours under a normalized key (case-insensitive, suffix-collapsed, whitespace-stripped). If your application verifies the same address twice within the cache window, the second call returns the cached response instantly and does not increment your usage counter or your bill. This matters more than it sounds. Form retry logic, duplicate-detection workflows, and bulk re-imports often hit the same addresses repeatedly. Competitor APIs charge for every call regardless. ShipWave gives you the cache hit for free because it costs us nothing to serve a cached response — you should not pay for that. Cache hit ratios on typical workloads run 30-60%, which effectively cuts your bill by a third or more without any code changes on your end.
Pricing Math vs. Competitors
ShipWave: 1¢ per verification, 0.5¢ per parse, 100/month free, 24h cache (free hits). Shippo Addresses API: 6-9¢ per international lookup, US-only included in shipping subscription. Lob: 2-5¢ per US lookup, more for international. Smarty (formerly SmartyStreets): contract-based, typically $99/mo minimum for production use. For a developer or SaaS application doing 5,000-50,000 verifications per month, ShipWave pricing is typically 60-80% cheaper than Lob and Smarty and dramatically simpler than Shippo. The 100-free-per-month tier means small projects and side projects pay nothing until they scale. No annual contracts, no usage forecasts, no sales call. Generate an API key, start hitting the endpoint.
Authentication, Errors, and Status Codes
Authentication uses a Bearer token: Authorization: Bearer sk_live_xxxxxxxxxxxx (or sk_test_xxxxxxxxxxxx for testing). Successful verifications return 200 OK. Invalid addresses return 200 with deliverable: false (not an error — the API worked, the address just was not deliverable). Errors that prevent the lookup from happening return 4xx codes: 401 (invalid API key), 403 (key revoked or quota exhausted), 429 (rate limit exceeded — default 60 requests per minute per key, configurable), 422 (malformed request body), and 500 for our problems. Every response includes a request ID in the X-Request-Id header for debugging — include it in support tickets. Webhooks notify you at 80% and 95% of your monthly quota so you can scale your plan before getting cut off.
ShipWave Address API vs. Shippo, Lob, Smarty
| Feature | ShipWave | Shippo / Lob / Smarty |
|---|---|---|
| Price per US verify | 1¢ | Lob 2-5¢, Smarty contract-based |
| Price per international verify | 1¢ flat | Shippo 6-9¢, Lob 4-10¢ |
| Free tier per month | 100 free, no card | Smarty 250 lifetime trial only |
| Cached hits free | Yes — 24h cache | No — every call billed |
| Batch size | 100 per request | Varies, often single-only |
| Free-text address parsing | Yes — 0.5¢ | Limited or paid add-on |
Who Uses the Address API
SaaS Apps Collecting Customer Data
Onboarding flows, shipping address fields, billing forms. Drop the API into your form validator and reject bad addresses at the source instead of failing at fulfillment.
Marketplaces & Multi-Tenant Platforms
If your platform handles fulfillment for thousands of sellers, batch verification keeps shipping costs predictable. The 24h cache absorbs duplicate addresses across tenants.
CSV Import & Data Cleanup
Inheriting a messy customer list? Parse the free-text strings, verify the structured components, and dump the cleaned data into your CRM. 100-per-batch makes this fast.
Frequently Asked Questions
Which countries are supported?
US, Canada, UK, Australia, New Zealand, and most of Western Europe with high accuracy (powered by national postal authorities via EasyPost). Lower-accuracy coverage for ~200 additional countries. The "country" field on the request determines which provider routes the lookup.
What accuracy guarantees do you offer?
For US addresses (USPS-powered), we guarantee deliverability matches USPS Address Information Services. For international, accuracy depends on national postal authority data quality — we surface a confidence score on every response so you can decide how strict to be.
What is the max batch size?
100 addresses per request. For larger imports, paginate client-side. Each address in a batch counts as one verification against your quota (cached hits within a batch are still free).
How does the cache hit ratio work?
Identical addresses (after normalization — case, suffixes, whitespace stripped) hit the cache for 24 hours. Typical workloads see 30-60% cache hits. The X-Cache header on every response tells you HIT or MISS so you can monitor your effective cost per lookup.
Can I use test keys for development?
Yes. Generate sk_test_* keys in the dashboard. Test calls do not count against your billing quota and return mocked-but-realistic responses. Production keys (sk_live_*) hit the real verification providers.
What happens if I exceed my quota?
You get webhook + email warnings at 80% and 95% of your monthly quota. At 100%, additional verifications return 403 with a clear error message — they do not silently succeed and bill you overage. Upgrade your plan or wait for the monthly reset.
Is there an SDK?
Not required — the API is standard JSON over HTTPS, works with curl, fetch, axios, requests, or any HTTP client. We publish reference snippets in JavaScript, Python, Ruby, PHP, and Go in the developer docs. Community SDKs are welcome.
Explore More
Related Features
API Overview
The broader ShipWave API — labels, tracking, orders, and shipments in one platform.
Learn more →
Shipping Labels
Address verification is built into every label purchase, but the standalone API works for any use case.
Learn more →
Store Integrations
When you connect a store, addresses are auto-verified on import — no API calls needed.
Learn more →
Validate Addresses for 1¢
Free tier gives you 100 verifications per month. No credit card to start. Generate an API key in 60 seconds.