Skip to content

🌍 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

License

dr5hn/countries-states-cities-database

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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 with timezone & 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 - 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 1 for faster cloning (~1.2GB vs 5.4GB full history)

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

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

πŸ“¦ Official Packages

JavaScript/TypeScript (NPM)

npm install @countrystatecity/countries

Features: Zero dependencies, TypeScript support, offline-first, tree-shakeable

import { Country, State, City } from '@countrystatecity/countries';
const usStates = State.getStatesOfCountry('US');

πŸ“– NPM Documentation Β· πŸ“‚ GitHub

Python (PyPI)

pip install countrystatecity

Features: 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

Timezones Package

Dedicated timezone data package for JavaScript/TypeScript applications:

npm install @countrystatecity/timezones

πŸ“‚ GitHub Repository

API πŸš€

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

API Documentation

banner

πŸ› οΈ Export Tool

Export Tool - Convert and download data in your preferred format

banner

Features: Multiple formats, flexible selection, custom filtering by region/country, bulk downloads, real-time processing

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

Legend: βœ… = Available | πŸ—œοΈ = Compressed (.gz) version also available

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
Total Timezones : 423 (97.9% IANA coverage)

Last Updated On : 18th Oct 2025

Repository Architecture

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)

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.

Performance & Benchmarks

Export Performance

Format Export Time World DB Size Compressed (.gz)
CSV ~1s 45 MB 9 MB (fastest)
JSON ~4s 161 MB 18 MB
MongoDB ~1s 140 MB -
SQL ~3s 180 MB 22 MB
SQLite ~45s 85 MB -
XML ~9s 220 MB 15 MB
YAML ~17s 195 MB -

API Response Times (Average)

  • Countries: ~50ms | States: ~180ms | Cities by State: ~80ms | Search: ~120ms

System Requirements

  • 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!

πŸ“„ License

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

Contributing

πŸ› οΈ Easy Way: CSC Update Tool

Use our web tool to browse, search, and submit data change requests with a streamlined review process.

banner

πŸ“ Manual Way: Edit JSON Files Directly

  1. Fork & clone: git clone --depth 1 https://github.com/YOUR_USERNAME/countries-states-cities-database.git
  2. Edit files in contributions/ directory (cities, states, or countries)
  3. Omit id, created_at, updated_at, flag fields (auto-managed)
  4. Include required fields: name, state_id, state_code, country_id, country_code, latitude, longitude
  5. 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!

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

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! 🌍

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

No packages published