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-infogetCityByName() × 12 · VISTA PREVIA
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.
6 municipios en 15 km alrededor de Ferrol
- Ares
- Cabanas
- Fene
- Mugardos
- Narón
- Neda
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']Devuelve los 8.132 municipios, ordenados alfabéticamente por nombre.
import { getAllCities } from 'spanish-cities-info';
getAllCities();
// [{ name: 'A Baña', ineCode: '15007', province: 'A Coruña',
// community: 'Galicia', latitude: 42.9634, longitude: -8.7529 }, ...]Busca un municipio por su código INE de 5 dígitos. Devuelve undefined si no existe.
import { getCityByCityCode } from 'spanish-cities-info';
getCityByCityCode('15036');
// { name: 'Ferrol', ineCode: '15036', province: 'A Coruña',
// community: 'Galicia', latitude: 43.5098, longitude: -8.2704 }Busca municipios cuyo nombre contenga el texto indicado. No distingue mayúsculas/minúsculas.
import { getCityByName } from 'spanish-cities-info';
getCityByName('Ferrol');
// [{ name: 'Ferrol', ineCode: '15036', province: 'A Coruña', ... }]Todos los municipios de una provincia. Útil para un select en cascada en un formulario.
import { getCitiesByProvince } from 'spanish-cities-info';
getCitiesByProvince('Melilla');
// [{ name: 'Melilla', ineCode: '52001', province: 'Melilla',
// community: 'Melilla', latitude: 35.291, longitude: -2.9505 }]Todos los municipios de una comunidad autónoma.
import { getCitiesByCommunity } from 'spanish-cities-info';
getCitiesByCommunity('Melilla');
// [{ name: 'Melilla', ineCode: '52001', province: 'Melilla', ... }]Todos los municipios de una isla. Solo aplica a los 155 municipios de Illes Balears, Las Palmas y Santa Cruz de Tenerife: el resto de España no tiene este dato y su island es undefined.
import { getCitiesByIsland } from 'spanish-cities-info';
getCitiesByIsland('Menorca');
// [{ name: 'Alaior', ineCode: '07002', province: 'Illes Balears',
// community: 'Illes Balears', island: 'Menorca',
// latitude: 39.9339, longitude: 4.1403 }, ...]Listado de las 52 provincias, ordenado alfabéticamente.
import { getProvinces } from 'spanish-cities-info';
getProvinces();
// ['A Coruña', 'Alacant', 'Albacete', 'Almería', 'Araba', ...]Listado de las 19 comunidades y ciudades autónomas, sin duplicados.
import { getCommunities } from 'spanish-cities-info';
getCommunities();
// ['Andalucía', 'Aragón', 'Asturias', 'Canarias', 'Cantabria', ...]Mostrando ejemplo de getCitiesInRange
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 + PontevedraEl 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
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.
| Paquete | Peso | Nota |
|---|---|---|
| spanish-cities-info | 337.1 KB / 126.5 KB gzip | import principal, medido con bundle real |
| all-spanish-cities | ~800 KB | sin imports modulares por provincia/comunidad |
| country-state-city | varios MB | dataset mundial, no específico de España |
| spanish-cities-info/postal-codes | ~52 KB gzip | solo 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.
¿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.