Free Market Data for Python using Twelve Data API 
Tags: python, datascience, showdev, github
Published: 2020-09-06 14:48:14

# What is Twelve Data API?

Twelve Data is a company that provides high-quality financial market data. The main features are the variety of data (stocks, forex, crypto, indices, etfs), a large number of historical entries, and support of over a hundred technical indicators.

Nevertheless, Twelve Data allows us to begin using data at no cost without time constraints.

# Getting Started

The Twelve Data API provides the following features:

* OHLCV values in real-time and historical retrospective.
* Company data, such as earnings.
* Stream data into your app through WebSocket

To begin install the Python library

`pip install twelvedata`

You will also need an API key that you can obtain in seconds [here](https://twelvedata.com/apikey).

# Historical and Real-Time quotes

To gather any kind of data you have to call the `TDClient` module. Below is a simple example to retrieve `GOOG` stock OHLCV values at the weekly interval:

```python
from twelvedata import TDClient

td = TDClient(my_api_key)
ts = td.time_series(symbol="GOOG", interval="1week").as_pandas()
``` 

This will output something like this:

![GOOG Pandas Dataframe](https://dev-to-uploads.s3.amazonaws.com/i/6pra2hlta1pbg6l2i218.png)

By the way, there are a lot of parameters that might be passed to `time_series`, which makes it possible to retrieve any kind of data at any intervals and dates.

# Plot Charts

There are two types of charting available. The first one is plotting the static charts using `matplotlib` module. However, my fav is the dynamic chart based on `plotly` library that allows the build complex charts even with technical indicators.

```python
ts = td.time_series(symbol="GOOG", interval="1week")
ts.with_aroon().with_stoch().with_ema(time_period=24).as_plotly_figure().show()
```

![Interactive GOOG chart](https://dev-to-uploads.s3.amazonaws.com/i/ty0xg5v0uri80qn3eohv.png)

# Export data

Apart from `pandas.Dataframe` you may also export data in `json` and `csv` formats.

```python
ts = td.time_series(symbol="GOOG", interval="1week")
ts.as_json()
ts.as_csv()
```

# Fundamentals

Similar logic applies when you want to request company fundamentals.

```python
from twelvedata import TDClient

td = TDClient(my_api_key)
earnings = td.get_earnings(symbol="GOOG", outputsize=30)
earnings.as_pandas()

#             eps_estimate  eps_actual  difference  surprise_prc
# date                                                          
# 2020-07-30          8.34       10.13        1.79         21.46
# 2020-04-28         10.38        9.87       -0.51         -4.91
# 2020-02-03         12.59       15.35        2.76         21.92
# 2019-10-28         12.46       10.12       -2.34        -18.78
# 2019-07-25         11.33       14.21        2.88         25.42
# 2019-04-29         10.63        9.50       -1.13        -10.63
# 2019-02-04         10.82       12.77        1.95         18.02
# 2018-10-25         10.40       13.06        2.66         25.58
# 2018-07-23          9.54        4.54       -5.00        -52.41
# 2018-04-23          9.32       13.33        4.01         43.03
# 2018-02-01          9.96        9.70       -0.26         -2.61
# 2017-10-26          8.33        9.57        1.24         14.89
# 2017-07-24          4.47        5.01        0.54         12.08
# 2017-04-27          7.39        7.73        0.34          4.60
```

# Wrapping up
At this post, we made a brief overview of some features that the Twelve Data Python library provides. In the next article, we will cover the topic of streaming market data with WebSockets.
Meanwhile, check out the [GitHub](https://github.com/twelvedata/twelvedata-python) repo.

Stay safe!