# Python Integration

Ensure you use your personal API key. You can set your API key in the [cycle.tools](https://cycle.tools) console. Replace YOUR\_API\_KEY in the examples with your personal key.

#### **CycleExplorer Endpoint** Use this endpoint to post raw data series array to the endpoint. The example will pull eod data from yahoo api first and send to the cycle analsis api to get current dominant cycle: ```Python import requests import json import yfinance as yf #put your cycle.tools API key cycleAPIkey = 'YOUR_API_KEY' #set cycle.tools API url endpoint url = f"https://api.cycle.tools/api/cycles/CycleExplorer?dynamicInSampleMethod=true&api_key={cycleAPIkey}"; # set the yahoo ticker symbol, eg SP500=^GSPC tickerSymbol = "^GSPC"; #get data on this ticker tickerData = yf.Ticker(tickerSymbol) #get the historical prices for this ticker tickerDf = tickerData.history(interval="1d", period="5y") #get close data as json doubele array jsondata = tickerDf['Close'].to_json(orient='records') #call CycleExplorer endpoint to get current dominant cycle r= requests.post(url, data=jsondata, headers={'Content-Type':'application/json'}) #get the dominant cycle return data dominantCycle = r.json() dominantCycleLength = dominantCycle['length'] #print the current dominant cycle length print(f"Dominant Cycle Length: {dominantCycleLength}") #print the json the results print() print(json.dumps(r.json(), indent=4, sort_keys=True)) ``` **Example output:** Dominant Cycle Length: 165.0 **JSON response:** ```JSON { "amplitude": 146.00174004966559, "analysisEndDate": "2020-05-03T17:02:20.6771012+00:00", "analysisStartDate": "0001-01-01T00:00:00", "barsAvailable": 0, "barsused": 750, "currentPrice": 2830.71, "cycleProfitability": 0.75, "lastlow": -5.6668009766674174, "lasttop": -88.16680097666742, "length": 165.0, "license": "api.cycle.tools :You agree to the API usage terms and conditions from host ", "minbaroffset": 170.66680097666742, "nextlow": 159.33319902333258, "nexttop": 76.83319902333258, "phase": -1.3169251392646713, "phase_score": -100, "phase_status": "BOTTOM_Departure", "phasingScore": 135, "statusCode": null, "symbol": "manual", "timeSeries": [] } ``` #### **MarketCycles Endpoint** Use this endpoint for known symbols IDs. The example will use the integrated crypto datafeed to get the current dominant cycle in Bitcoin: ```Python import requests import json #put your cycle.tools API key cycleAPIkey = 'YOUR_API_KEY' symbol="BTC" # Bitcoin market="CDS" # Crypto #set cycle.tools API url endpoint url = f"https://api.cycle.tools/api/cycles/MarketCycles/{symbol}?marketType={market}&api_key={cycleAPIkey}" #call MarketCycles endpoint to get current dominant cycle r= requests.get(url) #get the dominant cycle return data marketCycle = r.json() marketCycleLength = marketCycle['length'] #print the current dominant cycle length print(f"Dominant Cycle Length: {marketCycleLength}") #print the json the results print() print(json.dumps(r.json(), indent=4, sort_keys=True)) ``` **Example output:** Dominant Cycle Length: 39.0 **JSON response:** ```JSON { "amplitude": 418.6291962393411, "analysisEndDate": "2020-05-01T00:00:00", "analysisStartDate": "2016-11-28T00:00:00Z", "barsAvailable": 750, "barsused": 750, "currentPrice": 8728.58, "cycleProfitability": 0.7105263157894737, "lastlow": -7.758826601781372, "lasttop": -27.258826601781372, "length": 39.0, "license": "****** : You agree to the API usage terms and conditions from api.cycle.tools", "minbaroffset": 46.75882660178137, "nextlow": 31.241173398218628, "nexttop": 11.741173398218628, "phase": -0.15968528545011673, "phase_score": 40, "phase_status": "Uptrend_Neutral", "phasingScore": 0, "statusCode": "OK", "symbol": "BTC", "timeSeries": [] } ```