ZIP-Codes.com

USPS Web Tools shut down January 25, 2026.

Zip-Codes.com is a drop-in JSON replacement for the address and ZIP operations (Verify, ZipCodeLookup, CityStateLookup). XML POST becomes a JSON GET. USERID becomes a single API key. Free tier: 2,500 credits per day, no expiration.

2,500 credits/day · No credit card · No expiration

Jan 25, 2026 Web Tools retired
XML→JSON format migration
USERID becomes single API key
2,500 free credits / day

Trusted by teams at

Microsoft
Wells Fargo
Walmart
USPS
IBM
Home Depot
Harvard
UPS

USPS Web Tools ran for roughly 22 years as the de facto free address-and-shipping API for US developers. It covered three families: address operations (Verify, ZipCodeLookup, CityStateLookup), rate calculation (RateV4, IntlRateV2), and tracking / labels (TrackV2, eVS, Service Standards). When USPS retired the platform on January 25, 2026, integrations across WooCommerce, Magento, Drupal Commerce, nopCommerce, osCommerce, custom ERPs, and one-off scripts went dark. This page is about replacing the address-and-ZIP family. For tracking and shipping, you’ll need a separate path.

The migration concentrates in three places. Format: Web Tools accepted XML POST with an XML= query parameter and returned text/xml. Our endpoints accept ordinary REST — GET with query parameters, application/json response, real HTTP status codes. Every mainstream language has JSON parsing in its stdlib. Auth: Web Tools used a plaintext USERID attribute on the outermost XML element — no secret, no rotation. We use a single API key (header or query parameter), generated and rotatable in your dashboard, with no key-pair handshake or OAuth dance. Routing: Web Tools routed every operation through one dispatcher (secure.shippingapis.com/ShippingAPI.dll) with operation selected by an API= query parameter. Our endpoints have their own URLs — /v2/address, /v2/zip, /v2/quick-zip — with standard REST semantics that your routing layer, retries, and circuit breakers expect.

The operation mapping for the address-and-ZIP family is direct. The Verify operation (address standardization with USPS-style delivery metadata) maps to /v2/address: pass a free-form address, get back the standardized form, ZIP+4, parsed components (number, directional, street, suffix, secondary), and delivery metadata (carrier route, county FIPS, congressional district, building name, record type). ZipCodeLookup (address → ZIP) is also covered by /v2/address — ZIP+4 is part of the standardized output. CityStateLookup (ZIP → city/state) maps to /v2/quick-zip for the lightweight version, or /v2/zip if you want the 50+ optional enrichment fields that Web Tools never offered.

A few capabilities we add that Web Tools never had: radius search (find every postal code within N miles of a center point, centroid or true spatial polygon-intersection), geographic typeahead (cities, counties, CBSAs, FSAs, ZIPs), point-to-point distance with bearing, Census ACS demographic enrichment across 14 years and 542 fields per ZIP, and full Canadian FSA + 6-character postal coverage on the same API key. Same credit pool, same monthly plan.

Operation Mapping

Web Tools operation → Zip-Codes.com equivalent. Tracking and shipping operations not covered — see honest concession below.

USPS Web Tools operation Zip-Codes.com equivalent Notes
Verify (address standardization) GET /v2/address Standardized address, ZIP+4, parsed components, USPS metadata
ZipCodeLookup (address → ZIP) GET /v2/address ZIP+4 is part of the standardized output — same endpoint
CityStateLookup (ZIP → city/state) GET /v2/quick-zip Or upgrade to /v2/zip for 50+ enrichment fields
Not covered — use a separate shipping/tracking API
RateV4, IntlRateV2 Not offered Rate calculation — EasyPost, Shippo
TrackV2 Not offered Package tracking — AfterShip, EasyPost
eVS, ExpressMailCommitment Not offered Label printing, service standards — shipping API or USPS direct

Code: Web Tools ↔ Zip-Codes.com

Same address, same workflow. XML POST becomes a JSON GET.

USPS Web Tools (retired Jan 25, 2026)
POST https://secure.shippingapis.com/ShippingAPI.dll
Content-Type: application/x-www-form-urlencoded

API=Verify&XML=
<AddressValidateRequest USERID="YOUR_USERID">
  <Revision>1</Revision>
  <Address ID="0">
    <Address2>1600 Pennsylvania Ave NW</Address2>
    <City>Washington</City>
    <State>DC</State>
    <Zip5></Zip5>
    <Zip4></Zip4>
  </Address>
</AddressValidateRequest>

# Response: text/xml
<AddressValidateResponse>
  <Address ID="0">
    <Address2>1600 PENNSYLVANIA AVE NW</Address2>
    <City>WASHINGTON</City>
    <State>DC</State>
    <Zip5>20500</Zip5>
    <Zip4>0003</Zip4>
  </Address>
</AddressValidateResponse>
Zip-Codes.com (replacement)
GET https://api.zip-codes.com/v2/address
    ?address=1600 Pennsylvania Ave NW, Washington DC
    &key=YOUR_API_KEY

# Response: application/json
{
  "success": true,
  "results": [{
    "success": true,
    "matches": [{
      "formatted_address": "1600 PENNSYLVANIA AVE NW, WASHINGTON, DC 20500-0003",
      "address_line1": "1600 PENNSYLVANIA AVE NW",
      "address_line2": "WASHINGTON, DC 20500-0003",
      "address_components": {
        "number": "1600", "street": "PENNSYLVANIA", "suffix": "AVE",
        "post_directional": "NW", "city": "WASHINGTON", "state": "DC",
        "zip": "20500", "plus4": "0003", "country": "US"
      },
      "match_info": { "confidence": "high" },
      "details": {
        "record_type": "H", "record_type_description": "Highrise",
        "carrier_route": "C049", "county_fips": "11001",
        "congressional_district": "98", "building_name": "WHITE HOUSE"
      }
    }]
  }],
  "meta": { "credits": { "used": 1, "remaining": 2499 } }
}

