spanish-cities-info

8132 municipios
de España

Paquete npm con el listado completo de municipios españoles, verificado contra el INE a fecha 01 de enero de 2026. ~337.1 KB minificado, ~126.5 KB con gzip en el import principal.

npm install spanish-cities-info
Cargando mapa…

getCityByName() × 12 · VISTA PREVIA

Resumen

spanish-cities-info es un paquete npm en TypeScript con los 8132 municipios de España, verificados contra el Instituto Nacional de Estadística (INE) a fecha 01-01-2026. El import principal pesa ~337.1 KB minificado (~126.5 KB con gzip), medido con un bundle real. Frente a alternativas como all-spanish-cities (~800 KB, sin imports modulares), este paquete permite importar solo una provincia o comunidad autónoma sin cargar el dataset completo. Entre sus funciones: getCitiesInRange (búsqueda por radio en km), getCityByCityCode, getCityByName, getCitiesByProvince, getCitiesByCommunity y getCitiesByIsland. Los códigos postales están disponibles como import opcional separado (spanish-cities-info/postal-codes), sin peso añadido para quien no los usa.

8132
municipios
01-01-2026
verificado INE
~126.5 KB
import gzip
52 / 19
provincias / CCAA

Comparativa de peso completa en la sección 6. Fuentes: Bundlephobia y medición propia con esbuild. Alternativas citadas: all-spanish-cities, country-state-city, spanish-cities-info/postal-codes.

Búsqueda por radio

6 municipios en 15 km alrededor de Ferrol

Cargando mapa…
API

Municipios dentro de un radio en km de una ciudad de referencia. No incluye la propia ciudad de referencia.

import { getCitiesInRange } from 'spanish-cities-info';

getCitiesInRange('Ferrol', 10).map((c) => c.name);
// ['Ares', 'Mugardos', 'Narón']

Mostrando ejemplo de getCitiesInRange

Imports modulares

Si solo necesitas los municipios de una provincia o comunidad autónoma, puedes importar directamente esa zona sin cargar el dataset completo. Cada import modular es autocontenido: un bundler que resuelva spanish-cities-info/provincias/lugo solo incluye los municipios de Lugo, no el resto de España.

import { cities } from 'spanish-cities-info/provincias/lugo';
// 67 municipios de Lugo

import { cities } from 'spanish-cities-info/comunidades/galicia';
// 313 municipios: A Coruña + Lugo + Ourense + Pontevedra

El slug es el nombre de la provincia/comunidad en minúsculas, sin tildes ni ñ, con espacios sustituidos por guiones — por ejemplo getProvinces() devuelve 'A Coruña' y el import correspondiente es spanish-cities-info/provincias/a-coruna.

Peso real (gzip), medido con esbuild

import completo126.5 KB
comunidades/galicia6.1 KB

Importar solo Galicia pesa un 4.8% del import completo.

Import opcional · no forma parte de City

Los códigos postales no viven en el dataset principal ni en el tipo City — viven en su propio subpath, spanish-cities-info/postal-codes, igual que los imports por provincia/comunidad. Quien no los pide no paga su peso. Si quieres un municipio con sus códigos postales incluidos, combínalos tú mismo:

import { getCityByCityCode } from 'spanish-cities-info';
import { getPostalCodes } from 'spanish-cities-info/postal-codes';

const city = {
  ...getCityByCityCode(ineCode),
  postalCodes: getPostalCodes(ineCode),
};

Este subpath pesa 52.0 KB gzip por sí solo — un coste que solo entra en tu bundle si importas spanish-cities-info/postal-codes. Importando solo spanish-cities-info ese peso no existe. La cobertura puede tener huecos en zonas rurales: la fuente es el callejero censal del INE, que a veces no tiene ningún tramo censado bajo el código INE de una parroquia o núcleo disperso.

Comparativa de peso
PaquetePesoNota
spanish-cities-info337.1 KB / 126.5 KB gzipimport principal, medido con bundle real
all-spanish-cities~800 KBsin imports modulares por provincia/comunidad
country-state-cityvarios MBdataset mundial, no específico de España
spanish-cities-info/postal-codes~52 KB gzipsolo si lo importas — opcional, no forma parte del import principal

Datos verificados con Bundlephobia y con un bundle real (esbuild, minificado + gzip) para el import principal de spanish-cities-info.

Preguntas frecuentes
¿Es gratis?

Sí. spanish-cities-info se publica bajo licencia ISC, que permite uso comercial y no comercial sin coste ni atribución obligatoria.

¿Cuánto pesa el paquete en mi bundle?

El import principal (spanish-cities-info) pesa ~337.1 KB minificado y ~126.5 KB con gzip, medido con un bundle real (esbuild), no solo con la calculadora de Bundlephobia. Si solo necesitas una provincia o comunidad, los imports modulares pesan una fracción de eso: por ejemplo, la comunidad de Galicia entera son ~16.5 KB minificados (~6.1 KB gzip).

¿Tiene códigos postales?

Sí, como import opcional separado: spanish-cities-info/postal-codes, con getPostalCodes(ineCode). No forma parte de City ni del import principal — así quien no los necesita no paga su peso (~52 KB gzip adicional si lo importas). La cobertura puede tener huecos en zonas rurales: la fuente es el callejero censal del INE, que a veces no tiene ningún tramo censado bajo el código INE de una parroquia o núcleo disperso.

¿Los datos están verificados contra alguna fuente oficial?

Sí. Los municipios y códigos INE proceden del Instituto Nacional de Estadística, a fecha 01-01-2026. Las comunidades autónomas están verificadas contra el mismo lookup provincia → comunidad del INE.

¿Con qué frecuencia se actualiza el dataset?

El INE publica actualizaciones del callejero de municipios periódicamente, normalmente cada enero y a veces también en julio. Cuando hay una versión nueva, se descarga el fichero oficial y se compara contra el dataset actual con un script de reconciliación para detectar altas, bajas y cambios de nombre antes de publicar la actualización del paquete.

¿Funciona con TypeScript?

Sí, el paquete está escrito en TypeScript y publica sus propios tipos (.d.ts), incluyendo el tipo City para cada municipio.

¿Qué diferencia hay con otros paquetes similares de ciudades de España?

Dos cosas principalmente: los datos están verificados y reconciliados contra el INE de forma explícita y repetible, y el paquete ofrece imports modulares por provincia y comunidad autónoma además del import completo — algo que paquetes como all-spanish-cities o country-state-city no ofrecen para España específicamente.

¿Cómo busco ciudades cerca de una ubicación?

Con getCitiesInRange(ciudadDeReferencia, radioEnKm). Devuelve todos los municipios dentro de ese radio, sin incluir la ciudad de referencia. Puedes probarlo en vivo en la demo interactiva de esta página.

¿Puedo importar solo una provincia o comunidad sin cargar el dataset completo?

Sí. spanish-cities-info/provincias/<slug> y spanish-cities-info/comunidades/<slug> son imports autocontenidos: un bundler que resuelva spanish-cities-info/provincias/lugo solo incluye los municipios de Lugo, no el resto de España.