Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Become a customer
  • Contact Us
English (US)
FR French
BR Portuguese (Brazil)
JP Japanese
US English (US)
CN Chinese
ES Spanish
  • Home
  • Platform
  • APIs
  • API

Fastmarkets Analytics API

Discover how to leverage the Fastmarkets Analytics API for real-time data insights to enhance decision-making and boost efficiency.

Written by Eleonora Lebedeva

Updated at October 12th, 2026

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Platform
    Dashboard Excel Add-In Mobile apps APIs
  • Log in
  • Training
  • Events
  • Prices and methodology
    Glossaries
  • MyDesk
    Getting Started with MyDesk Using MyDesk MyDesk advanced widgets Data available in MyDesk Troubleshooting
  • Administration
    Manage users Billing and invoices Banking and vendor registration
  • Contact us
+ More

Table of Contents

Analytics API API technical documentation Authenticating Retrieving the latest forecast Retrieving forecast versions Retrieving metadata Get metadata versions Retrieving single/multiple fundamental data values Retrieving a range of fundamental data values

Analytics API

The Analytics API delivers Fastmarkets analytical content, including forecast values, forecast version history, fundamental data, and associated instrument metadata. All data is linked to a unique symbol that serves as the primary identifier within the API.

API technical documentation

For more on the specification of this API and to try it out, please refer to the API’s documentation page (Swagger)

You can try running real API calls there using your Fastmarkets Platform credentials. Ask Fastmarkets team to provide your account with Swagger access.

Authenticating

All Fastmarkets APIs require a valid Access Token to retrieve permissioned data. To generate an Access Token, please refer to the Authentication API guide with the scope: fastmarkets.analytics.api.

The token is then added to an Authorization header parameter using the ‘Bearer’ prefix. For example:

Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdjZTkyOTQ4NDk0ODRkMDM4YzQ

Retrieving the latest forecast

To return the most recently available forecast dataset for a specific instrument, the Forecast endpoint is used. In this example, the symbol ‘MB-AL-0004.F24M’ is used to return the latest available price data for monthly forecast of Aluminium P1020A, in-warehouse Rotterdam duty-paid, spot $/tonne’ as of 7th March 2026, filtered by target date.

In the response, set of the latest forecast prices values of low, mid and high price values are returned for the 7th of March 2026, as this was the most recent forecast available for the specified date.

Example Request (Python):

GET https://api.fastmarkets.com/Analytics/v1/Forecast HTTP/1.1
Host: api.fastmarkets.com
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdjZTkyOTQ4NDk0ODRkMDM4YzQ

Symbols=MB-AL-0004.F24M&FromForecastTargetDate=2027-04-01&ToForecastTargetDate=2028-01-01
url = "https://api.fastmarkets.com/Analytics/v1/Forecast"
query = {
	'symbols':'MB-AL-0004.F24M', 
	'FromForecastTargetDate':'2027-04-01',
	'ToForecastTargetDate':'2028-01-01'
	}
headers = {
	'Authorization': 'Bearer ' + accessToken.access_token,
	'cache-control': 'no-cache'
	}
req = requests.request("GET", url, headers=headers, data = query)
singlePrice = json.loads(req.content)

Example Response (JSON):

{
    "forecast": [
        {
            "symbol": "MB-AL-0004.F24M",
            "version": 62,
            "publicationDate": "2026-07-31T00:00:00.0000000+00:00",
            "forecastType": "Regular",
            "forecastPrices": [
                {
                    "date": "2027-04-01",
                    "low": 2741.0,
                    "mid": 2741.0,
                    "high": 2741.0
                },
                . . .
                {
                    "date": "2028-01-01",
                    "low": 301.0,
                    "mid": 301.0,
                    "high": 301.0
                }
            ]
        }
    ]
}

If no value for the FromForecastTargetDate and ToForecastTargetDate parameters are included in the request, then the whole forecast set is returned. A value for the Symbols parameter is always required.

Retrieving forecast versions

To retrieve all historical values for a given forecasted market, the Forecast/Versions endpoint is used. It returns a time series of versioned forecast history data for specified symbol(s) and a specified date range.

Example Request (Python):

GET https://api.fastmarkets.com/Analytics/v1/Forecast/Versions HTTP/1.1
Host: api.fastmarkets.com
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdjZTkyOTQ4NDk0ODRkMDM4YzQ

Symbols=MB-AL-0004.F24M&fromDate=2026-06-04&toDate=2028-06-04
url = "https://api.fastmarkets.com/Analytics/v1/Forecast/Versions"
query = {
	'symbols':'MB-AL-0004.F24M', 
	'fromDate':'2026-06-04',
	'toDate':'2028-06-04'
	}
