A Complete Python Wrapper for Polygon.io APIs.
Project description
polygon
: A Polygon.io API Wrapper
what is polygon
polygon
is a Complete Python Wrapper for Polygon.io APIs. It offers
simple and elegant programmatic access over each endpoint. Functionalities include but not limited to:
- Stocks and Options data
- Forex and Crypto data
- Websocket streaming (both callback and async based)
- Market Info, News, Holidays, Schedules, Tickers, Conditions, Dividends, Splits
- Async support for REST endpoints
- Built In stream reconnection functionality (async streamer only, in progress for callback streamer)
- Complete Pagination support (with internal merging of responses)
- Better Aggregate Bars functionality (useful for historical OCHLV)
and more...
How do I use polygon
The complete description of everything you need to know is available in the Documentation which has answers to any question you might have with example uses included wherever needed. Docs is a must-read for most people.
- For examples to get started with, see the examples
- For an advanced use case example code involving redis queue and postgresql database, check out MarketMakerLite/polygon
- The lib is also officially supported by the popular TA library pandas-ta as an underlying data source instead of the default
yfinance
. See relevant docs to know how to use
Here is a quick setup guide with a few examples
Before you do anything, you'll need to have a polygon account and get your API key. Visit your dashboard to get your API key.
Next, you'd need to install polygon
pip install polygon
and You're good to Go! A few quick examples.
Getting a stock's previous day OCHLV
import polygon
api_key = 'YOUR_KEY'
stocks_client = polygon.StocksClient(api_key)
previous_close = stocks_client.get_previous_close('AMD')
print(previous_close)
An Async example for REST endpoints - previous close
import polygon
import asyncio
async def main():
api_key = 'YOUR_KEY'
stocks_client = polygon.StocksClient(api_key, True)
previous_close = await stocks_client.get_previous_close('AMD')
await stocks_client.close() # Recommended to close the httpx session when it's not needed.
print(previous_close)
if __name__ == '__main__':
asyncio.run(main())
A streaming example (callback based)
import polygon
from polygon.enums import StreamCluster
def my_own_message_handler(ws, msg):
print(f'msg received: {msg}')
def main():
api_key = 'YOUR_KEY'
stream_client = polygon.StreamClient(api_key, StreamCluster.STOCKS, on_message=my_own_message_handler)
stream_client.start_stream_thread()
stream_client.subscribe_stock_trades(['AMD', 'NVDA'])
if __name__ == '__main__':
main()
An Async streaming example
import asyncio
import polygon
from polygon.enums import StreamCluster
async def stock_trades_handler(msg): # it is possible to create one common message handler for different services.
print(f'msg received: {msg}')
async def main():
api_key = 'YOUR_KEY'
stream_client = polygon.AsyncStreamClient(api_key, StreamCluster.STOCKS)
await stream_client.subscribe_stock_trades(['AMD', 'NVDA'], stock_trades_handler)
while 1:
await stream_client.handle_messages() # the lib provides auto reconnect functionality. See docs for info
if __name__ == '__main__':
asyncio.run(main())
This only scratches the surface of the library.
See the Documentation to start using the library with its full functionalities.
what if I need help?
We have a Discord Server. Join in to ask a question, share your ideas or observations or to just chat with interesting people, maybe just for lurking :eyes:
See Getting Help or you can also start a quick discussion
Quick Links for Speed Runners
- Getting Started - a must-read for almost everyone
- Async support for REST endpoints || Pagination Support
- Documentation for all Stocks APIs || Options APIs || Reference APIs
- Documentation for all Forex APIs || Crypto APIs
- Documentation for Callback Streaming || Async Streaming
- Easy guide to enums || Library Interface Docs
- Docs on bugs, discussions, wikis and FAQs
- Contribution and License
Anything else?
Bug reports, suggestions and pull requests are always welcome.
See Contributing if you wish to contribute.
Read This before raising a bug.
polygon
is released under the MIT License
Project details
Release history Release notifications | RSS feed
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 polygon-1.0.4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0567b7d5b22b695387677c7f8f1b1cdaddce09c35a6ff936255bb0b7401c29a3 |
|
MD5 | 303adc7fdcc36e8ac5ce1aef15c8843a |
|
BLAKE2b-256 | 7a019ee0e2035fe18b1ad797b45f899fe7e76167ce5980df3a257dfbf49a70d1 |