Notice the response carries more structured data than Web Tools’ address envelope — parsed components broken out, confidence flag, carrier route, county FIPS, congressional district, building name, record type. All from the same 1-credit call.

Pricing

Web Tools was free with unspecified rate limits and ToS restrictions on list/batch use. Most production Web Tools workloads fit on our free or Developer tiers.

Monthly volume USPS Web Tools (former) Zip-Codes.com
Up to ~75,000 calls Free (with ToS restrictions)
100,000 calls Free
1,000,000 calls Free (gray-area at this scale on Web Tools ToS)

For most Web Tools migrations: the free tier covers evaluation and small production workloads at no cost. Paid tiers buy higher per-minute rates, batch endpoints, and full enrichment depth on /v2/zip.

What this page doesn’t replace from Web Tools

Web Tools covered more than addresses. If your integration depended on these, you need another path:

  • RateV4 / IntlRateV2 — postage rate calculation.
  • TrackV2 — package tracking.
  • ExpressMailCommitment, StandardB, SDCGetLocations — service standards and delivery commitments.
  • eVS, eVSCancel — label printing and eVS workflows.
  • CASS-certified validation — Web Tools’ Verify was DPV-certified output. We standardize against authoritative ZIP+4 ranges but don’t hold CASS or DPV certification. For workflows requiring certified mailing-deliverable output, evaluate Smarty or another CASS-licensed vendor.

For shipping/tracking/labels in 2026, EasyPost, Shippo, and AfterShip are common paths.

Enterprise Reference Data
★★★★★
“Nearly my entire professional life, I've had ONE source for the best zip data — zip-codes.com from Datasheer. CTO at BankMobile, ScheduleEngine, RevDial — we trusted Zip-Codes.com everywhere.”
Kirk Barrett
Former CTO · BankMobile, ScheduleEngine, RevDial
Verified Google Review · Long-Term Customer

Need migration help?

Sign up, get an API key in under 60 seconds, and try /v2/address in the demo before you touch your code path. If you’re migrating a WooCommerce / Magento / Drupal Commerce / nopCommerce store and want a hand mapping the integration, email info@zip-codes.com with your platform.

Get an API key Try the demo

2,500 credits/day · No credit card · Documentation

Frequently Asked Questions

USPS Web Tools was retired on January 25, 2026. USPS announced the sunset in a February 6, 2025 Industry Alert, giving roughly 11 months of notice. As of the shutdown date, secure.shippingapis.com no longer responds to requests, breaking every integration that hadn’t migrated.

For the standardization-and-ZIP+4-append use case, yes. Pass a free-form address, get back the standardized address, ZIP+4, parsed components, confidence flags, and USPS-style delivery metadata (carrier route, county FIPS, congressional district, building name, record type). What /v2/address does NOT include: DPV certification. For workflows that strictly require certified delivery-point validation, a CASS-licensed vendor like Smarty is the right fit.

No. We replace the address-and-ZIP family of Web Tools operations (Verify, ZipCodeLookup, CityStateLookup). Web Tools also offered RateV4 / IntlRateV2 (rate calculation), TrackV2 (tracking), ExpressMailCommitment, eVS (label printing), and Service Delivery Calculator operations — we don’t replace those. If your integration depended on shipping/tracking/labeling workflows, you’ll need a separate vendor (EasyPost, Shippo, AfterShip are common 2026 paths).

The address-validation step is straightforward — replace the XML POST to secure.shippingapis.com with a JSON GET to api.zip-codes.com/v2/address, swap your USERID for an API key, and update your parser from XML to JSON. Plugin updates from those platforms’ communities are landing as of early 2026; you may want to wait for an official update or fork the legacy module. For shipping-rate and tracking integrations, you’ll need a separate shipping API. Email info@zip-codes.com with your platform if you want help mapping the address path.

Free tier: 60 requests per minute. Paid tiers: 300 req/min on Developer ($49/mo) and Professional ($149/mo); 600 req/min on Business ($499/mo). Daily credit ceilings: 2,500 credits/day free tier, 100K/350K/1.5M monthly on paid tiers. One credit per /v2/address call regardless of match outcome.

Single API key, passed either as an X-Api-Key header or a key= query parameter. No USERID. No password. No OAuth handshake or token refresh. The key is generated in your dashboard at zip-codes.com/api and can be rotated, scoped to specific IPs or domains, or split into multiple keys (up to 25 on the Business tier).

Web Tools was US-only. We cover Canadian addresses too — full 1,600+ FSAs and 876,000+ 6-character postal codes, native on every relevant endpoint, no separate subscription. /v2/quick-zip and /v2/zip accept Canadian FSA / postal codes directly; /v2/distance handles cross-border pairs in one call.

For most teams: minutes to days, not weeks. The integration shape is the same — outbound HTTP, address in, structured response out. Concrete steps: (1) sign up, get an API key, try /v2/address against a known address in the demo; (2) swap the URL and auth in your existing code path; (3) update the XML parser to a JSON parser (most languages have native JSON in stdlib); (4) update field-name mappings since JSON field names differ from XML element names. The bulk of effort is the XML-to-JSON parsing change.

Ready to migrate?

Free tier covers most evaluation and small production. Paid plans handle production scale with no XML, no key pairs, no OAuth.

Also compared