headers = {
	'Authorization': 'Bearer ' + accessToken.access_token,
	'cache-control': 'no-cache'
	}
req = requests.request("GET", url, headers=headers, data = query)
singlePrice = json.loads(req.content)

Example Response (JSON):

{
    "data": [
        {
            "symbol": "MB-AL-0004.F24M",
            "versions": [
                {
                    "version": "82",
                    "forecastPublicationDate": "2026-07-03T01:00:00.0000000+01:00",
                    "rows": [
                        {
                            "assessmentDate": "2022-01-01T00:00:00+00:00",
                            "low": 443.7,
                            "mid": 443.7,
                            "high": 443.7
                        },
                        . . .
                        {
                            "assessmentDate": "2028-06-01T00:00:00+00:00",
                            "low": 315.0,
                            "mid": 315.0,
                            "high": 315.0
                        }
                    ]
                },
                . . .
                {
                    "version": "120",
                    "forecastAssessmentType": "Regular",
                    "forecastPublicationDate": "2026-07-31T00:00:00.0000000+00:00",
                    "forecastVersion": 1,
                    "rows": [
                        {
                            "assessmentDate": "2028-02-01T00:00:00+00:00",
                            "low": 112.0,
                            "mid": 112.0,
                            "high": 112.0
                        },
                       . . .
                        {
                            "assessmentDate": "2028-06-01T00:00:00+00:00",
                            "low": 255.0,
                            "mid": 255.0,
                            "high": 255.0
                        }
                    ]
                }
            ]
        }
    ]
}

If no value for the FromDate and TotDate parameters are included in the request, then the whole forecast history is returned. A value for the Symbols parameter is always required.

The ForecastTargetDate parameter filters the response to a single forecast period and returns the corresponding value from each available forecast version. This is useful for analysing forecast revisions over time, like in the example below:

Example Request (Python):

GET https://api.fastmarkets.com/Analytics/v1/Forecast/Versions HTTP/1.1
Host: api.fastmarkets.com
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdjZTkyOTQ4NDk0ODRkMDM4YzQ

Symbols=MB-AL-0004.F24M&fromDate=2026-06-04&toDate=2028-06-04&ForecastTargetDate=2027-01-01
url = "https://api.fastmarkets.com/Analytics/v1/Forecast/Versions"
query = {
	'symbols':'MB-AL-0004.F24M', 
	'fromDate':'2026-06-04',
	'toDate':'2028-06-04',
	'forecastTargetDate':'2027-01-01'
	}
headers = {
	'Authorization': 'Bearer ' + accessToken.access_token,
	'cache-control': 'no-cache'
	}
req = requests.request("GET", url, headers=headers, data = query)
singlePrice = json.loads(req.content)

Example Response (JSON):

{
    "data": [
        {
            "symbol": "MB-AL-0004.F24M",
            "versions": [
                {
                    "version": "82",
                    "forecastPublicationDate": "2026-07-03T01:00:00.0000000+01:00",
                    "rows": [
                        {
                            "assessmentDate": "2027-01-01T00:00:00+00:00",
                            "low": 425.0,
                            "mid": 425.0,
                            "high": 425.0
                        }
                    ]
                },
                {
                    "version": "83",
                    "forecastPublicationDate": "2026-08-04T01:00:00.0000000+01:00",
                    "rows": [
                        {
                            "assessmentDate": "2027-01-01T00:00:00+00:00",
                            "low": 490.0,
                            "mid": 490.0,
                            "high": 490.0
                        }
                    ]
                },
                . . .
                {
                    "version": "99",
                    "forecastAssessmentType": "Revision",
                    "forecastRationale": "Correction",
                    "forecastPublicationDate": "2026-07-07T00:00:00.0000000+00:00",
                    "forecastVersion": 2,
                    "rows": [
                        {
                            "assessmentDate": "2027-01-01T00:00:00+00:00",
                            "low": 200.0,
                            "mid": 200.0,
                            "high": 200.0
                        }
                    ]
                }
            ]
        }
    ]
}

The assessed forecast version contain embedded metadata in each record, described below:

Field Description Possible Values
version Unique identifier of the forecast set. Forecasts with different version values represent separate forecast publications. Numeric version identifier
forecastVersion Revision number of the same forecast set. A new forecast version is created when a forecast is corrected or republished for the same publication period and forecast date range. Numeric version identifier
forecastType Indicates whether the forecast version is part of the regular publication cycle or a subsequent revision. Regular, Revision
forecastRationale The reason why a forecast version was created or updated. This is particularly useful when reviewing revisions to previously published forecasts. Market Movement, Correction, Other

