The S&P 500 (ticker GSPC.INDX, also quoted as $SPX) tracks 500 of the largest companies listed on US exchanges and is the most-watched equity benchmark in the world. But the index you see today is not the index of five, ten or twenty years ago — constituents are added and removed continually. If you backtest a strategy against today’s members, the companies that were dropped along the way simply vanish from your dataset. That is survivorship bias, and it quietly inflates almost every naive historical study of the index.

EODHD’s S&P 500 historical constituents data fixes this. We track every membership change, so you can reconstruct the index as it stood on any date from April 2012 onward and run clean, survivorship-bias-free research — all from a single Fundamental Data API call, no extra add-on required.

What you get

Query the index ticker in the INDX exchange — for the S&P 500 that is GSPC.INDX — and the response returns up to three sections:

  • Components — the current constituents, each with sector, industry and index weight.
  • HistoricalTickerComponents — the full membership log: every ticker that has been in the index, with the dates it joined and left.
  • HistoricalComponents — point-in-time snapshots of the exact index membership on each historical change date (added with the historical=1 parameter).

Current constituents

Add the filter parameter to request a single section. The Components section returns the 503 current members with their live index weights:

https://eodhd.com/api/fundamentals/GSPC.INDX?api_token={YOUR_API_TOKEN}&fmt=json&filter=Components
{
  "0": {
    "Code": "NVDA",
    "Exchange": "US",
    "Name": "NVIDIA Corporation",
    "Sector": "Technology",
    "Industry": "Semiconductors",
    "Weight": 0.0793
  },
  "1": {
    "Code": "AAPL",
    "Exchange": "US",
    "Name": "Apple Inc.",
    "Sector": "Technology",
    "Industry": "Consumer Electronics",
    "Weight": 0.0674
  }
}

Full membership history

The HistoricalTickerComponents section is the heart of the dataset — every ticker that has been in the index since our change history begins in April 2012, with the date it joined, the date it left, and whether it has since been delisted. Join dates for long-standing members reach much further back — the oldest goes to 1957 — but companies that left before 2012 are not in the dataset. Over 800 tickers are tracked for the S&P 500 alone.

https://eodhd.com/api/fundamentals/GSPC.INDX?api_token={YOUR_API_TOKEN}&fmt=json&filter=HistoricalTickerComponents
{
  "0": {
    "Code": "A",
    "Name": "Agilent Technologies Inc",
    "StartDate": "2000-06-05",
    "EndDate": null,
    "IsActiveNow": 1,
    "IsDelisted": 0
  },
  "1": {
    "Code": "AAL",
    "Name": "American Airlines Group",
    "StartDate": "2015-03-23",
    "EndDate": "2024-09-23",
    "IsActiveNow": 0,
    "IsDelisted": 0
  },
  "2": {
    "Code": "LEH",
    "Name": "Lehman Brothers Holdings Inc",
    "StartDate": null,
    "EndDate": "2008-09-16",
    "IsActiveNow": 0,
    "IsDelisted": 1
  }
}

Each entry carries these fields:

  • Code and Name — the ticker symbol and company name.
  • StartDate — the date the ticker joined the index.
  • EndDate — the date it was removed, or null if it is still a member.
  • IsActiveNow — 1 if it is a current member, 0 otherwise.
  • IsDelisted — 1 if the security has since been delisted, 0 otherwise.

The Lehman Brothers row above is exactly the kind of record survivorship-biased datasets throw away. It is also the single record we hold from 2008 — the rest of the change history starts in April 2012, so the crisis years themselves are not covered.

Point-in-time snapshots

Need the full membership as it stood on a given day rather than a join/leave log? Add historical=1 with a from and to date range and the response includes a HistoricalComponents section — a snapshot of the index members on each date within the range on which the membership changed:

https://eodhd.com/api/fundamentals/GSPC.INDX?historical=1&from=2015-01-01&to=2015-12-31&api_token={YOUR_API_TOKEN}&fmt=json
{
  "2015-06-30": {
    "0": {
      "Date": "2015-06-30",
      "Code": "AIZ",
      "Exchange": "US",
      "Name": "Assurant, Inc.",
      "Sector": "Financial Services",
      "Industry": "Insurance - Property & Casualty"
    },
    "1": {
      "Date": "2015-06-30",
      "Code": "MNST",
      "Exchange": "US",
      "Name": "Monster Beverage Corp",
      "Sector": "Consumer Defensive",
      "Industry": "Beverages - Non-Alcoholic"
    }
  }
}

Coverage and history depth

For the S&P 500 our continuous record of membership changes begins on 4 April 2012, so point-in-time reconstruction from that date onward is free of survivorship bias. One earlier record exists — Lehman Brothers, removed on 16 September 2008 — but it stands alone: there are no other departures logged between 2008 and 2012, so that period cannot be reconstructed. In total more than 800 tickers are tracked, against 503 members today.

The same membership history is also available for the wider S&P family — S&P MidCap 400 (MID.INDX), S&P SmallCap 600 (SML.INDX) and S&P 100 (OEX.INDX) — while current constituents are provided for all major indices worldwide.

Those indices start on the same footing: the S&P MidCap 400 and SmallCap 600 records begin in April 2012 as well, the S&P 100 in January 2013. Point-in-time snapshots are offered for the S&P 500 only.

One caveat worth planning around. Snapshots are returned for dates as far back as 1991, and a request for an early year succeeds without any warning — but those snapshots are thin, because a company that left the index before our change history begins can never appear in one. A snapshot from 1991 lists 280 names, one from 2008 lists 436, and the count only reaches 495 in late 2015 — against roughly 500 real members throughout. Treat anything before 2012 as indicative, and expect the 2012-2015 range to run a handful of names short.

Need historical index weights? The Indices API on Marketplace

The Fundamental Data API tells you who was in the index and when. If you also need how much each name weighed on every date, our premium Indices Historical Constituents Data API on the EODHD Marketplace delivers daily weighted snapshots — up to 12 years of history across the S&P 500, 400, 100 and 600, the Dow Jones and 20 key industry indices — ideal for accurate index replication, factor research and attribution.

Get started

S&P 500 historical constituents are included with any plan that has the Fundamental Data API. Grab your free API key, then head to the Fundamentals API documentation for the full field reference and more examples.

Comments

  1. Itay Ben Dan

    The data you have is outdated, The last constituents (Tickers) removed are (‘AVP’, ‘2020-01-03’),
    (‘WCG’, ‘2020-01-23’),
    (‘FII’, ‘2020-01-31’)

  2. Holly R

    I need a specific list of data from the S&P 500 2007 company list. Is it possible for you to provide me with this?