Dataset de Códigos Postales de España en JSON

Descarga el archivo estructurado en formato JSON nativo (UTF-8) con los 14.662 códigos postales de España, nombres de municipios, provincias, códigos INE y coordenadas GPS WGS84. Diseñado para desarrollo en JavaScript, Node.js, Python o consumo offline en aplicaciones móviles.

✓ JSON Estándar UTF-8 ✓ 14.662 Objetos Indexables ✓ ~3.0 MB (Solo ~450 KB comprimido GZIP) ✓ Sin Dependencia de Servidor ni SQL ✓ Libre Atribución Abierta

Estructura del Array de Objetos JSON

El archivo consta de una matriz de objetos con claves descriptivas y normalizadas en minúsculas. Los códigos postales y de provincia se almacenan como cadenas de texto para evitar la pérdida de los ceros iniciales:

codigos-postales-espana.json (Ejemplo de objeto)
[
  {
    "codigo_postal": "28850",
    "municipio": "Torrejón de Ardoz",
    "provincia": "Madrid",
    "codigo_provincia": "28",
    "codigo_ine": "28148000000",
    "latitud": "40.4591561",
    "longitud": "-3.4789902"
  },
  {
    "codigo_postal": "08001",
    "municipio": "Barcelona",
    "provincia": "Barcelona",
    "codigo_provincia": "08",
    "codigo_ine": "08019000000",
    "latitud": "41.3800000",
    "longitud": "2.1700000"
  }
]
Clave Tipo Ejemplo Descripción
codigo_postal String "28850" Código postal asignado por Correos (formato string de 5 caracteres).
municipio String "Torrejón de Ardoz" Nombre oficial del municipio o población.
provincia String "Madrid" Provincia a la que pertenece.
codigo_provincia String "28" Prefijo numérico provincial (01 a 52).
codigo_ine String "28148000000" Código oficial del Instituto Nacional de Estadística.
latitud / longitud String / Float "40.4591561", "-3.4789902" Coordenadas geográficas WGS84.

Cómo Cargar y Filtrar el Archivo JSON Offline

Al ser un archivo estático, puedes incluirlo directamente en tu proyecto para realizar búsquedas ultrarrápidas en memoria sin latencia de red:

const fs = require('fs');

// Cargar el archivo JSON en memoria
const rawData = fs.readFileSync('codigos-postales-espana.json', 'utf8');
const codigosPostales = JSON.parse(rawData);

// 1. Crear un índice Map por código postal para búsquedas O(1) instantáneas
const cpMap = new Map(codigosPostales.map(item => [item.codigo_postal, item]));

const torrejon = cpMap.get('28850');
console.log('Municipio:', torrejon.municipio); // "Torrejón de Ardoz"

// 2. Filtrar todos los códigos de una provincia
const madridCPs = codigosPostales.filter(item => item.codigo_provincia === '28');
console.log(`Madrid tiene ${madridCPs.length} códigos postales registrados.`);
import json

# Cargar dataset JSON
with open('codigos-postales-espana.json', 'r', encoding='utf-8') as f:
    datos_cp = json.load(f)

# 1. Búsqueda por código postal mediante diccionario
indice_cp = {item['codigo_postal']: item for item in datos_cp}
registro = indice_cp.get('28850')
print(f"Municipio: {registro['municipio']} - GPS: {registro['latitud']}, {registro['longitud']}")

# 2. Filtrar por provincia (ej. Barcelona - 08)
bcn_list = [item for item in datos_cp if item['codigo_provincia'] == '08']
print(f"Total en Barcelona: {len(bcn_list)}")
// En proyectos con Vite, Webpack o Next.js puedes importarlo directamente:
import codigosPostales from './codigos-postales-espana.json';

export function buscarLocalidad(query) {
  const q = query.toLowerCase().trim();
  return codigosPostales.filter(item => 
    item.codigo_postal.includes(q) || 
    item.municipio.toLowerCase().includes(q)
  ).slice(0, 10); // Primeras 10 sugerencias para un autocompletado
}