Retrieving metadata

All analytical data relate to an associated instrument. The instrument consists of various attributes, all of which are available to view using the MetaData endpoint.

If no input parameters are provided, all instruments that the calling service are entitled to see are returned. The Symbols input parameter can be used return specific instruments (see example).

Example Request (Python):

GET https://api.fastmarkets.com/Analytics/v1/MetaData HTTP/1.1
Host: api.fastmarkets.com
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdjZTkyOTQ4NDk0ODRkMDM4YzQ

Symbols=MB-AL-0002.F24M,AG-BRY-0008.F24M,BA-CI-CATL_PR_LFP_CAM_NI
url = "https://api.fastmarkets.com/Analytics/v1/MetaData"

query  = {'symbols':'MB-AL-0002.F24M,AG-BRY-0008.F24M,BA-CI-CATL_PR_LFP_CAM_NI'}
headers = {
     'Authorization': 'Bearer ' + accessToken.access_token, 
     'cache-control': 'no-cache'
}
req = requests.request("GET", url, headers=headers, data = query)
instrumentMetadata = json.loads(req.content)

Example Response (JSON):

{
    "metadata": [
        {
            "symbol": "MB-AL-0002.F24M",
            "parentSymbol": "MB-AL-0002",
            "shortDesc": "Aluminium 6063 extrusion billet premium, in-whs dp Rotterdam,  $/tonne",
            "desc": "Aluminium 6063 extrusion billet premium, in-whs dp Rotterdam,  $/tonne",
            "type": "Forecast",
            "currency": "USD",
            "unitOfMeasure": "Tonne",
            "division": "Metal Bulletin",
            "item": "Aluminum 6063 Extrusion Billet",
            "location": "Rotterdam",
            "frequency": "Weekly",
            "grade": "Aluminium",
            "publicationDate": "2026-08-11T15:16:37.6881701+00:00",
            "forecastUpdateFrequency": "Every month",
            "maxDecimalAllowed": 2
        },
        {
            "symbol": "AG-BRY-0008.F24M",
            "parentSymbol": "AG-BRY-0008",
            "shortDesc": "Barley Feed barley FOB France $/mt",
            "desc": "Barley Feed barley FOB France $/mt",
            "type": "Forecast",
            "currency": "USD",
            "unitOfMeasure": "Tonne",
            "division": "",
            "measure": "",
            "item": "",
            "location": "FRA",
            "location2": "",
            "frequency": "Daily",
            "publicationDate": "2026-08-11T15:39:58.0343175+00:00",
            "forecastUpdateFrequency": "Every week",
            "maxDecimalAllowed": 2
        },
        {
            "symbol": "BA-CI-CATL_PR_LFP_CAM_NI",
            "parentSymbol": "BA-CI-CATL_PR_LFP_CAM_NI",
            "shortDesc": "Cell 4: LFP CATL 160 Ah Prismatic CAM Ni",
            "desc": "Cell 4: LFP CATL 160 Ah Prismatic CAM Ni",
            "type": "Economic",
            "currency": "USD",
            "unitOfMeasure": "kWh",
            "division": "BRM",
            "measure": "Cost Index",
            "item": "Battery",
            "location": "CN",
            "frequency": "Monthly",
            "grade": "BRM",
            "publicationDate": "2025-11-26T15:47:48.2648068+00:00",
            "cell": "LFP CATL 160 Ah Prismatic",
            "category": "CAM Ni"
        }
    ]
}

Available forecast metadata fields:

Field Description Possible Values
firstPublishDate The date on which the forecast was first published. This field is populated when a new forecast series is launched. Date/time value
lastPublishDate The date on which the forecast was last published. For active forecasts, this field is typically blank. It is populated when a forecast is discontinued. Date/time value or null
status Indicates the current availability status of the forecast. Active, Discontinued, Suspended
frequency The frequency of the forecast values returned by the forecast series. This describes the forecast period itself rather than the update schedule. Examples: Monthly, Quarterly,  Yearly
forecastUpdateFrequency Indicates how often Fastmarkets analysts review and publish updates to the forecast series. This field is populated when a forecast is launched/revised Every month,  Every week
maxDecimalAllowed The maximum number of decimal places that may be returned for forecast values. Integer value
version The metadata version number for the forecast symbol. A new version is created when forecast metadata is modified. Numeric version identifier
versionRemark Additional notes describing the metadata version or changes introduced in that version. Free-text value

