Index events
List every addition to and removal from the S&P 500, Nasdaq-100 and Dow Jones Industrial Average as dated events.
GET /v1/index/{index_name}/events returns an index's membership changes as a dated log: one row per addition and one row per removal, with the member's entity_id, ticker and name, the event type and its effective date. Use it to answer "what joined or left the index, and when". For the members on a given date, use Index membership.
The response contains no money, share or percentage values. Dates are YYYY-MM-DD strings.
An addition's effective_date is the member's first day in the index; a removal's effective_date is its last day in the index. Both match the added_date and removed_date that Index membership reports for the same membership.
Each row states its own grain in member_grain, on the same terms as the roster: security rows name one share class, issuer rows name the company. Tickers and entities explains the two.
Parameters
index_namestrRequiredPath segment. sp500, djia or ndx100, or an alternative name listed on Index membership. Case-insensitive. Any other name returns 400.
startstrDefault: none; Free: one year before todayYYYY-MM-DD, a real calendar date. Earliest effective_date returned, inclusive. On Free, a start earlier than one year before today (UTC), or no start, is raised to that date and reported in meta.data_floor and the X-Data-Floor response header.
endstrDefault: noneYYYY-MM-DD, a real calendar date. Latest effective_date returned, inclusive. For djia and ndx100, an end after meta.coverage_end returns 400.
event_typestrDefault: bothadded or removed, in lower case. Omit for both. Any other value returns 400.
limitintDefault: 1000Rows per page, 1 to 1,000, on every plan.
offsetintDefault: 0Rows to skip before the page starts. 0 or more.
Response
The body is {"data": [...], "meta": {...}}. Rows are ordered by effective_date, then additions before removals, then entity_name, then each member's own key.
Row fields
| field | type | unit | nullable | description |
|---|---|---|---|---|
entity_id | int | — | yes | Share-class id when member_grain is security; company id when it is issuer. Null for a member that is not linked to an entity. |
ticker | str | — | yes | Ticker recorded for the membership, or else the ticker in force on effective_date. Null where no ticker is on record and on issuer rows. |
entity_name | str | — | yes | Name recorded for the membership, or else the current name. Can be null for a member that is not linked to an entity. |
index | str | — | no | SP500, DJIA or NDX100. |
event_type | str | — | no | added or removed. |
effective_date | str | date | no | First day in the index for added; last day in the index for removed. |
member_grain | str | — | no | security or issuer. |
ticker_basis | str | — | no | first_known when no ticker was in force on the date and ticker is the member's earliest ticker on record. Absent otherwise. |
Meta
Response metadata explains knowledge_time, as_of and freshness.
| field | type | unit | nullable | description |
|---|---|---|---|---|
index | str | — | no | SP500, DJIA or NDX100. |
event_coverage_start | str | date | no | Date the index's record opens: 1925-12-31 for SP500, 1995-01-01 for NDX100, 1999-10-31 for DJIA. |
entity_id_grain | str | — | no | security. Each row's own grain is in member_grain. |
coverage_end | str | date | no | Last date the index's record covers. |
data_floor | str | date | yes | Earliest effective_date your plan can receive: one year before today on Free, null on paid plans. |
count | int | rows | no | Rows in this page. |
total | int | rows | no | Events that match across all pages. |
has_more | bool | — | no | true while offset + count is less than total. |
knowledge_time | str | UTC timestamp | yes | Newest knowledge time of the membership data. |
as_of | str | date | no | Equal to end. Present only when end is passed. |
freshness | array | — | no | One index_membership entry; its through equals coverage_end. |
Pagination
The endpoint pages by offset. Pass limit (up to 1,000) and offset; meta.has_more is true while rows remain and meta.total counts every matching event. The full SP500 log is more than 3,000 events, so page through it or narrow it with start, end and event_type. Pagination compares offset and cursor paging.
The last page of the 16 additions from 2026-01-01 to 2026-09-25, four per page:
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://api.xfinlink.com/v1/index/sp500/events?start=2026-01-01&end=2026-09-25&event_type=added&limit=4&offset=12"{
"data": [
{
"entity_id": 10012107,
"ticker": "RDDT",
"entity_name": "Reddit",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-08-18",
"member_grain": "security"
},
{
"entity_id": 10006277,
"ticker": "BE",
"entity_name": "Bloom Energy",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
},
{
"entity_id": 10004612,
"ticker": "P",
"entity_name": "Everpure",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
},
{
"entity_id": 10029052,
"ticker": "ILMN",
"entity_name": "Illumina, Inc.",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
}
],
"meta": {
"index": "SP500",
"event_coverage_start": "1925-12-31",
"coverage_end": "2026-09-29",
"data_floor": null,
"count": 4,
"total": 16,
"has_more": false,
"as_of": "2026-09-25",
...
}
}Errors
| status | error code | when it happens | how to fix |
|---|---|---|---|
400 | bad_request | index_name is not a served index or alternative name. The message lists the available names. | Use sp500, djia, ndx100 or an alternative name. |
400 | bad_request | start is not a real calendar date in YYYY-MM-DD form. | Pass a real date as YYYY-MM-DD. |
400 | bad_request | end is not a real calendar date in YYYY-MM-DD form. | Pass a real date as YYYY-MM-DD. |
400 | bad_request | end is before start. | Pass an end on or after start. |
400 | bad_request | event_type is not added or removed, including upper-case forms. | Pass added or removed, or omit it. |
400 | bad_request | djia or ndx100 with an end after the index's coverage_end. | Pass an end on or before coverage_end, or omit end. |
400 | bad_request | limit is not a whole number of 1 or more, or is more than 1,000. | Pass a limit from 1 to 1,000. |
400 | bad_request | offset is negative or not a whole number. | Pass 0 or a positive whole number. |
401 | unauthorized | No key, or a key that is not valid. | Send X-API-Key: YOUR_API_KEY. |
429 | see Rate limits | A request or row allowance is used up. | Wait for the reset. A request-limit body gives the wait in retry_after_seconds; daily allowances reset at 00:00 UTC and hourly ones at the top of the UTC hour. |
Unknown index (/v1/index/foo/events):
{"error": "bad_request", "code": "bad_request", "status": 400, "detail": "Unknown index: foo. Available: djia, ndx100, sp500"}Malformed start (start=2024-1-5) and impossible end (end=2024-02-30):
{"error": "bad_request", "code": "bad_request", "status": 400, "detail": "Invalid start date format (YYYY-MM-DD)"}{"error": "bad_request", "code": "bad_request", "status": 400, "detail": "Invalid end date: '2024-02-30' (expected a real YYYY-MM-DD date)"}event_type=ADDED:
{"error": "bad_request", "code": "bad_request", "status": 400, "detail": "event_type must be added or removed"}end past coverage_end (/v1/index/djia/events?end=2099-12-31). The date in detail is the index's coverage_end on the day of the request:
{"error": "bad_request", "code": "bad_request", "status": 400, "detail": "djia membership is recorded through 2026-10-07. Request a date on or before 2026-10-07."}limit=0, limit=1001 and offset=-1:
{"error": "bad_request", "code": "bad_request", "status": 400, "detail": "limit must be a positive integer"}{"error": "bad_request", "code": "bad_request", "status": 400, "detail": "limit max is 1000"}{"error": "bad_request", "code": "bad_request", "status": 400, "detail": "offset must be a non-negative integer"}No key:
{"error": "unauthorized", "code": "unauthorized", "status": 401, "detail": "No API key was sent. Pass your key in the X-API-Key header or the ?api_key= query parameter. Get one free at https://xfinlink.com/signup", "message": "No API key was sent. Pass your key in the X-API-Key header or the ?api_key= query parameter. Get one free at https://xfinlink.com/signup"}Plan differences
A key is required on every plan. Paid plans receive every event back to the start of each index's record. Free receives the last year.
- Free:
startis raised to one year before today (UTC) when it is earlier or absent. The floor is reported inmeta.data_floorand in theX-Data-Floorresponse header, and astartbefore it is named inwarnings.endis not changed, so a window that ends before the floor returns no rows, with a warning that says so. - Pro: full history,
meta.data_flooris null, noX-Data-Floorheader. - Max: identical to Pro: full history,
meta.data_floornull, noX-Data-Floorheader. - Redistribution: identical to Pro: full history,
meta.data_floornull, noX-Data-Floorheader. - No key:
401.
Each request counts as one request against your plan's daily allowance, and limit goes up to 1,000 on every plan.
A request with no start, on Free:
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://api.xfinlink.com/v1/index/sp500/events?limit=4"x-data-floor: 2025-09-27{
"data": [
{
"entity_id": 10013573,
"ticker": "SOLS",
"entity_name": "Solstice Advanced Materials",
"index": "SP500",
"event_type": "added",
"effective_date": "2025-10-30",
"member_grain": "security"
},
{
"entity_id": 10029916,
"ticker": "KMX",
"entity_name": "CARMAX INC",
"index": "SP500",
"event_type": "removed",
"effective_date": "2025-10-30",
"member_grain": "security"
},
...
],
"meta": {
"index": "SP500",
"event_coverage_start": "1925-12-31",
"entity_id_grain": "security",
"coverage_end": "2026-09-26",
"data_floor": "2025-09-27",
"count": 4,
"total": 46,
"has_more": true,
...
}
}The same request on Pro:
{
"data": [
{
"entity_id": 10000636,
"ticker": "BU",
"entity_name": "KEYSPAN ENERGY CORP",
"index": "SP500",
"event_type": "added",
"effective_date": "1928-08-24",
"member_grain": "security",
"ticker_basis": "first_known"
},
{
"entity_id": 10037376,
"ticker": null,
"entity_name": "BROOKLYN EDISON INC",
"index": "SP500",
"event_type": "removed",
"effective_date": "1928-08-24",
"member_grain": "security"
},
...
],
"meta": {
"index": "SP500",
"event_coverage_start": "1925-12-31",
"entity_id_grain": "security",
"coverage_end": "2026-09-26",
"data_floor": null,
"count": 4,
"total": 3608,
"has_more": true,
...
}
}The 2024 additions on Free, where the whole window ends before the floor:
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://api.xfinlink.com/v1/index/sp500/events?start=2024-01-01&end=2024-12-31&event_type=added"{
"data": [],
"meta": {
"index": "SP500",
"event_coverage_start": "1925-12-31",
"entity_id_grain": "security",
"coverage_end": "2026-09-26",
"data_floor": "2025-09-27",
"count": 0,
"total": 0,
"has_more": false,
"as_of": "2024-12-31",
...
},
"warnings": ["The Free plan covers the last year, from 2025-09-27. The requested window ends before that date, so it has no rows. Paid plans cover the full history: https://xfinlink.com/pricing"]
}The same request on Pro returns 17 additions:
{
"data": [
{
"entity_id": 10022537,
"ticker": "DECK",
"entity_name": "DECKERS OUTDOOR CORP",
"index": "SP500",
"event_type": "added",
"effective_date": "2024-03-18",
"member_grain": "security"
},
{
"entity_id": 10032096,
"ticker": "SMCI",
"entity_name": "SUPER MICRO COMPUTER INC",
"index": "SP500",
"event_type": "added",
"effective_date": "2024-03-18",
"member_grain": "security"
},
{
"entity_id": 10012108,
"ticker": "SOLV",
"entity_name": "SOLVENTUM CORP",
"index": "SP500",
"event_type": "added",
"effective_date": "2024-04-01",
"member_grain": "security"
},
{
"entity_id": 10012109,
"ticker": "GEV",
"entity_name": "G E VERNOVA INC",
"index": "SP500",
"event_type": "added",
"effective_date": "2024-04-02",
"member_grain": "security"
},
{
"entity_id": 10005291,
"ticker": "VST",
"entity_name": "VISTRA CORP",
"index": "SP500",
"event_type": "added",
"effective_date": "2024-05-08",
"member_grain": "security"
},
...
],
"meta": {
"index": "SP500",
"event_coverage_start": "1925-12-31",
"coverage_end": "2026-09-26",
"data_floor": null,
"count": 17,
"total": 17,
"has_more": false,
"as_of": "2024-12-31",
...
}
}Edge cases
Most examples in this section read dates more than 12 months back. Paid plans return these events; on Free, the same requests return only the events inside the one-year window described under Plan differences.
Additions paired with removals
An index change often removes one member and adds another. Removals carry the last day in and additions the first day in, so the two sides of one change can carry different dates. In the S&P 500 change of June 2024, Comerica, Illumina and Robert Half left with effective_date 2024-06-21 and CrowdStrike, GoDaddy and KKR joined on 2024-06-24. In September 2026, three members left with effective_date 2026-09-18 and three joined on 2026-09-21 (see Request examples).
Removals after a merger
When a member leaves because it merged, the event log records the removal, and Resolve records the corporate successor. Raytheon Company (RTN) left the S&P 500 with effective_date 2020-04-03, when Carrier and Otis joined:
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://api.xfinlink.com/v1/index/sp500/events?start=2020-03-30&end=2020-04-06"{
"data": [
{
"entity_id": 10007353,
"ticker": "CARR",
"entity_name": "CARRIER GLOBAL CORP",
"index": "SP500",
"event_type": "added",
"effective_date": "2020-04-03",
"member_grain": "security"
},
{
"entity_id": 10007354,
"ticker": "OTIS",
"entity_name": "OTIS WORLDWIDE CORP",
"index": "SP500",
"event_type": "added",
"effective_date": "2020-04-03",
"member_grain": "security"
},
{
"entity_id": 10020888,
"ticker": "M",
"entity_name": "MACYS INC",
"index": "SP500",
"event_type": "removed",
"effective_date": "2020-04-03",
"member_grain": "security"
},
{
"entity_id": 10012171,
"ticker": "RTN",
"entity_name": "RAYTHEON CO",
"index": "SP500",
"event_type": "removed",
"effective_date": "2020-04-03",
"member_grain": "security"
}
],
"meta": {
"index": "SP500",
"event_coverage_start": "1925-12-31",
"coverage_end": "2026-09-26",
"data_floor": null,
"count": 4,
"total": 4,
"has_more": false,
"as_of": "2020-04-06",
...
}
}/v1/resolve/RTN?date=2019-06-03&include=events lists R T X CORP (company entity_id 7749) as Raytheon's successor through a merger dated 2020-04-02.
Members that rejoin
A member can leave and rejoin, and each change is its own event with the same entity_id. Illumina (10029052) was removed with effective_date 2024-06-21 and added again on 2026-09-21:
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://api.xfinlink.com/v1/index/sp500/events?start=2026-09-01&end=2026-12-31"{
"data": [
{
"entity_id": 10031004,
"ticker": "BLDR",
"entity_name": "BUILDERS FIRSTSOURCE INC",
"index": "SP500",
"event_type": "removed",
"effective_date": "2026-09-18",
"member_grain": "security"
},
{
"entity_id": 10017044,
"ticker": "TAP",
"entity_name": "MOLSON COORS BEVERAGE CO",
"index": "SP500",
"event_type": "removed",
"effective_date": "2026-09-18",
"member_grain": "security"
},
{
"entity_id": 10004997,
"ticker": "TTD",
"entity_name": "Trade Desk (The)",
"index": "SP500",
"event_type": "removed",
"effective_date": "2026-09-18",
"member_grain": "security"
},
{
"entity_id": 10006277,
"ticker": "BE",
"entity_name": "Bloom Energy",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
},
{
"entity_id": 10004612,
"ticker": "P",
"entity_name": "Everpure",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
},
{
"entity_id": 10029052,
"ticker": "ILMN",
"entity_name": "Illumina, Inc.",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
}
],
"meta": {
"index": "SP500",
"event_coverage_start": "1925-12-31",
"coverage_end": "2026-09-26",
"data_floor": null,
"count": 6,
"total": 6,
"has_more": false,
"as_of": "2026-12-31",
...
}
}Coverage start and the founding roster
Members already in the index when its record opens form the founding roster. Their entry is not an event, so additions start after event_coverage_start; removals are always returned. The first events of each index:
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://api.xfinlink.com/v1/index/sp500/events?limit=3"{
"data": [
{
"entity_id": 10000636,
"ticker": "BU",
"entity_name": "KEYSPAN ENERGY CORP",
"index": "SP500",
"event_type": "added",
"effective_date": "1928-08-24",
"member_grain": "security",
"ticker_basis": "first_known"
},
{
"entity_id": 10037376,
"ticker": null,
"entity_name": "BROOKLYN EDISON INC",
"index": "SP500",
"event_type": "removed",
"effective_date": "1928-08-24",
"member_grain": "security"
},
{
"entity_id": 10037571,
"ticker": null,
"entity_name": "DODGE BROS INC",
"index": "SP500",
"event_type": "removed",
"effective_date": "1928-11-23",
"member_grain": "security"
}
],
"meta": {
"index": "SP500",
"event_coverage_start": "1925-12-31",
"coverage_end": "2026-09-26",
"data_floor": null,
"count": 3,
"total": 3608,
"has_more": true,
...
}
}/v1/index/djia/events?limit=3:
{
"data": [
{
"entity_id": 10003589,
"ticker": "CHV",
"entity_name": "CHEVRON CORP",
"index": "DJIA",
"event_type": "removed",
"effective_date": "1999-10-31",
"member_grain": "security"
},
{
"entity_id": 10005058,
"ticker": "GT",
"entity_name": "GOODYEAR TIRE & RUBBER CO",
"index": "DJIA",
"event_type": "removed",
"effective_date": "1999-10-31",
"member_grain": "security"
},
{
"entity_id": 10003399,
"ticker": "S",
"entity_name": "SEARS ROEBUCK & CO",
"index": "DJIA",
"event_type": "removed",
"effective_date": "1999-10-31",
"member_grain": "security"
}
],
"meta": {
"index": "DJIA",
"event_coverage_start": "1999-10-31",
"coverage_end": "2026-09-26",
"data_floor": null,
"count": 3,
"total": 56,
"has_more": true,
...
}
}/v1/index/ndx100/events?limit=3:
{
"data": [
{
"entity_id": 10013911,
"ticker": "DOLR",
"entity_name": "DOLLAR GENERAL CORP",
"index": "NDX100",
"event_type": "removed",
"effective_date": "1995-01-26",
"member_grain": "security"
},
...
],
"meta": {
"index": "NDX100",
"event_coverage_start": "1995-01-01",
"coverage_end": "2026-09-26",
"data_floor": null,
"count": 3,
"total": 844,
"has_more": true,
...
}
}SP500: the record opens on 1925-12-31; the first event is dated 1928-08-24.NDX100: the record opens on 1995-01-01; the first event is dated 1995-01-26.DJIA: the record opens on 1999-10-31; the first events are removals dated 1999-10-31.
A start before the record opens returns events from the first one onward:
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://api.xfinlink.com/v1/index/sp500/events?start=1900-01-01&end=1928-12-31"{
"data": [
{
"entity_id": 10000636,
"ticker": "BU",
"entity_name": "KEYSPAN ENERGY CORP",
"index": "SP500",
"event_type": "added",
"effective_date": "1928-08-24",
"member_grain": "security",
"ticker_basis": "first_known"
},
{
"entity_id": 10037376,
"ticker": null,
"entity_name": "BROOKLYN EDISON INC",
"index": "SP500",
"event_type": "removed",
"effective_date": "1928-08-24",
"member_grain": "security"
},
{
"entity_id": 10037571,
"ticker": null,
"entity_name": "DODGE BROS INC",
"index": "SP500",
"event_type": "removed",
"effective_date": "1928-11-23",
"member_grain": "security"
},
{
"entity_id": 10000976,
"ticker": "C",
"entity_name": "CHRYSLER CORP",
"index": "SP500",
"event_type": "added",
"effective_date": "1928-11-26",
"member_grain": "security",
"ticker_basis": "first_known"
}
],
"meta": {
"index": "SP500",
"event_coverage_start": "1925-12-31",
"coverage_end": "2026-09-26",
"data_floor": null,
"count": 4,
"total": 4,
"has_more": false,
"as_of": "1928-12-31",
...
}
}Requests past coverage
For djia and ndx100, an end after coverage_end returns 400 (see Errors). Without end, the log runs to the newest event on record and is never refused, even when start is after coverage_end:
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://api.xfinlink.com/v1/index/djia/events?start=2026-01-01"{
"data": [
{
"entity_id": 10017902,
"ticker": "VZ",
"entity_name": "VERIZON COMMUNICATIONS INC",
"index": "DJIA",
"event_type": "removed",
"effective_date": "2026-06-28",
"member_grain": "security"
},
{
"entity_id": 10030636,
"ticker": "GOOGL",
"entity_name": "ALPHABET INC",
"index": "DJIA",
"event_type": "added",
"effective_date": "2026-06-29",
"member_grain": "security"
}
],
"meta": {
"index": "DJIA",
"event_coverage_start": "1999-10-31",
"coverage_end": "2026-09-26",
"data_floor": null,
"count": 2,
"total": 2,
"has_more": false,
...
}
}curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://api.xfinlink.com/v1/index/djia/events?start=2026-10-01"{
"data": [],
"meta": {
"index": "DJIA",
"event_coverage_start": "1999-10-31",
"coverage_end": "2026-09-26",
"data_floor": null,
"count": 0,
"total": 0,
"has_more": false,
...
}
}For sp500, an end after coverage_end is served; the Illumina request above uses end=2026-12-31.
Labels, unlinked members and reversed windows
Each row carries the ticker and name recorded for that membership, not a modern one, so early rows can show a null ticker or ticker_basis: "first_known". A member not linked to an entity has a null entity_id, and its ticker and entity_name carry what is recorded for the membership, which can be null. A start later than end returns 400 (/v1/index/sp500/events?start=2024-12-31&end=2024-01-01):
{"error": "bad_request", "code": "bad_request", "status": 400, "detail": "end (2024-01-01) is before start (2024-12-31)"}Request examples
The S&P 500 changes of 18 to 21 September 2026. The Python client returns a pandas.DataFrame of the rows.
import xfinlink as xfl
xfl.set_api_key("YOUR_API_KEY")
df = xfl.index_events("sp500", start="2026-09-17", end="2026-09-22")
print(df[["entity_id", "ticker", "entity_name", "event_type", "effective_date"]].to_string(index=False))curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://api.xfinlink.com/v1/index/sp500/events?start=2026-09-17&end=2026-09-22"Which companies joined or left the S&P 500 between 17 and 22 September 2026? entity_id ticker entity_name event_type effective_date
10031004 BLDR BUILDERS FIRSTSOURCE INC removed 2026-09-18
10017044 TAP MOLSON COORS BEVERAGE CO removed 2026-09-18
10004997 TTD Trade Desk (The) removed 2026-09-18
10006277 BE Bloom Energy added 2026-09-21
10004612 P Everpure added 2026-09-21
10029052 ILMN Illumina, Inc. added 2026-09-21{
"data": [
{
"entity_id": 10031004,
"ticker": "BLDR",
"entity_name": "BUILDERS FIRSTSOURCE INC",
"index": "SP500",
"event_type": "removed",
"effective_date": "2026-09-18",
"member_grain": "security"
},
{
"entity_id": 10017044,
"ticker": "TAP",
"entity_name": "MOLSON COORS BEVERAGE CO",
"index": "SP500",
"event_type": "removed",
"effective_date": "2026-09-18",
"member_grain": "security"
},
{
"entity_id": 10004997,
"ticker": "TTD",
"entity_name": "Trade Desk (The)",
"index": "SP500",
"event_type": "removed",
"effective_date": "2026-09-18",
"member_grain": "security"
},
{
"entity_id": 10006277,
"ticker": "BE",
"entity_name": "Bloom Energy",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
},
{
"entity_id": 10004612,
"ticker": "P",
"entity_name": "Everpure",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
},
{
"entity_id": 10029052,
"ticker": "ILMN",
"entity_name": "Illumina, Inc.",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
}
],
"meta": {
"index": "SP500",
"event_coverage_start": "1925-12-31",
"entity_id_grain": "security",
"coverage_end": "2026-09-29",
"data_floor": null,
"count": 6,
"total": 6,
"has_more": false,
"knowledge_time": "2026-09-29T18:57:20Z",
"as_of": "2026-09-22",
"freshness": [
{
"dataset": "index_membership",
"through": "2026-09-29",
"promoted_at": "2026-09-29T19:45:53Z"
}
]
}
}{"tool": "get_index_events", "arguments": {"index_name": "sp500", "start": "2026-09-17", "end": "2026-09-22"}}
{
"data": [
{
"entity_id": 10031004,
"ticker": "BLDR",
"entity_name": "BUILDERS FIRSTSOURCE INC",
"index": "SP500",
"event_type": "removed",
"effective_date": "2026-09-18",
"member_grain": "security"
},
{
"entity_id": 10017044,
"ticker": "TAP",
"entity_name": "MOLSON COORS BEVERAGE CO",
"index": "SP500",
"event_type": "removed",
"effective_date": "2026-09-18",
"member_grain": "security"
},
{
"entity_id": 10004997,
"ticker": "TTD",
"entity_name": "Trade Desk (The)",
"index": "SP500",
"event_type": "removed",
"effective_date": "2026-09-18",
"member_grain": "security"
},
{
"entity_id": 10006277,
"ticker": "BE",
"entity_name": "Bloom Energy",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
},
{
"entity_id": 10004612,
"ticker": "P",
"entity_name": "Everpure",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
},
{
"entity_id": 10029052,
"ticker": "ILMN",
"entity_name": "Illumina, Inc.",
"index": "SP500",
"event_type": "added",
"effective_date": "2026-09-21",
"member_grain": "security"
}
],
"meta": {
"index": "SP500",
"event_coverage_start": "1925-12-31",
"entity_id_grain": "security",
"coverage_end": "2026-09-29",
"data_floor": null,
"count": 6,
"total": 6,
"has_more": false,
"knowledge_time": "2026-09-29T18:57:20Z",
"as_of": "2026-09-22",
"freshness": [
{
"dataset": "index_membership",
"through": "2026-09-29",
"promoted_at": "2026-09-29T19:45:53Z"
}
]
}
}Was this page helpful?
Thank you for helping improve xfinlink documentation.
- Need help? Get in touch.
- Building with an LLM? Read llms.txt.
- Using Claude or ChatGPT? Connect the MCP server.