Scheduled price extraction for currencies

Trying to extract scheduled price data for CNH and CNY identifiers , i was able to successfully extract EOD pricing for these identifiers but facing error when trying to extract the prices at specific time of day, please find below the API query details along with URL and error message
Code
from ayx import Alteryx
import pandas as pd
import requests
from datetime import datetime
import html
a = Alteryx.read('#1')
token_url = "https://selectapi.datascope.refinitiv.com/RestApi/v1/Authentication/RequestToken"
payload = "{\r\n "Credentials": {\r\n "Username": "9038135",\r\n "Password": "*********"\r\n }\r\n}"
scheduled_price_url="https://selectapi.datascope.refinitiv.com/restapi/v1/Extractions/Schedules"
headers = {
'Prefer': 'respond-async',
'Content-Type': 'application/json'
}
PROXY = {
'http':'http://proxy.jpmchase.net:10443'
, 'https':'http://proxy.jpmchase.net:10443'
}
try:
response = requests.request("POST", token_url, headers=headers, data=payload,proxies = PROXY,verify=False)
print("Successfully connected")
data=response.json()
token=data.get("value")
scheduled_price_header={
'Prefer': 'respond-async',
'Content-Type': 'application/json',
"Authorization": "Token "+token
}
body={
"Name": "TEST Sample EOD Extraction",
"TimeZone": "Coordinated Universal Time",
"Recurrence":
{
"@odata.type": "#DataScope.Select.Api.Extractions.Schedules.SingleRecurrence",
"ExtractionDateTime": "2025-06-03T12:35:00.000",
"IsImmediate": "TRUE"
},
"Trigger":
{
"@odata.type": "#DataScope.Select.Api.Extractions.Schedules.ImmediateTrigger",
"LimitReportToTodaysData": "FALSE"
},
"IdentifierList": {
"@odata.type": "#DataScope.Select.Api.Extractions.ExtractionRequests.InstrumentIdentifierList",
"InstrumentIdentifiers": [
{ "Identifier":"CNH=", "IdentifierType":"Ric" },
{ "Identifier":"CNY=", "IdentifierType":"Ric" },
],
},
"ValidationOptions": None,
"UseUserPreferencesForValidationOptions": "FALSE",
"Condition": None
}
response_close_price=requests.request("POST", scheduled_price_url, headers=scheduled_price_header,json=body, proxies = PROXY,verify=False).json()
print(response_close_price)
except requests.RequestException as e:
print(f"Couldnt connect : {e}")
results=[]
for item in response_close_price.get('Contents'):
identifier=item.get('RIC')
trade_date=item.get('Trade Date')
close_price=item.get('Universal Close Price')
results.extend([{'Identifier':identifier,'Trade Date':trade_date,
'Universal Close Price':close_price}])
results_df=pd.DataFrame(results)
Alteryx.write(results_df, 1)
Best Answer
-
You can use the DSS Web UI to create a schedule extraction at a specific time every day.
Then, use the API to check for the status and download data. For more information, please refer to this DSS REST API: Downloading Completed Extraction Files by a Schedule Name article.
1
Answers
-
Hello @AnuragShetty
I am not sure what you are trying to do in this code. If your intention is to extract the data for an asset at a particular time (intraday extraction), then please use On-Demand extraction - IntradayPricing Extraction Request.
You can how this on demand extraction is used in the following repo on GitHub -
0 -
Please also refer to the answer on this discussion.
You need to check if you would like to use the immediate scheduled extraction or on-demand extraction. You can't specify instruments (InstrumentIdentifiers) directly in a scheduled extraction request message.
1 -
Hello @Jirapongse , Thank you so much for the reply, we are picking this item back up now so appreciate the help. One question i had is where do we get the List Id and ReportTemplateID for my request? My request is to extract CNH and CNY prices on a daily basis as of 4:30 PM SGT.
0 -
You can get the List ID and ReportTemplateID from the DSS Web UI or the REST API.
From the DSS Web UI, you can select the required instrument list or required report template. The ID will be displayed in the URL.
From the API, you can get all instrument IDs or report templates, or search it by its name.
Use the following endpoints to list all instrument lists or report templates.
- Instrument: GET https://selectapi.datascope.refinitiv.com/RestApi/v1/Extractions/InstrumentLists
- Report Template: GET https://selectapi.datascope.refinitiv.com/RestApi/v1/Extractions/ReportTemplates
Use the following endpoints to search it by its name.
- Instrument: GET https://selectapi.datascope.refinitiv.com/RestApi/v1/Extractions/InstrumentListGetByName(ListName='<list_name>')
- Report Template: GET https://selectapi.datascope.refinitiv.com/RestApi/v1/Extractions/ReportTemplateGetByName(Name='<report_name>')
0 -
Hello @Jirapa_Singnoi
I tried setting up my code to get the price at 8:30 AM UTC but it doesnt seem to work, could you please help me with it
Code
token_url = "https://selectapi.datascope.refinitiv.com/RestApi/v1/Authentication/RequestToken"
payload = "{\r\n "Credentials": {\r\n "Username": "9038135",\r\n "Password": "***********"\r\n }\r\n}"
scheduled_price_url="https://selectapi.datascope.refinitiv.com/restapi/v1/Extractions/Schedules"headers = {
'Prefer': 'respond-async',
'Content-Type': 'application/json'
}PROXY = {
'http':'http://proxy.jpmchase.net:10443'
, 'https':'http://proxy.jpmchase.net:10443'
}try:
response = requests.request("POST", token_url, headers=headers, data=payload,proxies = PROXY,verify=False)
print("Successfully connected")
data=response.json()
token=data.get("value")
scheduled_price_header={
'Prefer': 'respond-async',
'Content-Type': 'application/json',
"Authorization": "Token "+token
}body={
"Name": "TEST Sample EOD Extraction_3",
"TimeZone": "Coordinated Universal Time",
"Recurrence":
{
"@odata .type": "#DataScope.Select.Api.Extractions.Schedules.SingleRecurrence",
"ExtractionDateTime": "2025-08-08T08:30:00.000Z",
"IsImmediate": "TRUE"
},
"Trigger":
{
"@odata .type": "#DataScope.Select.Api.Extractions.Schedules.ImmediateTrigger",
"LimitReportToTodaysData": "TRUE"
},
"ListId": "0x097f476f72eb43f0",
"ReportTemplateId": "0x097a61595a9b3b46"
}
response_close_price=requests.request("POST", scheduled_price_url, headers=scheduled_price_header,json=body, proxies = PROXY,verify=False).json()
print(response_close_price)except requests.RequestException as e:
print(f"Couldnt connect : {e}")End of Code
Also it seems to throw an error that scheduled already exists and i need to rename it every time i run, maybe this is a one time thing and i need to write some more code to get the actual price could you please help
0 -
Why don't you use on-demand extractions instead of immediate extractions to get data?
On-demand extractions are more suitable to this use case.
Please refer to the REST API Tutorial 2: On Demand End of Day Extraction tutorial for more information.
0 -
Hi @Jirapongse , Agreed we had actually setup our whole process around EOD pricing template but our end user need the spot rates at exactly 4:30 SGT hence we were exploring this template , there is i believe Elektron template which gives spot rate at 4:00PM SGT but again the end users are insisting on getting the rates at 4:30 PM SGT daily,
After i create this schedule how do i extract the data
0 -
Thank you, the article you provided was super helpful, I am able to create schedule on GUI and extract using API
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 37 Alpha
- 167 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 705 Datastream
- 1.5K DSS
- 633 Eikon COM
- 5.2K Eikon Data APIs
- 14 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 6 Trading API
- 3K Elektron
- 1.5K EMA
- 259 ETA
- 569 WebSocket API
- 40 FX Venues
- 16 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 25 Messenger Bot
- 4 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 284 Open PermID
- 47 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 24 RDMS
- 2.2K Refinitiv Data Platform
- 879 Refinitiv Data Platform Libraries
- 5 LSEG Due Diligence
- 1 LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 123 Open DACS
- 1.1K RFA
- 108 UPA
- 196 TREP Infrastructure
- 232 TRKD
- 919 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 103 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