77

I need a database of Countries and their Cities.

Any idea where I can get such a list?

Samuel Liew
  • 76,741
  • 107
  • 159
  • 260
Harsha M V
  • 54,075
  • 125
  • 354
  • 529

10 Answers10

53

There are quite a few available.

The following has database for 2,401,039 cities

http://www.geodatasource.com/world-cities-database/free

BBauer42
  • 3,549
  • 10
  • 44
  • 81
pyfunc
  • 65,343
  • 15
  • 148
  • 136
40

From all my searching around, I strongly say that the most practical, accurate and free data source is provided by GeoNames.

You can access their data in 2 ways:

  1. The easy way through their free web services.
  2. Import their free text files into Database tables and use the data in any way you wish. This method offers much greater flexibility and have found that this method is better.
Mahdi Alkhatib
  • 1,954
  • 1
  • 29
  • 43
  • Only problem with them is that their country list is 2 characters long for each country. Not really optimal unfortunately – Phil Jun 19 '15 at 17:01
  • If you are looking for list of Country table with insert for all the countries there is a single sql script here :http://www.infomazing.net/blog/database-country-table-with-sql-insert-statements – Saqib Vaid Oct 26 '15 at 19:38
  • Interesting database, but postal codes are not up to date for Italy (actually they are many years old) – j.c Sep 14 '16 at 15:45
  • @j.c Which one (GeoNames or informazing) contains errors in Italia ? – devoh Feb 16 '17 at 08:49
  • @devoh in some cities C.A.P. (codice avviamento postale) has changed many years ago, as an example 47522 was 47020, but old 47020 still works: http://www.geonames.org/postalcode-search.html?q=47020&country=IT while new 47521 doesn't. – j.c Feb 16 '17 at 11:08
  • Thanks I didn't know which one contains errors. In their defense, even Wikipedia shows the old post code. https://it.wikipedia.org/wiki/Longiano I also check a shipping provider and 47020 gives Longiano as result ... – devoh Feb 16 '17 at 13:13
  • I have checked the Spanish cities, and it has a lot of mistakes and cities repeated... – DanielBlazquez Apr 11 '18 at 19:09
19

Go through this link http://www.maxmind.com/en/worldcities

It Includes the following fields:

  1. Country Code
  2. ASCII City Name
  3. City Name
  4. Region
  5. Population
  6. Latitude (The latitude and longitude are near the center of the most granular location value returned: postal code, city, region, or country)
  7. Longitude
Ajit Kumar
  • 534
  • 3
  • 8
10

Check this out:

Cities of the world database donated by MaxMind.com

The company MaxMind.com1 has agreed to release their cities of the world database under the GPL. The database contains locations by country, city, latitude and longitude. There are over 3,047,000 records in the database. For those of you who have tried the location.module with the zipcodes database from CivicSpace, you will recognize how cool it is and how well this fits with that project and therefore Drupal.

Here's another free one that might help you get started.

Creating and maintaining such a database is quite a bit of work - so anyone who's done it is likely keeping it to themselves, or offering it for a fee.

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
  • thats neat. only problem is how to get around getting the country names into that. they just have abrev :( – Harsha M V Oct 02 '10 at 08:54
  • 1
    Well, it's free and thus could be a starting point. Based on the abbrev., you should have no trouble finding the country names for those 200 countries or so and add them to your database table... – marc_s Oct 02 '10 at 08:59
  • This project has cleaned up some of the issues with this data: https://github.com/JoshSmith/worldwide-city-database – StayOnTarget May 19 '17 at 15:17
9

http://cldr.unicode.org/ - common standard multi-language database, includes country list and other localizable data.

romaninsh
  • 10,606
  • 4
  • 50
  • 70
Kuvalda.Spb.Ru
  • 443
  • 4
  • 6
  • Question about cities with global permanent ID and localized names is open :( I can't find solution. I plan maintain own application codelist with user contribution. – Kuvalda.Spb.Ru Feb 08 '11 at 15:36
4

https://code.google.com/p/worlddb/downloads/list

Open World Database alpha

This database has multi languages country names, region names, city names and they's latitude and longitude number and country's alpha2 code .

nelaaro
  • 3,006
  • 5
  • 38
  • 56
3

United Nations list of locations in mdb, csv or txt:

Welcome: http://www.unece.org/cefact/locode/welcome.html

Choose the downloads link from the above link or just click here.

Sum None
  • 2,164
  • 3
  • 27
  • 32
1

You can use database from here -

http://myip.ms/info/cities_sql_database/

CREATE TABLE `cities` (
  `cityID` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `cityName` varchar(50) NOT NULL,
  `stateID` smallint(5) unsigned NOT NULL DEFAULT '0',
  `countryID` varchar(3) NOT NULL DEFAULT '',
  `language` varchar(10) NOT NULL DEFAULT '',
  `latitude` double NOT NULL DEFAULT '0',
  `longitude` double NOT NULL DEFAULT '0',
  PRIMARY KEY (`cityID`),
  UNIQUE KEY `unq` (`countryID`,`stateID`,`cityID`),
  KEY `cityName` (`cityName`),
  KEY `stateID` (`stateID`),
  KEY `countryID` (`countryID`),
  KEY `latitude` (`latitude`),
  KEY `longitude` (`longitude`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
user2253362
  • 81
  • 1
  • 3
1

I was comparing worldcitiesdatabae.info with www.worldcitiesdatabase.com and it appears the latter one to be more resourceful. However, maxmind has a free database so then why buy a cities database. Just get the free one and there is lot of help available on internet about maxmind db. If you put in extra efforts then you can save those few bucks :)

Ganesh S
  • 371
  • 6
  • 26
0

This service returns Countries (name,code) and cities for any country as REST, SErvice. You can also download database and sample REST service

http://tecorange.com/content/world-countries-and-cities-restjson-service-12-months-subscription