Find an API

Search public APIs with auth details & Postman guides

← All APIs

Zippopotam.us (ZIP Code API)

api.zippopotam.us · Location

Location No Auth Free & Open Geocoding ZIP Codes Location

ZIP code lookup for 60+ countries — get city, state, latitude, and longitude from a postal code. Free, no API key required.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Look up US ZIP code

Get city and state for Beverly Hills ZIP code 90210.

https://api.zippopotam.us/us/90210

Hover any highlighted part to learn what it does

curl -X GET "https://api.zippopotam.us/us/90210"
import requests
response = requests.get(
    "https://api.zippopotam.us/us/90210",
)
print(response.json())
const url = 'https://api.zippopotam.us/us/90210';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.zippopotam.us/us/90210"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.zippopotam.us/us/90210")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.zippopotam.us/us/90210";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET UK postcode

Get location data for UK postcode SW1A (Westminster).

https://api.zippopotam.us/gb/sw1a

Hover any highlighted part to learn what it does

curl -X GET "https://api.zippopotam.us/gb/sw1a"
import requests
response = requests.get(
    "https://api.zippopotam.us/gb/sw1a",
)
print(response.json())
const url = 'https://api.zippopotam.us/gb/sw1a';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.zippopotam.us/gb/sw1a"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.zippopotam.us/gb/sw1a")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.zippopotam.us/gb/sw1a";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. No API key needed
  2. US: GET https://api.zippopotam.us/us/10001 (New York)
  3. UK: GET https://api.zippopotam.us/gb/ec1a
  4. Canada: GET https://api.zippopotam.us/ca/m5v
  5. Format: /{country_code}/{postal_code}

Open documentation ↗