A python library for the marketstack API
Project description
pymarketstack
Pymarket is a simple python library for the Marketstack API. It’s a requirement to have a valid API token, the free version or a paid alternative, see Pricing. Needless to say, this is not an official library.
Available features
The different features marketstack supports can be found on marketstack’s documentation.
End of Data
Gets the stock data after the market has closed. Supports 3 alternatives:
- All: Downloads all data.
- Latest: Downloads the data corresponding to the last date.
- Date: Downloads a specific range of data.
Intraday data
Not yet implemented.
Splits data
Not yet implemented.
Dividends data
Not yet implemented.
Tickers
Not yet implemented.
Exchanges
Not yet implemented.
Currencies
Not yet implemented.
Timezones
Not yet implemented.
Usage
from pymarketstack import EndOfDay, download
query = EndOfDay.query(token="your api token")
data, failed = download(query, "AAPL", "XEL", ...)
Here the first line will just create the request with the appropriate fields, the download function will return a tuple with a Response object and a list of strings corresponding to failed tickers. The query function has several options such as the usage of HTTPS, etc. If you want to check how much quota downloading the symbols will take, you can use the quota function as follows:
from pymarketstack import EndOfDay, quota
query = EndOfDay.query(token="your api token")
q: int = quota(query, "AAPL", "XEL", ...)
An end of data request will return 2 things, a Pagination
object and a list of Data
objects. Both of which are wrapped
in a Response
object.
Responses
class Response:
pagination: Pagination
data: List[Data]
The data field is overall the most interesting one and contains a single date of data for each ticker. The fields include things like date, symbol, open, close, high, low, among others. All the fields are listed in the documentation.
In case of an error the library will raise an exception corresponding to the common API error codes. An example API response could be:
{
"pagination": {
"limit": 100,
"offset": 0,
"count": 100,
"total": 9944
},
"data": [
{
"open": 129.8,
"high": 133.04,
"low": 129.47,
"close": 132.995,
"volume": 106686703.0,
"adj_high": 133.04,
"adj_low": 129.47,
"adj_close": 132.995,
"adj_open": 129.8,
"adj_volume": 106686703.0,
"split_factor": 1.0,
"dividend": 0.0,
"symbol": "AAPL",
"exchange": "XNAS",
"date": "2021-04-09T00:00:00+0000"
},
[...]
]
}
which would be equivalent to
Response(
pagination = Pagination(limit=100, offset=0, count=100, total=9944),
data = [
Data(
open=129.8,
high=133.04,
low=129.47,
close=132.995,
volume=106686703.0,
adj_high=133.04,
adj_low=129.47,
adj_close=132.995,
adj_open=129.8,
adj_volume=106686703.0,
split_factor=1.0,
dividend=0.0,
symbol="AAPL",
exchange="XNAS",
date=datetime.datetime(2021, 4, 29)
),
...
]
)
due to the usage of dataclasses-json, Response, Pagination, and Data are serializable to/from dicts and json strings.
Dependencies
The dependencies used are listed in the requirements.txt package file but the main ones are:
License
Apache 2.0, see the LICENSE file for more details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pymarketstack-0.0.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6336ed1b46118e5183ee3892ced0f6457b8c565afc7e74c1824f2083874cf8d4 |
|
MD5 | d32fef419e1ab00ceff16de22ab84cb9 |
|
BLAKE2b-256 | df8b7fe06ebacf95b03fc47c6b99ad65d7fc8d03d2f2f9dddab97fa602604ba9 |