Full Database of city state country available in 11 formats: JSON, MYSQL, PSQL, SQLITE, SQLSERVER, XML, YAML, MONGODB, CSV, GEOJSON & TOON. All Countries, States & Cities are Covered & Populated with Different Combinations & Versions.
- β Most Comprehensive - 153K+ cities from 250 countries with 100% timezone coverage & multilingual support (19 languages)
- β Multiple Integration Options - NPM/PyPI packages, REST API, Export Tool, or direct downloads
- β Production Ready - Trusted by thousands of developers, monthly updates
- β Every Format You Need - JSON, SQL, MongoDB, CSV, XML, YAML, GeoJSON, Toon - use what fits your stack
- β 100% Free & Open Source - ODbL licensed, no usage restrictions, developer-friendly
Save hundreds of hours collecting and maintaining geographical data. Get accurate, structured, ready-to-use data right now.
π¦ Clone Tip: Use
git clone --depth 1for faster cloning (~1.2GB vs 5.4GB full history)
- CSC Platform Ecosystem β’ Integration Methods β’ Official Packages
- API β’ Export Tool β’ Available Formats
- Demo β’ Insights β’ Architecture
- Performance β’ License β’ Contributing
- Platforms β’ Support
Easily access all the tools and services in the Countries States Cities platform:
| Tool | Description | Link |
|---|---|---|
| NPM Package | Official JavaScript/TypeScript package | @countrystatecity/countries |
| Documentation | Complete API documentation and guides | docs.countrystatecity.in |
| Demo Database | Browse the full database online | demo.countrystatecity.in |
| API Service | Programmatic access to countries, states, cities | countrystatecity.in |
| Export Tool | Export data in multiple formats | export.countrystatecity.in |
| Update Tool | Submit and track data change requests | manager.countrystatecity.in |
| Status Page | Real-time service uptime and incidents | status.countrystatecity.in |
| Method | Setup | Best For | Offline | Cost |
|---|---|---|---|---|
| NPM/PyPI Package | < 1 min | JS/TS/Python apps, offline use | β | Free |
| REST API | < 5 min | Production apps, real-time data, any language | β | Free tier + paid |
| Export Tool | < 2 min | Custom datasets, specific regions | β | Free + credits |
| Direct Download | Immediate | SQL databases, one-time imports, legacy systems | β | Free |
npm install @countrystatecity/countriesFeatures: Zero dependencies, TypeScript support, offline-first, tree-shakeable
import { Country, State, City } from '@countrystatecity/countries';
const usStates = State.getStatesOfCountry('US');π NPM Documentation Β· π GitHub
pip install countrystatecityFeatures: Easy-to-use Python interface, works with Django/Flask, offline data access
from countrystatecity import Country, State, City
us_states = State.get_states_of_country('US')π PyPI Package Β· π GitHub
Dedicated timezone data package for JavaScript/TypeScript applications:
npm install @countrystatecity/timezonesπ GitHub Repository
π Introducing REST API for Countries States Cities Database.
Export Tool - Convert and download data in your preferred format
Features: Multiple formats, flexible selection, custom filtering by region/country, bulk downloads, real-time processing
- JSON - Lightweight data interchange format
- MYSQL - MySQL database dumps with complete schema
- PSQL - PostgreSQL database exports
- SQLITE - Portable, self-contained database files
- SQLSERVER - Microsoft SQL Server compatible scripts
- MONGODB - NoSQL document collections + dump
- XML - Structured markup language format
- YAML - Human-readable configuration format
- CSV - Spreadsheet-compatible tabular data
- GEOJSON - RFC 7946 standard for geographic features (Point geometry)
- TOON - Token-Oriented Object Notation for LLM consumption (~40% fewer tokens vs JSON) π Format Spec
- DuckDB - Available via manual conversion from SQLite files. See Export to DuckDB for instructions.
| File | JSON | MYSQL | PSQL | SQLITE | SQLSERVER | MONGODB | XML | YAML | CSV | GEOJSON | TOON |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Regions | β | β | β | β | β | β | β | β | β | NA | NA |
| Subregions | β | β | β | β | β | β | β | β | β | NA | NA |
| Countries | β | β | β | β | β | β | β | β | β | β | β |
| States | β | β | β | β | β | β | β | β | β | β | β |
| Cities | β | β | β | β | β | β | β | β | β | β | β |
| Country+States | β | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| Country+Cities | β | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| Country+State+Cities/World | β | β | β | β | β | β | NA | NA | NA | NA | NA |
Legend: β = Available | NA = Not applicable for this format
https://dr5hn.github.io/countries-states-cities-database/
Total Regions : 6
Total Sub Regions : 22
Total Countries : 250
Total States/Regions/Municipalities : 5,299
Total Cities/Towns/Districts : 153,765
Total Timezones : 423 (100% IANA coverage)
Last Updated On : 03th Dec 2025
Two-phase build system: JSON (version control) β MySQL (canonical) β All export formats
π contributions/ β [Python Import] β ποΈ MySQL β [PHP Export] β π¦ json/, csv/, xml/, sql/, etc.
For Contributors: Edit JSON files in contributions/ β Submit PR β GitHub Actions auto-generates all exports (no local setup needed!)
For Maintainers: MySQL as single source of truth, dynamic schema detection, one command to regenerate all formats
For Users: All formats guaranteed in sync, compressed downloads available (.gz)
How to import MongoDB database?
# First extract the tar.gz file
tar -xzvf world-mongodb-dump.tar.gz
# Then restore the MongoDB dump
mongorestore --host localhost:27017 --db world mongodb-dump/worldWant to export the database to DuckDB format? You can easily convert the existing SQLite files to DuckDB format using our conversion script.
First, install DuckDB Python package:
pip install duckdbUse the provided conversion script to convert SQLite files to DuckDB format:
# Convert the complete world database
python3 bin/scripts/export/import_duckdb.py --input sqlite/world.sqlite3 --output duckdb/world.db
# Convert individual table databases
python3 bin/scripts/export/import_duckdb.py --input sqlite/regions.sqlite3 --output duckdb/regions.db
python3 bin/scripts/export/import_duckdb.py --input sqlite/subregions.sqlite3 --output duckdb/subregions.db
python3 bin/scripts/export/import_duckdb.py --input sqlite/countries.sqlite3 --output duckdb/countries.db
python3 bin/scripts/export/import_duckdb.py --input sqlite/states.sqlite3 --output duckdb/states.db
python3 bin/scripts/export/import_duckdb.py --input sqlite/cities.sqlite3 --output duckdb/cities.dbThe conversion script will create DuckDB database files that maintain the same structure and data as the original SQLite files, optimized for analytical workloads.
| Format | Export Time | World DB Size | Compressed (.gz) |
|---|---|---|---|
| CSV | ~1s | 40 MB | 9 MB (fastest) |
| JSON | ~4s | 271 MB | 18 MB |
| MongoDB | ~1s | 30 MB | 20 MB (dump) |
| SQL | ~3s | 86 MB | 22 MB |
| SQLite | ~45s | 89 MB | - |
| XML | ~9s | 91 MB | 15 MB |
| YAML | ~17s | 68 MB | - |
| GeoJSON | ~8s | 208 MB | 24 MB |
| Toon | ~5s | 23 MB | 20 MB |
π‘ Format Recommendations:
- Web/Mobile Apps: Use JSON or CSV for easy parsing
- Databases: Import SQL, PSQL, or SQLite files directly
- GIS/Mapping: Use GeoJSON for Leaflet, Mapbox, or PostGIS
- AI/LLM Projects: Use TOON format to reduce token usage by ~40%
- Analytics: DuckDB or SQLite for fast analytical queries
- Countries: ~50ms | States: ~180ms | Cities by State: ~80ms | Search: ~120ms
- Contributors: Git + text editor (no local setup needed)
- Maintainers: PHP 8.0+, MySQL 5.7+, Python 3.8+, 4GB RAM, 10GB disk
- End Users: No requirements - just download!
Open Database License (ODbL) - 100% free and open source!
β Use commercially, modify freely, share openly β’ π Just give credit and keep derivatives open
Quick Attribution:
Data by Countries States Cities Database
https://github.com/dr5hn/countries-states-cities-database | ODbL v1.0
π οΈ Easy Way: CSC Update Tool
Use our web tool to browse, search, and submit data change requests with a streamlined review process.
- Fork & clone:
git clone --depth 1 https://github.com/YOUR_USERNAME/countries-states-cities-database.git - Edit files in
contributions/directory (cities, states, or countries) - Omit
id,created_at,updated_at,flagfields (auto-managed) - Include required fields:
name,state_id,state_code,country_id,country_code,latitude,longitude - Submit PR with clear description and data source
Example city:
{
"name": "San Francisco",
"state_id": 1416,
"state_code": "CA",
"country_id": 233,
"country_code": "US",
"latitude": "37.77493",
"longitude": "-122.41942",
"timezone": "America/Los_Angeles"
}π Full guide: contributions/README.md | Contribution Guidelines
Note: Only edit JSON in contributions/ - GitHub Actions auto-generates all export formats!
As always, thanks to our amazing contributors!
Made with contrib.rocks.
Contribute towards better earth buy the world a tree
Find and use this dataset across the web - choose the platform that fits your workflow:
| Platform | Best For | Access |
|---|---|---|
| π Kaggle Dataset | Data science, ML projects, notebooks | Download on Kaggle |
| ποΈ Data.world | Data collaboration, business analytics | View on Data.world |
| π¦ NPM Registry | JavaScript/TypeScript developers | npm install @countrystatecity/countries |
| π GitHub | Contributors, raw files, issue tracking | View Repository |
| π API Service | Production apps, real-time access | Get API Key |
| π οΈ Export Tool | Custom exports, specific formats | Launch Tool |
| π Status Page | Service uptime monitoring, incidents | Check Status |
Suggestions & Feedbacks are Most Welcome
gadadarshan[at]gmail[dot]com
While we strive for accuracy, this community-maintained database may contain errors or not reflect latest geopolitical changes. Users should verify critical data with official sources and use at their own discretion. Licensed under ODbL - see LICENSE for details.
Report issues: GitHub Issues
That's all Folks. Enjoy! π



