The CBOE Indices Data API provides structured access to daily CBOE index data (European stocks) across multiple European and regional index families. Each index includes complete metadata such as region, index code, calculation date, closing level, divisor, and a full list of constituents with prices, weights, currency, and classification details.
This dataset enables accurate index reconstruction, point-in-time component analysis, and benchmark comparison for research and portfolio workflows. Coverage spans numerous regional index groups including Austria, Belgium, Germany, the Nordics, the UK, and other European markets.
Index Families: Austria, Belgium, Denmark, Europe, Eurozone, Finland, France, Germany, Ireland, Italy, Netherlands, Nordic region, Norway, Portugal, Spain, Sweden, Switzerland, UK, and Level-2 UK sector indices.
You will need to use two endpoints to access all CBOE index data: one to retrieve the list of available indices and another to get the full list of components for a selected index.
Quick jump:
CBOE Indices List API
Endpoint
https://eodhd.com/api/cboe/indices
Description
This endpoint returns the full list of CBOE indices available via EODHD, including:
- EODHD index identifier (id, type)
- CBOE index code
- Region (country / market)
- Latest feed type and date
- Latest close value and index divisor for that index
Use this endpoint when you need to:
- Discover which CBOE indices are supported
- Get their latest closing level and divisor
- Obtain the CBOE index_code needed for the detailed feed endpoint
Pagination is handled via the “links.next” field – if it is not null, call the URL provided there to get the next page.
Request Example
https://eodhd.com/api/cboe/indices?api_token=DEMO&fmt=json
curl --location "https://eodhd.com/api/cboe/indices?api_token=DEMO&fmt=json"
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://eodhd.com/api/cboe/indices?api_token=DEMO&fmt=json',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$data = curl_exec($curl);
curl_close($curl);
try {
$data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
var_dump($data);
} catch (Exception $e) {
echo 'Error. '.$e->getMessage();
}
import requests
url = f'https://eodhd.com/api/cboe/indices?api_token=DEMO&fmt=json'
data = requests.get(url).json()
print(data)
library(httr)
library(jsonlite)
url <- 'https://eodhd.com/api/cboe/indices?api_token=DEMO&fmt=json'
response <- GET(url)
if (http_type(response) == "application/json") {
content <- content(response, "text", encoding = "UTF-8")
cat(content)
} else {
cat("Error while receiving data\n")
}
Try it now (it's free)!
How to use it (YouTube)
| Parameter | Required | Type | Description |
|---|---|---|---|
| api_token | Yes | string | Your EODHD API key. |
Note: Pagination is controlled via the “links.next” field in the response. You don’t need to construct pagination parameters manually – just follow the URL in “links.next” until it becomes null.
Output Format
...
{
"id": "BAT20P",
"type": "cboe-index",
"attributes": {
"region": "Austria",
"index_code": "BAT20P",
"feed_type": "snapshot_official_closing",
"date": "2017-04-12",
"index_close": 10549.68,
"index_divisor": 4269150.786625
}
},
{
"id": "BDE30P",
"type": "cboe-index",
"attributes": {
"region": "Germany",
"index_code": "BDE30P",
"feed_type": "snapshot_official_closing",
"date": "2017-02-01",
"index_close": 13915.57,
"index_divisor": 68033376.886244
}
},
{
"id": "BDES50N",
"type": "cboe-index",
"attributes": {
"region": "Germany",
"index_code": "BDES50N",
"feed_type": "snapshot_official_closing",
"date": "2017-02-01",
"index_close": 20143.79,
"index_divisor": 2246357.472101
}
...
Fields
| Field | Type | Description |
|---|---|---|
| meta.total | integer | Total number of index records returned in this response. |
| data | array | List of CBOE index entries. |
| data[].id | string | EODHD index identifier (often same as index_code). |
| data[].type | string | Resource type, always cboe-index. |
| data[].attributes.region | string | Country / region of the index (e.g., Austria, UK). |
| data[].attributes.index_code | string | CBOE code of the index (e.g., BAT20N, BUKUTLN). |
| data[].attributes.feed_type | string | Type of the latest CBOE feed (e.g., snapshot_official_closing). |
| data[].attributes.date | string (YYYY-MM-DD) | Date of the latest feed used for this summary. |
| data[].attributes.index_close | number | Latest close value of the index. |
| data[].attributes.index_divisor | number | Divisor value for the index on that date. |
| links.next | string or null | URL to fetch the next page of results, or null if there is no next page. |
2. CBOE Index Feed API
Endpoint
https://eodhd.com/api/cboe/index
Description
This endpoint returns detailed feed data for a single CBOE index on a specific date and feed type, including:
- Index-level information (region, close, divisor, etc.)
- Full component breakdown (ticker, ISIN, country, market cap, FX factors, index weights, etc.)
Use it when you need:
- Index composition on a given date
- Official / pro-forma closing values
- Detailed weights and share counts for each constituent
Request Example
https://eodhd.com/api/cboe/index?filter[index_code]=BDE30P&filter[feed_type]=snapshot_official_closing&filter[date]=2017-02-01&api_token=YOUR_API_KEY&fmt=json
curl --location "https://eodhd.com/api/cboe/index?filter[index_code]=BDE30P&filter[feed_type]=snapshot_official_closing&filter[date]=2017-02-01&api_token=YOUR_API_KEY&fmt=json"
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://eodhd.com/api/cboe/index?filter[index_code]=BDE30P&filter[feed_type]=snapshot_official_closing&filter[date]=2017-02-01&api_token=YOUR_API_KEY&fmt=json',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$data = curl_exec($curl);
curl_close($curl);
try {
$data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
var_dump($data);
} catch (Exception $e) {
echo 'Error. '.$e->getMessage();
}
import requests url = f'https://eodhd.com/api/cboe/index?filter[index_code]=BDE30P&filter[feed_type]=snapshot_official_closing&filter[date]=2017-02-01&api_token=YOUR_API_KEY&fmt=json' data = requests.get(url).json() print(data)
library(httr) library(jsonlite) url <- 'https://eodhd.com/api/cboe/index?filter[index_code]=BDE30P&filter[feed_type]=snapshot_official_closing&filter[date]=2017-02-01&api_token=YOUR_API_KEY&fmt=json' response <- GET(url) if (http_type(response) == "application/json") { content <- content(response, "text", encoding = "UTF-8") cat(content) } else { cat("Error while receiving data\n") }
Try it now (it's free)!
How to use it (YouTube)
You can change:
- index_code – to any supported CBOE index code
- feed_type – to available feed types (e.g., official closing, snapshot feeds, etc.)
- date – to the target trading date (YYYY-MM-DD)
Parameters
All filter parameters are passed as filter[…] query parameters (deep object style).
| Parameter | Required | Type | Description |
|---|---|---|---|
| filter[index_code] | Yes | string | CBOE index code (e.g., BAT20N). |
| filter[feed_type] | Yes | string | CBOE feed type for this index (e.g., snapshot_pro_forma_closing). |
| filter[date] | Yes | string (YYYY-MM-DD) | Date of the index feed. |
| api_token | Yes | string | Your EODHD API key. |
| fmt | No | string | Response format: json or xml. Default is json. |
Output Response Example
{
"meta": {
"total": 1
},
"data": [
{
"id": "BDE30P-2017-02-01-snapshot_official_closing",
"type": "cboe-index",
"attributes": {
"region": "Germany",
"index_code": "BDE30P",
"feed_type": "snapshot_official_closing",
"date": "2017-02-01",
"index_close": 13915.57,
"index_divisor": 68033376.886244,
"effective_date": null,
"review_date": null
},
"components": [
{
"id": "BDE30P-2017-02-01-snapshot_official_closing-HEI.DU",
"type": "cboe-index-component",
"attributes": {
"symbol": "HEI.DU",
"isin": "DE0006047004",
"name": "HEIDELBERGCEMENT AG",
"equity": "HEIG IX Equity",
"sedol": null,
"cusip": "HEId",
"country": "GERMANY",
"revenue_country": null,
"closing_price": 90.15,
"currency": "EUR",
"closing_factor": 1,
"total_shares": 198416477,
"market_cap": 17887245401.55,
"market_cap_free_float": 12878816689.116,
"free_float_factor": 0.72,
"weighting_cap_factor": 1,
"index_weighting": 1.360357,
"index_shares": 2.09985,
"index_value": 189.301447,
"sector": "Non-Energy Materials"
}
},
{
"id": "BDE30P-2017-02-01-snapshot_official_closing-SIE.DU",
"type": "cboe-index-component",
"attributes": {
"symbol": "SIE.DU",
"isin": "DE0007236101",
"name": "SIEMENS AG",
"equity": "SIED IX Equity",
"sedol": null,
"cusip": "SIEd",
"country": "GERMANY",
"revenue_country": null,
"closing_price": 122.4,
"currency": "EUR",
"closing_factor": 1,
"total_shares": 808278318,
"market_cap": 98933266123.20001,
"market_cap_free_float": 93986602817.04001,
"free_float_factor": 0.95,
"weighting_cap_factor": 1,
"index_weighting": 9.927568,
"index_shares": 11.286584,
"index_value": 1381.477844,
"sector": "Industrials"
}
Fields – index level
| Field | Type | Description |
|---|---|---|
| meta.total | integer | Number of index feed items in data (usually 1). |
| data | array | List of index feeds matching your filter. |
| data[].id | string | EODHD index feed identifier (e.g., BAT20N-2023-03-16-snapshot_pro_forma_closing). |
| data[].type | string | Resource type, always cboe-index. |
| data[].attributes.region | string | Region of the index (e.g., Austria). |
| data[].attributes.index_code | string | CBOE index code. |
| data[].attributes.feed_type | string | Feed type (snapshot_official_closing, snapshot_pro_forma_closing, etc.). |
| data[].attributes.date | string (YYYY-MM-DD) | Date of this index feed. |
| data[].attributes.index_close | number | Index close value for this feed. |
| data[].attributes.index_divisor | number | Index divisor for this feed. |
Fields – components (index composition)
| Field | Type | Description |
|---|---|---|
| data[].components | array | List of index components (constituents). |
| components[].id | string | EODHD identifier for the component (combination of index/date/symbol). |
| components[].type | string | Resource type, e.g., cboe-index-component. |
| components[].attributes.symbol | string | Trading symbol (ticker), often with exchange suffix (e.g., ATS.VI). |
| components[].attributes.isin | string | ISIN identifier. |
| components[].attributes.name | string | Company name. |
| components[].attributes.equity | string | Equity identifier / description. |
| components[].attributes.sedol | string or null | SEDOL code (if available). |
| components[].attributes.cusip | string | CUSIP code. |
| components[].attributes.country | string | Country of the issuer. |
| components[].attributes.revenue_country | string or null | Country based on revenue (if provided). |
| components[].attributes.closing_price | number | Closing price used in index calculation. |
| components[].attributes.currency | string | Currency of the security (e.g., EUR). |
| components[].attributes.closing_factor | number | FX factor / adjustment applied to closing price. |
| components[].attributes.total_shares | integer | Total number of shares outstanding. |
| components[].attributes.market_cap | number | Full market capitalization. |
| components[].attributes.market_cap_free_float | number | Free float market capitalization. |
| components[].attributes.free_float_factor | number | Free float factor applied to total shares. |
| components[].attributes.weighting_cap_factor | number | Weighting cap factor for this component. |
| components[].attributes.index_weighting | number | Weight in the index (percentage value). |
| components[].attributes.index_shares | number | Number of index shares allocated to this component. |
| components[].attributes.index_value | number | Contribution of this component to index value. |
| components[].attributes.sector | string | Sector classification. |