Index Membership History API

How to read the point-in-time members and every addition and deletion of the FTSE 100, FTSE 250, S&P 500 and Russell 1000 from the v1.1 Enterprise API.

ORTEX index membership history gives the members an index actually had on each day, and every addition and deletion with the date it took effect and, where a source gives one, the date it was announced. Four indices are served: the FTSE 100 (UK100) from its launch on 3 January 1984, the FTSE 250 (UK250) from its launch on 12 October 1992, the S&P 500 (US500) from 31 March 1964 and the Russell 1000 (US1000) from 30 June 1998. Former members stay in the history after they stop trading, and are linked to ORTEX ids wherever ORTEX holds the company.

Access

The endpoints are on the v1.1 Enterprise API. Each index is licensed separately: your key needs the enterprise plan and the add-on for the index. The coverage endpoint lists every index with entitled: true or false for your key. Asking for an index your key is not entitled to answers 403 with addOnRequired; the changes feed without index= simply leaves such indices out. To add an index, contact [email protected].

Every request sends your key in the Ortex-Api-Key header. Responses are JSON by default, or CSV with format=csv, and are paged with page and page_size.

The four endpoints

EndpointWhat it returnsReference
GET /api/v11/enterprise/reference/indices/membership_coverage/One row per index: launch and history-from dates, the number of changes and members, and whether your key is entitledCoverage
GET /api/v11/enterprise/bulk/indices/membership/?index=&date=The members of one index on one date, each with the first day of its current periodMembers on a date
GET /api/v11/enterprise/bulk/indices/changes/?index=&from_date=&to_date=&action=&date_basis=&since=Additions and deletions with effective and announced dates, review, reason and confidenceChanges
GET /api/v11/enterprise/bulk/indices/spells/?index=&from_date=&to_date=Each member's periods in the index that overlap the windowMembership spells

Which indices can I read?

curl -H "Ortex-Api-Key: $ORTEX_API_KEY" \
  "https://api.ortex.com/api/v11/enterprise/reference/indices/membership_coverage/"

Each row gives the identifier to pass as index=, historyFrom (the first date the history answers), lastEventDate, eventCount, memberCount today, and entitled.

Who was in the index on a date?

curl -H "Ortex-Api-Key: $ORTEX_API_KEY" \
  "https://api.ortex.com/api/v11/enterprise/bulk/indices/membership/?index=UK100&date=1995-06-30&page_size=200"

This returns the 100 members of the FTSE 100 on 30 June 1995, each with its name and ticker on that date, memberSince, its ISIN and SEDOL where the sources give them, and ortexTid, ortexSid and ortexCid where it is linked. Without date you get today's members. A date before the index's historyFrom returns an empty page with meta.emptyReason set to requestedRangeOutsideAvailableData, never today's list.

What changed, and when was it announced?

curl -H "Ortex-Api-Key: $ORTEX_API_KEY" \
  "https://api.ortex.com/api/v11/enterprise/bulk/indices/changes/?index=US500&from_date=2026-09-01&to_date=2026-11-30"

Each row is one change:

  • action is add, delete or initial. initial marks a member on the first date of the history (the launch list, or the first list held where the history starts later); it is not an announced change. Use action=add or action=delete to leave it out.
  • effectiveDate is the first trading day the change applies: the first day in for an addition, the first day out for a deletion.
  • announcedDate is the day the change was published, or null when no source gives one. announcedDatePrecision says whether it is known to the day, month or year.
  • review (for example 2026-Q3, 2026-09 or offcycle), reason (review, reconstitution, takeover, demerger, spin-off, IPO or other), nameAtEvent and tickerAtEvent.
  • confidence (high, medium or low) says how well the sources agree, and sourceTypes names the kinds of source behind the change.

By default from_date and to_date filter on the effective date. To find the changes announced in a window instead, add date_basis=announced:

curl -H "Ortex-Api-Key: $ORTEX_API_KEY" \
  "https://api.ortex.com/api/v11/enterprise/bulk/indices/changes/?index=UK100&from_date=2026-09-01&to_date=2026-09-30&date_basis=announced"

Omit index to read the changes of every index your key is entitled to.

Keeping a copy up to date

Store the largest updatedAt you hold and pass it back as since:

curl -H "Ortex-Api-Key: $ORTEX_API_KEY" \
  "https://api.ortex.com/api/v11/enterprise/bulk/indices/changes/?since=2026-11-05T00:00:00Z"

A since pull returns every row ORTEX has added or changed after that instant, including changes withdrawn from the history, which carry withdrawn: true so you can delete them. A full pull, without since, serves the live history only.

Membership periods

curl -H "Ortex-Api-Key: $ORTEX_API_KEY" \
  "https://api.ortex.com/api/v11/enterprise/bulk/indices/spells/?index=UK250&from_date=2008-01-01&to_date=2008-12-31"

Each row is one period of one member in the index: startDate, endDate (null while still a member), startReason and endReason. Periods are half-open: a member is in the index on date D when startDate is on or before D and endDate is null or after D. Spells are the easiest way to join membership against prices or returns.

Joining to other ORTEX data

memberKey (for example ftse_uk:schroders) is stable across dates and endpoints, linked or not, and is the key to use within this dataset. A company that moves between the FTSE 100 and the FTSE 250 keeps one key; the S&P 500 and the Russell 1000 have their own. To join to other ORTEX data use ortexTid (the listing), ortexSid or ortexCid; linkStatus says how far a member is linked (listing, security, company or unlinked) and linkConfidence how sure the link is.

Things to know

  • Counts are in lines. A company with two share classes in the index counts twice.
  • The Russell 1000 is not refilled between reconstitutions, so its member count varies around 1,000. Its names follow the index fund holdings and are often in capitals.
  • Announcement dates are most complete in recent years. S&P 500 changes carry one 97% of the time since 2010, FTSE 100 and FTSE 250 changes 96% and 97% of the time since 2020; Russell 1000 announcement dates are given on IPO additions.
  • Earlier S&P 500 history is rebuilt. Changes before 2010 come from historical lists and mostly carry medium or low confidence.
  • A rename is not a change. Names and tickers at the time are on each change; spells carry the latest known name.

For every field, see the data dictionary (PDF). How the history is built is in the methodology (PDF), and the dataset's catalog page is Index Membership History.


Did this page help you?