Skip to content

dr5hn/countries-states-cities-database

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

782 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

banner

🌍 Countries States Cities Database

License: ODbL-1.0 GitHub stars GitHub forks release size

Full Database of city state country available in JSON, MYSQL, PSQL, SQLITE, SQLSERVER, XML, YAML, MONGODB & CSV format. All Countries, States & Cities are Covered & Populated with Different Combinations & Versions.

Why Choose This Database?

  • βœ… Most Comprehensive - 151,024+ cities from 250 countries, continuously updated by active community
  • βœ… Timezone Support - IANA timezone identifiers for all states and cities based on geographic coordinates
  • βœ… Multilingual Support - Built-in translations for countries, states, and cities in 19 languages (Arabic, Chinese, Dutch, French, German, Hindi, Italian, Japanese, Korean, Persian, Polish, Portuguese, Russian, Spanish, Turkish, Ukrainian, and more)
  • βœ… Multiple Integration Options - NPM package, REST API, Export Tool, or direct downloads
  • βœ… Production Ready - Trusted by thousands of developers worldwide in live applications
  • βœ… Always Up-to-Date - Monthly updates with community contributions and data verification
  • βœ… Every Format You Need - JSON, SQL, MongoDB, CSV, XML, YAML - use what fits your stack
  • βœ… 100% Free & Open Source - ODbL licensed with no usage restrictions
  • βœ… Developer Friendly - Install via NPM in 1 minute or integrate API in 5 minutes
  • βœ… Battle-Tested Data - 92%+ accuracy, verified by community across 250 countries

Save hundreds of hours collecting and maintaining geographical data. Get accurate, structured, ready-to-use data right now.

Table of Contents

🌐 CSC Platform Ecosystem

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

πŸ”„ Choose Your Integration Method

Not sure which solution fits your needs? Here's a quick comparison:

Feature NPM Package REST API Export Tool Direct Download
Setup Time < 1 minute < 5 minutes < 2 minutes Immediate
Best For JavaScript/TypeScript apps Any language, production apps Custom datasets One-time use, legacy systems
Data Updates Manual (update package) Automatic & real-time On-demand Manual download
Works Offline βœ… Yes ❌ No βœ… Yes βœ… Yes
Bundle Impact ~15-50 MB None (API calls) Varies Varies
Rate Limits None Yes (by plan) None None
Latest Data On package update Always current Current at export Current at download
Custom Filtering Code-based API parameters Web interface Manual processing
Cost Free Free tier + paid plans Free + paid credits Free
TypeScript Support βœ… Full types included Via client libs N/A N/A

🎯 Recommended Usage

Choose NPM Package when:

  • βœ… Building forms with static dropdowns (shipping address, user registration)
  • βœ… Working offline or with poor connectivity
  • βœ… Small to medium projects with infrequent data changes
  • βœ… Want zero latency (no network calls needed)
  • βœ… Need to minimize hosting costs
  • βœ… Using JavaScript/TypeScript/Node.js

Choose REST API when:

  • βœ… Need real-time updates (new cities/states added regularly)
  • βœ… Building multi-platform apps (iOS, Android, Web)
  • βœ… Want smaller app bundle sizes
  • βœ… Require guaranteed uptime & SLA
  • βœ… Need advanced features (fuzzy search, autocomplete, geocoding)
  • βœ… Enterprise applications with high traffic
  • βœ… Using any programming language

Choose Export Tool when:

  • βœ… Need specific countries or regions only
  • βœ… Want custom data formats or structures
  • βœ… Building analytics or one-time reports
  • βœ… Require data transformation before use
  • βœ… Testing or prototyping new features

Choose Direct Download when:

  • βœ… Legacy systems or specific database requirements
  • βœ… Need complete database dumps
  • βœ… Working with SQL databases directly
  • βœ… One-time import for internal tools

Pro Tip: Many developers start with the NPM package for rapid prototyping, then switch to the REST API for production when they need real-time updates and additional features! πŸš€

πŸ“¦ NPM Package

Official JavaScript/TypeScript Package for Node.js and Browser

We've launched an official NPM package that makes it incredibly easy to integrate this database into your JavaScript/TypeScript projects!