Get metadata versions

Metadata version history is available for analytics data through the MetaData/Versions endpoint. For the requested symbol, the response returns all available metadata versions within the specified date range. If no date range is provided, the full metadata history is returned.

Example Request (Python):

GET https://api.fastmarkets.com/Analytics/v1/MetaData/versions HTTP/1.1
Host: api.fastmarkets.com
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdjZTkyOTQ4NDk0ODRkMDM4YzQ

Symbols=MB-AL-0004.F24M
url = "https://api.fastmarkets.com/Analytics/v1/MetaData/versions"

query  = {'symbols':'MB-AL-0004.F24M'}
headers = {
     'Authorization': 'Bearer ' + accessToken.access_token, 
     'cache-control': 'no-cache'
}
req = requests.request("GET", url, headers=headers, data = query)
instrumentMetadata = json.loads(req.content)

Example Response (JSON):

{
    "items": [
        {
            "symbol": "MB-AL-0004.F24M",
            "versions": [
                {
                    "version": 3,
                    "status": "Available",
                    "asAt": "2026-06-18T08:48:51.1616936+00:00",
                    "createdAt": "2026-06-18T08:48:51.1616936+00:00",
                    "metadata": {
                        "symbol": "MB-AL-0004.F24M",
                        "parentSymbol": "MB-AL-0004",
                        "shortDesc": "Aluminium P1020A premium, in-whs dp Rotterdam, $/tonne",
                        "desc": "Aluminium P1020A premium, in-whs dp Rotterdam, $/tonne",
                        "type": "Forecast",
                        "currency": "USD",
                        "unitOfMeasure": "Tonne",
                        "division": "Metal Bulletin",
                        "measure": "",
                        "item": "",
                        "location": "",
                        "location2": "",
                        "frequency": "Monthly",
                        "version": "3",
                        "publicationDate": "0001-01-01T00:00:00+00:00",
                        "status": "Active",
                        "firstPublishDate": "2016-01-01T00:00:00+00:00",
                        "lastPublishDate": "2027-06-01T00:00:00+00:00",
                        "forecastUpdateFrequency": "Every month",
                        "maxDecimalAllowed": 2,
                        "versionRemark": "Initial Definition"
                    }
                },
                . . .
                {
                    "version": 0,
                    "status": "Available",
                    "asAt": "2021-10-03T01:48:26.2856684+01:00",
                    "createdAt": "2021-10-03T01:48:26.2856684+01:00",
                    "metadata": {
                        "symbol": "MB-AL-0004.F24M",
                        "parentSymbol": "MB-AL-0004",
                        "shortDesc": "Monthly forecast for MB-AL-0004",
                        "desc": "Monthly forecast for MB-AL-0004",
                        "type": "Forecast",
                        "currency": "USD",
                        "unitOfMeasure": "Tonne",
                        "publicationDate": "2016-01-01T00:00:00+00:00"
                    }
                }
            ]
        }
    ]
}

Retrieving single/multiple fundamental data values

To return the most recently available assessed value for a specific fundamental, the Data endpoint is used. In this example, the symbol ‘BA-CI-LG_PO_NCM_622_LAB’ is used to return the latest available price data for ‘Cell 1: NCM-622 LG 58 Ah Pouch Labour’.
In response, low, mid and high price values are returned for the 8th of October 2025, as this was the most recent assessment available for the specified date.

Example Request (Python):

GET https://api.fastmarkets.com/Analytics/v1/Data HTTP/1.1
Host: api.fastmarkets.com
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdjZTkyOTQ4NDk0ODRkMDM4YzQ

Symbols=BA-CI-LG_PO_NCM_622_LAB&Dates=2025-10-16
url = "https://api.fastmarkets.com/Analytics/v1/Data"
query = {
	'symbols':'BA-CI-LG_PO_NCM_622_LAB', 
	'Dates':'2025-10-16'
	}
headers = {
	'Authorization': 'Bearer ' + accessToken.access_token,
	'cache-control': 'no-cache'
	}
req = requests.request("GET", url, headers=headers, data = query)
singlePrice = json.loads(req.content)

Example Response (JSON):

{
    "data": [
        {
            "symbol": "BA-CI-LG_PO_NCM_622_LAB",
            "type": "Economic",
            "rows": [
                {
                    "assessmentDate": "2025-08-31T00:00:00+00:00",
                    "low": 0.58,
                    "mid": 0.58,
                    "high": 0.58
                }
            ]
        }
    ]
}

If no value for the Dates parameter is included in the request, then the most recent price data is returned. A value for the Symbols parameter is always required.

A single request can be used to retrieve data for multiple symbols and dates. In this example, the response returns the available values for each requested symbol for each specified assessment date:

Example Request (Python):

GET https://api.fastmarkets.com/Analytics/v1/Data HTTP/1.1
Host: api.fastmarkets.com
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdjZTkyOTQ4NDk0ODRkMDM4YzQ

Symbols=BA-CI-SDI_50G_NCA_87_CAM_NI,BA-CI-SDI_50G_NCA_87_CAM_LI,BA-CI-SDI_50G_NCA_87_CAM_FE&Dates=2019-03-02,2019-03-04
url = "https://api.fastmarkets.com/Analytics/v1/Data"
query = {
	'symbols':'BA-CI-SDI_50G_NCA_87_CAM_NI,BA-CI-SDI_50G_NCA_87_CAM_LI,BA-CI-SDI_50G_NCA_87_CAM_FE', 
	'Dates':'2019-03-02,2019-03-04'
	}
headers = {
	'Authorization': 'Bearer ' + accessToken.access_token,
	'cache-control': 'no-cache'
	}
req = requests.request("GET", url, headers=headers, data = query)
singlePrice = json.loads(req.content)

Example Response (JSON):

{
    "data": [
        {
            "symbol": "BA-CI-SDI_50G_NCA_87_CAM_NI",
            "type": "Economic",
            "rows": [
                {
                    "assessmentDate": "2025-08-31T00:00:00+00:00",
                    "low": 10.75,
                    "mid": 10.75,
                    "high": 10.75
                }
            ]
        },
        {
            "symbol": "BA-CI-SDI_50G_NCA_87_CAM_LI",
            "type": "Economic",
            "rows": [
                {
                    "assessmentDate": "2025-08-31T00:00:00+00:00",
                    "low": 4.92,
                    "mid": 4.92,
                    "high": 4.92
                }
            ]
        },
        {
            "symbol": "BA-CI-SDI_50G_NCA_87_CAM_FE",
            "type": "Economic",
            "rows": [
                {
                    "assessmentDate": "2025-08-31T00:00:00+00:00",
                    "low": 0.0,
                    "mid": 0.0,
                    "high": 0.0
                }
            ]
        }
    ]
}

Retrieving a range of fundamental data values

The Data/History endpoint provides access to historical data over a defined period. The example below requests data between 1 January 2023 and 11 November 2025. The response contains the available assessment values for the requested symbol and date range.

Example Request (Python):

GET https://api.fastmarkets.com/Analytics/v1/Data/History HTTP/1.1
Host: api.fastmarkets.com
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdjZTkyOTQ4NDk0ODRkMDM4YzQ

Symbols=BA-CI-SDI_50G_NCA_87_CAM_NI&FromDate=2023-01-01&ToDate=2025-11-11
url = "https://api.fastmarkets.com/Analytics/v1/Data/History"
query = {
	'symbols':'BA-CI-SDI_50G_NCA_87_CAM_NI', 
	'FromDate':'2023-01-01',
	'ToDate':'2025-11-11'
	}
headers = {
	'Authorization': 'Bearer ' + accessToken.access_token,
	'cache-control': 'no-cache'
	}
req = requests.request("GET", url, headers=headers, data = query)
singlePrice = json.loads(req.content)

Example Response (JSON):

{
    "data": [
        {
            "symbol": "BA-CI-SDI_50G_NCA_87_CAM_NI",
            "type": "Economic",
            "rows": [
                {
                    "assessmentDate": "2023-01-31T00:00:00+00:00",
                    "low": 16.98,
                    "mid": 16.98,
                    "high": 16.98
                },
                . . . 
                {
                    "assessmentDate": "2025-07-31T00:00:00+00:00",
                    "low": 10.23,
                    "mid": 10.23,
                    "high": 10.23
                },
                {
                    "assessmentDate": "2025-08-31T00:00:00+00:00",
                    "low": 10.75,
                    "mid": 10.75,
                    "high": 10.75
                }
            ]
        }
    ]
}
analytics interface market data api analytics api

Was this article helpful?

Yes
No
Give feedback about this article

Related Articles

  • Fastmarkets Physical Prices API
  • Fastmarkets Market Data API
  • Fastmarkets API Authentication overview

Copyright 2026 – Fastmarkets.

Knowledge Base Software powered by Helpjuice

Expand