Trying to be concise:

  • I am interested in the most popular indices (SP500, FTSE100, DAX30, CAC40, SMI30, etc).
  • For each index I want to know its constituents in a monthly basis.
  • For each constituent (each month) I would like to know its price.

Since it's monthly data I believe it is easier to find but I haven't been very successful for the moment.

I am willing to pay something reasonable (i.e. not too expensive).

I can get my hands on a Bloomberg terminal for a couple of hours but I have never used them and I don't know if I can do what I want in a reasonable amount of time.

I will be really grateful for any help on the subject. All suggestions are welcomed!


All of these index constituents are available on Bloomberg and through Bloomberg Excel link. Just use one of those Index member formulas with a date override.


  • 1
    $\begingroup$ @Terco I have a spreadsheet that will do this if you like. It only does a few months, you'd have to fill out the other months by copying and pasting the formulae. You'll need access to the Bberg terminal though, with Excel and the add-in. Email me at lagunafinance at me dot com if you're interested. $\endgroup$ – Thomas Browne Jun 4 '11 at 22:48
  • $\begingroup$ Thanks a lot Thomas! Unfortunately, I saw the answer a little bit late. I spent the whole afternoon yesterday doing that. The good thing is that I can confirm that it works! ... now, if I could only find an easy way to do the same but with daily data... $\endgroup$ – Terco Jun 8 '11 at 10:03
  • $\begingroup$ Hi again Thomas, I want to try to download daily data now. Have you tried to do that automagically for long periods? $\endgroup$ – Terco Jun 20 '11 at 11:45

You can have a look at this QUANT - Blog.

You can get NDX100 and SP500 historical index constitution.

  • 1
    $\begingroup$ It would be nice to point out that you are the one selling the data. It is part of what I am looking for, but I still want the prices and other indices. $\endgroup$ – Terco Jun 4 '11 at 23:04
  • $\begingroup$ the link is infected.. $\endgroup$ – Abdul Rehman Sayed Dec 11 '17 at 7:28

You can get this information by 'web scraping' - running a script (Python is ideal) which visits the relevant websites and extracts the prices from the HTML, then packages it into a suitable form (eg XML) and saves to disk.

The only drawback is that the script needs fairly regular maintenance, as the pages you are getting the information from tend to be updated quite regularly and when that happens the script needs to modified accordingly.

  • 1
    $\begingroup$ You can do it for the current components, sure. But what websites are you going to visit if you want to extract the info for the 1990's? $\endgroup$ – Terco Jun 4 '11 at 23:02
  • $\begingroup$ Ok, I didn't realise you wanted historical data. Have you seen this post about the OST project? $\endgroup$ – user957 Jun 5 '11 at 6:42

I went through the exercise of acquiring constituent data for indices as well as exchange constituents recently. After discussing the issue with both S&P Global and the FTSE Russel team the reply of both providers was that this data is not distributed in a free format (we were discussing this to include data on www.simfin.com).

As I don't currently have access to Bloomberg or Factset, I can not help you with professional tools, but I have made a list of sources for constituent data (freely available however not all up-to-date).

Here the list of free sources that I found:

Dow 30 - https://primeaim.wordpress.com/2014/09/24/central-index-keys-cik-for-dow-30-and-sp-500/

S&P 500 - https://primeaim.wordpress.com/2014/09/24/central-index-keys-cik-for-dow-30-and-sp-500/

Russell 2000 (scroll down to download CSV with constituents) - https://www.ishares.com/us/products/239710/ishares-russell-2000-etf

NASDAQ - http://rankandfiled.com/#/data/tickers

NYSE - https://dan.vonkohorn.com/blog/

Wilshire 5000 - http://financemainpage.com/Listing_of_All_Wilshire_5000_Stocks.html


Using the terminal alone:




All constituents will show up with their weight and the last price. You can then use Output -> Excel to export them. Also you could add custom fields in case, for instance, you want yesterday's closing price (PX_YEST_CLOSE) instead of LAST_PX.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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