npm install @countrystatecity/countries

Features:

  • πŸš€ Zero Dependencies - Lightweight and fast
  • πŸ“˜ TypeScript Support - Full type definitions included
  • 🌐 Works Everywhere - Node.js, React, Vue, Angular, Next.js, and more
  • πŸ” Smart Filtering - Built-in methods to query countries, states, and cities
  • πŸ’Ύ Offline First - No API calls required, all data bundled
  • 🎯 Tree-shakeable - Import only what you need

Quick Example:

import { Country, State, City } from '@countrystatecity/countries';

// Get all countries
const countries = Country.getAllCountries();

// Get states of a specific country
const usStates = State.getStatesOfCountry('US');

// Get cities of a specific state
const californiaCities = City.getCitiesOfState('US', 'CA');

πŸ“– View Full Documentation on NPM

πŸ“‚ Source Code on GitHub

API πŸš€

πŸŽ‰ Introducing REST API for Countries States Cities Database.

API Documentation

banner

πŸ› οΈ Export Tool

🎯 Transform your data with our powerful export tool!

Looking to export the Countries States Cities database in your preferred format? Our dedicated export tool makes it easy to convert and download data in multiple formats with just a few clicks.

Try the Export Tool - Export data in JSON, CSV, XML, YAML, and more!

banner

Features:

  • Multiple Export Formats: JSON, CSV, XML, YAML, and more
  • Flexible Data Selection: Choose specific countries, states, or cities
  • Custom Filtering: Filter by regions, subregions, or specific criteria
  • Bulk Downloads: Export large datasets efficiently
  • Real-time Processing: Get your data instantly
  • User-friendly Interface: Simple and intuitive design

Perfect for developers, researchers, and businesses who need clean, structured geographical data for their applications.

Available Formats

  • JSON
  • MYSQL
  • PSQL
  • SQLITE
  • SQLSERVER
  • MONGODB
  • XML
  • YAML
  • CSV

Note: DuckDB format is available via manual conversion from SQLite files. See the Export to DuckDB section for instructions.

Distribution Files Info

File JSON MYSQL PSQL SQLITE SQLSERVER MONGODB XML YAML CSV
Regions βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ…
Subregions βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ…
Countries βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ…
States βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ…
Cities βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ…
Country+States βœ… NA NA NA NA NA NA NA NA
Country+Cities βœ… NA NA NA NA NA NA NA NA
Country+State+Cities/World βœ… βœ… βœ… βœ… βœ… βœ… NA NA NA

Demo

https://dr5hn.github.io/countries-states-cities-database/

Insights

Total Regions : 6
Total Sub Regions : 22
Total Countries : 250
Total States/Regions/Municipalities : 5,038
Total Cities/Towns/Districts : 151,024

Last Updated On : 16th Oct 2025

Import MongoDB

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/world

Export to DuckDB

Want to export the database to DuckDB format? You can easily convert the existing SQLite files to DuckDB format using our conversion script.

Prerequisites

First, install DuckDB Python package:

pip install duckdb

Convert SQLite to DuckDB

Use 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.db

The conversion script will create DuckDB database files that maintain the same structure and data as the original SQLite files, optimized for analytical workloads.

πŸ“„ License

Open Database License (ODbL) - Free to use, share, and adapt!

This database is 100% free and open source with no restrictions on commercial use.

What You Can Do:

  • βœ… Use commercially - Build and sell products using this data
  • βœ… Modify freely - Adapt and transform data for your needs
  • βœ… Share openly - Distribute to others without limitations
  • βœ… Private use - Use internally within your organization

Simple Requirements:

πŸ“ Attribute - Credit this project in your documentation πŸ”„ Share-alike - If you distribute a modified database, use the same license

Quick Attribution:

Data provided by Countries States Cities Database
https://github.com/dr5hn/countries-states-cities-database
Licensed under ODbL v1.0

Full License Details:

πŸ’‘ TL;DR: Use it freely for any purpose, just give credit and keep derivatives open!

Contributing

πŸ‘πŸŽ‰ First off, thanks for your interest in contributing! πŸŽ‰πŸ‘

Using Our Database Update Tool

