uspscomparison

Address Verification APIs: USPS, Google, and SmartyStreets Compared

Bad addresses cause failed deliveries and wasted money. I tested three address verification APIs with 500 real addresses to see which one actually catches errors.

September 5, 202510 min read
Address Verification APIs: USPS, Google, and SmartyStreets Compared

Address Verification APIs: USPS, Google, and SmartyStreets Compared

I pulled 500 shipping addresses from a real ecommerce store's order history. 500 addresses that real customers typed into a checkout form. Then I ran every single one through three address verification APIs: USPS Address API, Google Address Validation, and SmartyStreets (now Smarty).

47 of those 500 addresses had problems. Wrong ZIP codes, misspelled street names, missing apartment numbers, non-existent addresses. That's 9.4% — roughly one in every ten orders.

What happens when you ship to a bad address? The carrier returns it. You pay for shipping both ways. The customer gets annoyed. Maybe they don't reorder. At an average return shipping cost of $8-12 per package, those 47 bad addresses from just 500 orders would cost $376-564 in wasted shipping alone.

Address verification catches these problems before you print the label.

What Address Verification Does

An address verification API takes a raw address (what the customer typed) and does three things:

  • Validates — is this a real, deliverable address?
  • Standardizes — corrects formatting, adds ZIP+4, fixes abbreviations
  • Enriches — adds metadata like residential/commercial, deliverability score, county, etc.
  • Example

    Input (what customer typed): > 123 Main St, Apt B, San Franciso, CA 94102

    Output (after verification): > 123 MAIN ST APT B, SAN FRANCISCO, CA 94102-3456

    The API caught the misspelling of "Francisco" and added the ZIP+4 extension. Minor fix, but it prevents a potential delivery delay.

    The Three APIs I Tested

    1. USPS Address Validation API

    USPS offers a free address validation API through their Web Tools suite. Since USPS maintains the official database of US delivery points, this is the authoritative source.

    FeatureDetails
    CostFree (registration required)
    CoverageUS addresses only
    Rate limitNo published limit (reasonable use)
    Response time100-300ms
    AuthenticationUsername/password (XML API)
    FormatXML (old school)
    Pros: Free, authoritative for US addresses, catches undeliverable addresses that other APIs miss.

    Cons: US-only, XML API feels ancient, no batch endpoint (one address per request), residential/commercial classification not included in free tier.

    2. Google Address Validation API

    Google launched their Address Validation API as part of Google Maps Platform. It uses Google's address data plus USPS data for US addresses.

    FeatureDetails
    Cost$0.005 per request (first $200/month free)
    CoverageGlobal (40+ countries)
    Rate limit6,000 requests/minute
    Response time50-200ms
    AuthenticationAPI key
    FormatJSON (REST)
    Pros: Global coverage, fast, modern REST API, includes geocoding, returns detailed component-level validation.

    Cons: Costs money after free tier, can be overly permissive (accepts addresses that aren't actually deliverable), requires Google Cloud account setup.

    3. SmartyStreets (Smarty) US Street API

    Smarty (formerly SmartyStreets) is the most popular commercial address verification service for US shipping. They license USPS data and add their own intelligence layer.

    FeatureDetails
    Cost$0.001-0.004 per lookup (volume pricing)
    CoverageUS + international
    Rate limitVaries by plan
    Response time30-100ms
    AuthenticationAuth ID + Auth Token
    FormatJSON (REST)
    Pros: Fastest response times, batch processing (up to 100 addresses per request), residential/commercial classification included, excellent documentation.

    Cons: Not free (though cheaper per lookup than Google), requires subscription.

    The 500-Address Test

    I categorized my 500 test addresses into groups and tracked how each API handled them.

    Test Results Summary

    CategoryCountUSPS CorrectGoogle CorrectSmarty Correct
    Valid, well-formatted362362 (100%)362 (100%)362 (100%)
    Valid, minor typos5856 (96.6%)57 (98.3%)58 (100%)
    Valid, wrong ZIP2424 (100%)24 (100%)24 (100%)
    Valid, missing unit/apt1514 (93.3%)11 (73.3%)15 (100%)
    Invalid/non-existent2220 (90.9%)16 (72.7%)21 (95.5%)
    PO Box addresses1212 (100%)10 (83.3%)12 (100%)
    Military (APO/FPO)77 (100%)5 (71.4%)7 (100%)
    Total accuracy500495 (99.0%)485 (97.0%)499 (99.8%)

    Key Findings

    Smarty was the most accurate overall at 99.8%. It caught virtually everything, including tricky cases like missing apartment numbers and non-existent street numbers.

    USPS was a close second at 99.0%. As the authoritative source for US addresses, it's extremely reliable for validation. Its main misses were on addresses with complex unit designations.

    Google was the weakest for shipping-specific validation at 97.0%. Google tends to accept addresses that are plausible but not necessarily deliverable. It's great for geocoding and mapping, but for shipping validation, it's too permissive. It accepted 6 addresses that USPS and Smarty both flagged as undeliverable.

    The Missing Apartment Problem

    This is the trickiest category. When a customer types "123 Main St" but the address is actually "123 Main St Apt 4B", some APIs catch it and some don't.

    ScenarioUSPSGoogleSmarty
    "123 Main" is a single-family homeAll three: valid
    "123 Main" is a multi-unit building, no unit givenWarns "unit missing"Accepts as validWarns "unit missing, possible units: 1A-4B"
    "123 Main Apt 5" but unit 5 doesn't existWarns "invalid unit"Accepts as validWarns "invalid unit, valid units: 1A-4B"
    Smarty gives you the actual list of valid units. That's incredibly useful for checkout forms — you can show a dropdown of valid apartment numbers.

    Cost Comparison

    Let's compare costs at different volume levels:

    Monthly LookupsUSPSGoogleSmarty
    1,000FreeFree (within $200 credit)$4
    5,000FreeFree (within $200 credit)$15
    10,000Free$25$25
    50,000Free$225$75
    100,000Free$475$125
    500,000Free$2,475$500
    USPS wins on price because it's free. But you get what you pay for in terms of API quality, speed, and features. The XML-only interface and lack of batch processing make USPS harder to integrate.

    At high volumes, Smarty is significantly cheaper than Google while being more accurate for shipping use cases.

    Integration Complexity

    FactorUSPSGoogleSmarty
    Account setupRegister at USPS Web ToolsCreate Google Cloud project, enable API, billingSign up, get API keys
    Setup time30-60 minutes45-90 minutes15-30 minutes
    API formatXML (SOAP-like)JSON RESTJSON REST
    SDK availabilityNone official, community libsOfficial SDKs for 10+ languagesOfficial SDKs for 8+ languages
    Documentation qualityAdequate but datedGoodExcellent
    Batch supportNoNoYes (100/request)
    Integration effort4-8 hours2-4 hours1-3 hours

    Code Comparison

    USPS (XML request):

    // Requires XML building and parsing
    // No official SDK
    // Request format is verbose XML
    

    Google (REST):

    // POST to addressvalidation.googleapis.com
    // Clean JSON request/response
    // Good but some shipping-specific fields buried in response
    

    Smarty (REST):

    // GET with query parameters
    // Simplest request format
    // Response includes shipping-specific fields at top level
    

    When to Use Each API

    Use USPS When:

    • Budget is zero and you can deal with XML
    • You only ship within the US
    • You need authoritative USPS validation for CASS compliance
    • Volume is low enough that one-at-a-time requests are fine

    Use Google When:

    • You ship internationally and need global coverage
    • You also need geocoding or place autocomplete
    • You're already in the Google Maps Platform ecosystem
    • Shipping address accuracy is secondary to general address quality

    Use Smarty When:

    • Shipping accuracy is your primary concern
    • You need batch processing for order imports
    • You want residential/commercial classification (affects shipping rates)
    • You need fast response times for real-time checkout validation
    • You want the best documentation and developer experience

    The Residential vs Commercial Distinction

    Here's a bonus that matters for shipping costs: residential deliveries cost more than commercial deliveries at UPS and FedEx.

    CarrierResidential Surcharge (2026)
    UPS Ground$4.25 per package
    FedEx Ground$4.15 per package
    USPSNo surcharge (same rate)
    If you're quoting shipping rates at checkout, knowing whether an address is residential or commercial helps you quote accurately. Under-quoting means you eat the surcharge. Over-quoting means you lose sales.

    APIResidential/Commercial Classification
    USPS (free)Not included
    USPS (CASS certified)Available through certified providers
    GoogleAvailable but sometimes inaccurate
    SmartyIncluded in standard response, highly accurate
    Smarty returns a dpv_footnotes field and rdi (Residential Delivery Indicator) with every lookup. This alone can justify the cost of the API if you ship via UPS or FedEx.

    Implementation Strategy

    Here's what I recommend for most ecommerce stores:

    For Checkout (Real-Time)

    Use Smarty or Google for real-time validation as the customer types. Show suggestions, catch typos, and warn about missing apartment numbers before the order is placed.

    For Order Import (Batch)

    Use Smarty's batch API to validate addresses when importing orders from marketplaces. Flag problematic addresses before printing labels.

    For Label Creation (Final Check)

    Use USPS validation as a final check before printing USPS labels. This ensures CASS compliance and catches any remaining issues.

    The Dual-API Approach

    Some high-volume shippers use two APIs: Smarty for the primary validation (fast, accurate, batch capable) and USPS as a secondary check for edge cases. The cost of running addresses through two APIs is minimal compared to the cost of returned packages.

    ROI Calculation

    Let's do the math on whether address verification pays for itself:

    MetricWithout VerificationWith Verification
    Orders per month5,0005,000
    Bad address rate9.4% (470 orders)1.5% (75 orders)*
    Return shipping cost$10 avg$10 avg
    Monthly return cost$4,700$750
    Verification API cost$0$15-25
    Net monthly savings$3,925-3,935
    *Address verification doesn't catch everything (customer gave wrong address intentionally, recently moved, etc.)

    You're spending $15-25/month to save nearly $4,000/month. The ROI is absurd. Even at the most generous estimates, address verification pays for itself within the first day of each month.

    One Last Thing

    Address verification isn't glamorous. Nobody tweets about their address validation pipeline. But it's one of the highest-ROI improvements you can make to your shipping operation. A 9.4% bad address rate dropping to 1.5% means fewer returns, fewer angry customers, fewer customer service tickets, and a lot less wasted money.

    Pick an API. Integrate it. Watch your return rate drop. It's that straightforward.

    Share this article:

    Ready to save on shipping?

    Get started with Atoship for free and access discounted USPS, UPS, and FedEx rates. No monthly fees, no contracts.

    Create Free Account