Developer API

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.

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

1

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.

2

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.

3

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

FeatureShipWaveShippo / Lob / Smarty
Price per US verifyLob 2-5¢, Smarty contract-based
Price per international verify1¢ flatShippo 6-9¢, Lob 4-10¢
Free tier per month100 free, no cardSmarty 250 lifetime trial only
Cached hits freeYes — 24h cacheNo — every call billed
Batch size100 per requestVaries, often single-only
Free-text address parsingYes — 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.

Validate Addresses for 1¢

Free tier gives you 100 verifications per month. No credit card to start. Generate an API key in 60 seconds.