We've launched a dedicated web tool to make contributing to this database easier than ever!

CSC Update Tool - Our official tool to submit database change requests

banner

The update tool allows you to:

  • Browse and search through all regions, subregions, countries, states, and cities
  • Easily identify and correct outdated or inaccurate data
  • Submit change requests through a streamlined review process
  • Track the status of your submissions

Alternative Manual Process

If you prefer to contribute directly through GitHub, you can use our simplified JSON contribution workflow:

🎯 JSON-based Contributions for External Contributors

  1. Fork the repository and clone it to your local machine
  2. Make changes to the data in the contributions/ directory:
    • Cities: Edit country-specific files in contributions/cities/ (e.g., US.json, IN.json)
    • States: Edit contributions/states/states.json
    • Countries: Edit contributions/countries/countries.json
  3. Add new records without an id field - IDs will be auto-assigned by the database during import
  4. Create a pull request with a clear description of your changes

πŸ“– See contributions/README.md for detailed examples and field reference

What Happens After Your PR?

  1. Your PR is reviewed by maintainers
  2. GitHub Actions automatically imports your changes to MySQL (IDs are assigned)
  3. All export formats (JSON, CSV, SQL, XML, YAML, etc.) are regenerated from MySQL
  4. The PR is updated with all export files

Why JSON for Contributors?

  • βœ… Easy to edit - Clear, readable format
  • βœ… Organized by country - Find cities quickly
  • βœ… No local setup needed - Just edit JSON and submit PR
  • βœ… Better for Git - Clearer diffs and easier reviews
  • βœ… Non-technical friendly - Anyone can contribute!

Important Notes:

  • βœ… Contributors: Only edit JSON files in contributions/ directory
  • ❌ Do NOT edit: SQL, CSV, XML, YAML, or other export files - these are auto-generated
  • ❌ Do NOT run: Build scripts or exports locally - GitHub Actions handles this
  • πŸ”’ MySQL workflow: Reserved for repository maintainers only

Please ensure your contributions align with our data standards and formatting. You can find the detailed contribution guidelines here.

We review all submissions carefully to maintain data quality and appreciate your help in making this database more accurate and comprehensive.

Repo Activity

Repo Activity

As always, thanks to our amazing contributors!

Made with contrib.rocks.

Sponsors

Make the world more Greener 🌴

Contribute towards better earth buy the world a tree

🌐 Available On Multiple Platforms

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

Follow me at

Github @dr5hn Twitter @dr5hn LinkedIn @dr5hn

πŸ™‹β€β™‚οΈ Support My Work

Github Sponsorship

ko-fi

Suggestions / Feedbacks

Suggestions & Feedbacks are Most Welcome
gadadarshan[at]gmail[dot]com

Disclaimer

Please note that while every effort has been made to ensure the accuracy and completeness of the Countries States Cities Database, it may still contain errors or omissions. The database is continuously being refined and improved based on user feedback and contributions.

Contributors are encouraged to review the Contribution Guidelines and follow the specified guidelines for updating and correcting data in the database. However, due to the collaborative nature of the project, we cannot guarantee the absolute accuracy or reliability of the information provided.

The Countries States Cities Database is made available under the Open Database License, and any rights in individual contents of the database are licensed under the Database Contents License. Users are responsible for independently verifying the data and using it at their own discretion.

We appreciate the efforts of contributors in identifying and addressing issues in the database, and we encourage users to report any inaccuracies or suggest improvements through creating issues. However, please note that the database may not always reflect the latest geopolitical changes or political status.

It is recommended that users consult official sources and corroborate the data from the Countries States Cities Database with other reliable references for critical applications or decision-making processes.

By accessing and using the Countries States Cities Database, users acknowledge and agree to the aforementioned disclaimer and the terms of the Open Database License and the Database Contents License.

That's all Folks. Enjoy.

About

🌍 Discover our global repository of countries, states, and cities! πŸ™οΈ Get comprehensive data in JSON, SQL, PSQL, SQLSERVER, MONGODB, SQLITE, XML, YAML, and CSV formats. Access ISO2, ISO3 codes, country code, capital, native language, timezones (for countries), and more. #countries #states #cities

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors