Fastmarkets Physical Prices API
Table of Contents
Physical Price API
The Physical Prices API provides price values and associated instrument data for Fastmarkets assessed prices. All price values are associated to instruments which uses a symbol as an identifier.
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).
Authenticating
All Fastmarkets APIs require a valid Access Token to retrieve permissioned data. To generate an Access Token, please refer to the Fusion Authentication API section above. The token is then added to an Authorization header parameter using the ‘Bearer’ prefix. For example:
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdjZTkyOTQ4NDk0ODRkMDM4YzQ
Retrieving a single price
To return the most recently available assessed price for a specific instrument, the Prices endpoint is used. In this example, the symbol ‘MB-AL-0004’ is used to return the latest available price data for ‘Aluminium P1020A, in-warehouse Rotterdam duty-paid, spot $/tonne’ as of 2nd March 2019.
In the response, low, mid and high price values are returned for the 1st of March 2019, as this was the most recent assessment available for the specified date.
Example Request (Python):
url = "https://api.fastmarkets.com/Physical/v2/Prices"
query = {'symbols':'MB-AL-0004', 'dates':'2019-03-02'}
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):
{
"instruments": [
{
"firstDate": "1987-04-07T00:00:00+00:00",
"lastDate": "2019-05-21T15:00:00+00:00",
"prices": [
{
"date": "2019-03-02",
"assessmentDate": "2019-03-01T16:00:12+00:00",
"revision": 0,
"low": 130,
"mid": 135,
"high": 140
}
],
"symbol": "MB-AL-0004"
}
]
}
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.
Retrieving multiple prices
It is also possible to request prices for multiple instruments and multiple dates in single request using the Prices endpoint.
In the example request below, two different symbols and two different dates have been requested. In the result, there will be two price results for each of the two instruments.
Example Request (Python):
url = "https://api.fastmarkets.com/Physical/v2/Prices"
query = {
'symbols': ['MB-AL-0004', 'MB-AL-0006'],
'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)
multiplePrices = json.loads(req.content)
Example Response (JSON):
{
"instruments": [
{
"firstDate": "1987-04-07T00:00:00+00:00",
"lastDate": "2019-05-21T15:00:00+00:00",
"prices": [
{
"date": "2019-03-02",
"assessmentDate": "2019-03-01T16:00:12+00:00",
"revision": 0,
"low": 130,
"mid": 135,
"high": 140
},
{
"date": "2019-03-04",
"assessmentDate": "2019-03-01T16:00:12+00:00",
"revision": 0,
"low": 130,
"mid": 135,
"high": 140
}
Retrieving a range of prices
Using the Prices/History endpoint, it is possible to retrieve a series of prices over a specified period. In this example, a request is made over a seven-day period (between 20th Feb 2019 to 27th Feb 2019). The response returns prices in descending order of date.
Example Request (Python):

Example Response (JSON):

Retrieving average prices
Periodically, average prices for many Fastmarkets instruments are published. These are calculated values based on the underlying assessment prices over a period of a week, month or year.
Both the Prices and Prices History endpoints accept an input parameter called Price Calculation Type. There are several valid values for this parameter, the most common of which are:
- WeeklyAverage
- MonthlyAverage
- YearlyAverage
If no Price Calculation Type is specified, then the actual assessment value is returned.
NB: To find out what Price Calculation Types are available for a given instrument, use the Instrument endpoint (see section: Retrieving instruments data)
Example Request (Python):

Example Response (JSON):

Optional price data fields
When requesting price data, not all available data associated to a price is returned by default. This is by design to help reduce the size of the response if requesting a large quantity of records.
However, this additional data can be returned by using the Fields input parameter. Here is a list of the available optional fields that can be added to the request:
- appraisalPrice - Value representing whether undergoing an appraisal process at the point of assessment (Boolean)
- pricingRationale - Description of the rationale behind the assessment made by the Price Reporter (string)
- assessmentPeriod - Description of the assessment period when returning average price calculations types (string)
- lowChangeSincePrevious - Difference between low price value of previous assessment and low price value of this assessment (number)
- midChangeSincePrevious – (As above but for mid price value)
- highChangeSincePrevious – (As above but for high price value)
- lowChangeSincePreviousProportion - Difference between low price value of previous assessment and low price value of this assessment as a decimal value. 1 represents a change of 100%, -1 represents a change of -100% (number)
- midChangeSincePreviousProportion – (As above but for mid price value)
- highChangeSincePreviousProportion – (As above but for high price value)
Example Request (Python):

Retrieving instrument data
All physical prices relate to an associated instrument. The instrument consists of various attributes, all of which are available to view using the Instrument 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):

Example Response (JSON):
![{ "instruments": [ { "productId": "Broker 304 turnings", "description": "New York 304 turnings, broker buying, US cents per pound", "descriptionShort": "New York 304 turnings, broker buying, US c/lb", "commodityId": "STS", "priceType": "Price", "locationId": "USA-NY", "currencyId": "USd", "unitOfMeasureId": "Pound", "incotermId": "DLVD", "launchDate": "2015-10-20", "frequency": "Weekly", "sourceId": "AMM", "status": "Active", "priceCalculationTypeIds": [ "WeeklyAverage", "MonthlyAverage", "YearlyAverage" ], "symbol": "MB-STS-0236" } ]](https://static.helpjuice.com/helpjuice_production/uploads/upload/image/28179/5201221/Fastmarkets-physical-prices-api-user-guide-python_aug-2024_-_Attachment_15.png)
By default, many of the attributes returned are ID values (for example: Commodity ID and Currency ID). To return the full name of these attributes, they need to be included in the Fields input parameter as they are optional.
These optional fields include:
- Commodity
- Location
- Currency
- UnitOfMeasure
- Incoterm
- Source
In this example, a request is made to include Commodity and Currency names in the response:
![url = "https://api.fastmarkets.com/Physical/v2/Instruments" query = { 'symbols': 'MB-STS-0236', 'fields': ['Commodity', 'Currency'] } headers = { 'Authorization': 'Bearer ' + accessToken.access_token, 'cache-control': 'no-cache' } req = requests.request("GET", url, headers=headers, data = query) instrumentMetadataOptional = json.loads(req.content)](https://static.helpjuice.com/helpjuice_production/uploads/upload/image/28179/5201222/Fastmarkets-physical-prices-api-user-guide-python_aug-2024_-_Attachment_16.png)
Retrieving reference data
The References endpoint is useful for obtaining details of all valid values for a particular field (such as currency codes) or to obtain the full name a specific reference value.
The following reference data is available using this endpoint:
- Currency
- UnitOfMeasure
- PriceCalculationType
- Incoterm
- Commodity
- Source

Example Response (JSON):
![{ "references": [ { "type": "Currency", "items": [ { "sign": "¥", "id": "CNY", "description": "China Yuan" }, { "sign": "$", "id": "ARS", "description": "Argentine peso" }, . . . ] }](https://static.helpjuice.com/helpjuice_production/uploads/upload/image/28179/5201224/Fastmarkets-physical-prices-api-user-guide-python_aug-2024_-_Attachment_18.png)
Technical API information
To find out more about our APIs please see API technical information
Further help
If you have more questions or need further support please look at all the help content available on our Support Hub. If you can't find what you need and want to contact our support teams then Let’s get you some help.