Códigos postales de España
Dataset abierto y API JSON estática, sin servidor ni claves. Generado a partir del Callejero del Censo Electoral del INE, actualizado a 2026-06-30.
10.791códigos postales
8.132municipios
52provincias
Escribe un código postal de 5 dígitos.
API
Todas las rutas son ficheros JSON estáticos servidos por GitHub Pages, con CORS abierto. Un código o municipio inexistente devuelve 404.
| Ruta | Contenido |
|---|---|
v1/cp/{cod_postal}.json | Municipios que sirve un código postal |
v1/municipios/{id}.json | Un municipio (código INE) y sus códigos postales |
v1/municipios.json | Todos los municipios, útil para autocompletar |
v1/provincias.json | Las 52 provincias con sus totales |
v1/provincias/{id}.json | Una provincia con sus municipios y códigos |
v1/meta.json | Periodo de los datos, licencia y totales |
const res = await fetch("https://codecruz.github.io/spain-postal-codes/v1/cp/41700.json");
const { municipios } = await res.json();
// [{ id: "41038", nombre: "Dos Hermanas", provincia_id: "41", provincia: "Sevilla" }]
Paquete npm
Los mismos datos, empaquetados para usarlos sin red, en Node o en el navegador:
npm install spain-postal-codes
import { lookup, searchMunicipios } from "spain-postal-codes";
lookup("28001"); // [{ id: "28079", nombre: "Madrid", ... }]
searchMunicipios("alcala"); // sin distinguir acentos ni mayúsculas
Librería PHP
La misma API para PHP 8.1+, sin dependencias (código fuente):
composer require codecruz/spain-postal-codes
use Codecruz\SpainPostalCodes\PostalCodes;
PostalCodes::lookup('28001')[0]->nombre; // "Madrid"
Descargas
- codigos_postales.csv:
cod_postal, municipio_id, municipio, provincia_id, provincia(13.979 filas) - provincias.csv
- metadata.json