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.
- β 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.
- CSC Platform Ecosystem
- Choose Your Integration Method
- NPM Package
- API
- Export Tool
- Available Formats
- Distribution Files Info
- Demo
- Insights
- Import MongoDB
- Export to DuckDB
- License
- Contributing
- Repo Activity
- Sponsors
- Make the world more Greener
- Available On Multiple Platforms
- Follow me at
- Support My Work
- Suggestions / Feedbacks
- Disclaimer
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 |
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 |
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! π
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/countriesFeatures:
- π 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
π Introducing REST API for Countries States Cities Database.
π― 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!
- 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.
- 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.
| 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 |
https://dr5hn.github.io/countries-states-cities-database/
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
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.
Open Database License (ODbL) - Free to use, share, and adapt!
This database is 100% free and open source with no restrictions on commercial use.
- β 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
π Attribute - Credit this project in your documentation π Share-alike - If you distribute a modified database, use the same license
Data provided by Countries States Cities Database
https://github.com/dr5hn/countries-states-cities-database
Licensed under ODbL v1.0
Full License Details:
- Open Database License (ODbL) - Database structure and compilation
- Database Contents License - Individual data records
π‘ TL;DR: Use it freely for any purpose, just give credit and keep derivatives open!
ππ First off, thanks for your interest in contributing! ππ
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
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
If you prefer to contribute directly through GitHub, you can use our simplified JSON contribution workflow:
- Fork the repository and clone it to your local machine
- 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
- Cities: Edit country-specific files in
- Add new records without an
idfield - IDs will be auto-assigned by the database during import - Create a pull request with a clear description of your changes
π See contributions/README.md for detailed examples and field reference
- Your PR is reviewed by maintainers
- GitHub Actions automatically imports your changes to MySQL (IDs are assigned)
- All export formats (JSON, CSV, SQL, XML, YAML, etc.) are regenerated from MySQL
- The PR is updated with all export files
- β 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.
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
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.



