Every ZIP code in the United States, with weather, radar, trivia and the numbers behind it. Five digits since 1963!

ZIP stands for Zone Improvement Plan. The codes went live on July 1, 1963.The lowest ZIP code is 00501 — the IRS in Holtsville, New York.The highest ZIP code is 99950, in Ketchikan, Alaska.Type 07734 into a calculator and turn it upside down: hELLO. It is Keansburg, New Jersey.12345 belongs to one company: General Electric in Schenectady, New York.The first digit is a region: 0 is New England and New Jersey, 9 is the West Coast, Alaska and Hawaii.Mr. ZIP, the cartoon mailman, was the mascot that sold the idea to America.ZIP+4 arrived in 1983 and can narrow a ZIP down to one side of one block.A ZIP code is a mail route, not a place: plenty of them cross county and even state lines.Play ZIP Hunt: guess the secret ZIP code of the day in six tries.
zipcodes.pro — API

ZIP code API

Early access. API keys are issued by hand for now. Email [email protected] and say what you are building; early users get the Starter plan free for a year.

Same data as this site, same release id in every response. JSON, stable field names, no surprise bills: exceeding your plan returns 429 with an upgrade link rather than an invoice.

Want every ZIP code at once rather than one per request? The free ZIP code database has all of them as CSV, JSON and SQLite, under CC BY 4.0, built from the same data release the API serves.

Endpoints

MethodPathWhat it returns
GET /v1/zip/{zip} Everything about one ZIP code.
GET /v1/zips?city=&state= Every ZIP code for a city.
GET /v1/radius?zip=&miles= ZIP codes within a radius, sorted by distance. Also accepts lat/lng.
GET /v1/distance?from=&to= Great-circle distance between two ZIP codes.
POST /v1/bulk Up to 1,000 ZIP codes in one request.
GET /v1/county/{fips}/zips Every ZIP code in a county.
GET /v1/meta Current data release, sources and their vintages.

An OpenAPI 3.1 spec comes with every early-access key.

Try it without a key

Every ZIP page on this site already has a JSON twin, free and unauthenticated, with the same field names the API uses:

curl https://zipcodes.pro/zip/95014.json

Authentication

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://api.zipcodes.pro/v1/radius?zip=95014&miles=25"

Plans

PlanRequests / monthMonthlyYearlyFor
Free 3,000 Free — Trying it out, side projects, a form that validates a ZIP.
Starter 100,000 $19 $182 A production app with modest lookup volume.
Pro 500,000 $49 $470 Address validation or territory logic on every signup.
Business 3,000,000 $149 $1430 High-volume enrichment, or several products sharing one key.

Yearly is 20% off. If your volume is steady and large, the dataset download is usually cheaper than any API plan — we would rather say so than sell you the wrong thing.

Limits and behaviour

  • Per-minute rate limits apply on every plan to keep one client from starving another. A 429 includes Retry-After.
  • Reaching your monthly quota returns 429 with an upgrade link. Nothing is billed automatically beyond your plan.
  • Every response carries the data release, so you can pin your own cache to it.
  • CORS is open for browser use on Free and Starter, with an optional domain allowlist per key.
  • A field the source never published is null. It is never 0.