A list of the world's largest urban area is available on wikipedia and cites 9 different possible data sources. This list gives only 2014 data (or another, single year). Is it possible to obtain time series population data for example for the last 20 years? I'm looking for something similar to the world bank country data but for urban areas (cities).

I would like to use the data set to illustrate a training on statistical software and data visualisation.

  • perhaps look at each country's census (where available) asdfree.com/2015/11/laptop-friendly-analysis-of-census-of.html Feb 3, 2016 at 11:49
  • 1
    I know one of the NSF DataNet projects funded in the second round was supposed to have this sort of data ... I thought it was SEAD, but looking at the project names, I suspect it might be Terra Populus. Other places to look for population data are CEISIN or ICPSR. (if someone has a more specific answer than my general hints, please post an answer)
    – Joe
    Feb 3, 2016 at 12:11

1 Answer 1


For a quick visualization, check out Wolfram Alpha

http://www.wolframalpha.com/input/?i=growth+rate+of+tokyo+population http://www.wolframalpha.com/input/?i=growth+rate+of+jakarta+population http://www.wolframalpha.com/input/?i=growth+rate+of+ghuangzhou+population

You cannot download the data for free. Spend 5$/month, or use the trial period.

However, these short time series will have different lengths. Values will differ from official numbers, because the definition of city boundaries is arbitrary.

For urban areas grouped countrywise, wikipedia includes a link to its main source, citypopulation.de, curated by a German guy, probably a GIS expert.

He doesn't make a dump of their data available for download (Quandl does), but they add a list of the official sources, the national authorities for statistics or demographics. (Query them yourself?)

zf <- "citypop-codes.csv.zip"
if(! file.exists(zf)){
download("https://www.quandl.com/api/v3/databases/CITYPOP/codes", zf)

(fn <- unzip(zf, list = TRUE)$Name)
contents <- unzip(zf, files=fn[1], junkpaths = TRUE )

codes <- read.csv(contents, header = FALSE )
colnames(codes) <- c("code", "descr")
(agg <- codes[grepl("\\[Tokyo\\]", codes$descr, ignore.case = T),])
popdata = Quandl(code=as.character(agg$code), type = "xts")


    1995-10-01 7967614
    2000-10-01 8134688
    2005-10-01 8489653
    2010-10-01 8945695
    2014-10-01 9143041

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.