go get -u github.com/117/polygon@latest
There are two ways to interact with the client. The first is using an
environment variable with the DefaultClient
.
$ export POLYGON_KEY yourKeyGoesHere
The second way is by creating your own client, this has the benefit of using multiple keys.
func main() {
client, err := polygon.NewClient(&polygon.Credentials{Key: "yourKeyHere"})
// an error occurs if they key is unauthorized
if err != nil {
panic(err)
}
}
Your API key allows 1 simultaneous connection to each cluster.
Cluster | URL | Enum |
---|---|---|
Stocks | wss://socket.polygon.io/stocks |
polygon.Stocks |
Forex | wss://socket.polygon.io/forex |
polygon.Forex |
Crypto | wss://socket.polygon.io/crypto |
polygon.Crypto |
Connecting to these servers is easy.
// this is a blocking method, wrap a for{} loop to reconnect on error
err := polygon.Stream(polygon.Stocks, []string{"Q.SPY"}, func(event polygon.StreamEvent) {
switch event.String("ev") {
case "Q":
fmt.Println(fmt.Sprintf("received quote for %q symbol", event.String("sym")))
}
})
These are all the Polygon.io REST API methods supported by the wrapper.
Method | Returns | Example |
---|---|---|
polygon.Tickers(*polygon.Parameters) |
ResponseTickers |
See Example |
polygon.TickerTypes() |
ResponseTickerTypes |
See Example |
polygon.TickerDetails(*polygon.Parameters) |
ResponseTickerDetails |
See Example |
polygon.TickerNews() |
ResponseTickerNews |
See Example |
polygon.Markets() |
ResponseMarkets |
See Example |
polygon.Locales() |
ResponseLocales |
See Example |
polygon.StockSplits() |
ResponseStockSplits |
See Example |
polygon.StockDividends() |
ResponseStockDividends |
See Example |
polygon.StockFinancials() |
ResponseStockFinancials |
See Example |
polygon.MarketStatus() |
ResponseMarketStatus |
See Example |
polygon.MarketHolidays() |
ResponseMarketHolidays |
See Example |
polygon.Exchanges() |
ResponseExchanges |
See Example |
polygon.HistoricTrades() |
ResponseHistoricTrades |
See Example |
polygon.HistoricQuotes() |
ResponseHistoricQuotes |
See Example |
polygon.LastTradeForATicker() |
ResponseLastTradeForATicker |
See Example |
polygon.DailyOpenClose() |
ResponseDailyOpenClose |
See Example |
polygon.ConditionMappings() |
map[string]string |
See Example |
polygon.SnapshotAllTickers() |
ResponseSnapshotMultipleTickers |
See Example |
polygon.SnapshotSingleTicker() |
ResponseSnapshotSingleTicker |
See Example |
polygon.SnapshotGainersLosers() |
ResponseSnapshotMultipleTickers |
See Example |
polygon.PreviousClose() |
ResponsePreviousClose |
See Example |
polygon.Aggregates() |
ResponseAggregates |
See Example |
polygon.GroupedDaily() |
ResponseAggregates |
See Example |
more coming soon... |
Query all ticker symbols which are supported by Polygon.io. This API includes Indices, Crypto, FX, and Stocks/Equities.
tickers, err := polygon.Tickers(&polygon.Parameters{
Market: "stocks",
// possibly more, check polygon docs or hover in VSC
})
Get the mapping of ticker types to descriptions / long names.
types, err := polygon.TickerTypes()
Get the details of the symbol company/entity. These are important details which offer an overview of the entity. Things like name, sector, description, logo and similar companies.
details, err := polygon.TickerDetails(&polygon.Parameters{
Ticker: "AAPL",
// possibly more, check polygon docs or hover in VSC
})
Get news articles for this ticker.
news, err := polygon.TickerNews(&polygon.Parameters{
Ticker: "AAPL",
// possibly more, check polygon docs or hover in VSC
})
Get the list of currently supported markets.
markets, err := polygon.Markets()
Get the list of currently supported locales.
locales, err := polygon.Locales()
Get the historical splits for this symbol.
splits, err := polygon.StockSplits(&polygon.Parameters{
Ticker: "AAPL",
// possibly more, check polygon docs or hover in VSC
})
Get the historical divdends for this ticker.
dividends, err := polygon.StockDividends(&polygon.Parameters{
Ticker: "AAPL",
// possibly more, check polygon docs or hover in VSC
})
Get the historical financials for this ticker.
financials, err := polygon.StockFinancials(&polygon.Parameters{
Ticker: "AAPL",
// possibly more, check polygon docs or hover in VSC
})
Current status of each market.
status, err := polygon.MarketStatus()
Get upcoming market holidays and their open/close times.
holidays, err := polygon.MarketHolidays()
List of stock exchanges which are supported by Polygon.io.
exchanges, err := polygon.Exchanges()
Get historic trades for a ticker.
trades, err := polygon.HistoricTrades(&polygon.Parameters{
Ticker: "AAPL",
Date: "2020-01-01",
Limit: 100,
// possibly more, check polygon docs or hover in VSC
})
Get historic NBBO quotes for a ticker.
quotes, err := polygon.HistoricQuotes(&polygon.Parameters{
Ticker: "AAPL",
Date: "2020-01-01",
Limit: 100,
// possibly more, check polygon docs or hover in VSC
})
Get the last trade for a given stock.
trade, err := polygon.LastTradeForATicker(&polygon.Parameters{
Ticker: "AAPL",
// possibly more, check polygon docs or hover in VSC
})
Get the last quote tick for a given stock.
quote, err := polygon.LastQuoteForATicker(&polygon.Parameters{
Ticker: "AAPL",
// possibly more, check polygon docs or hover in VSC
})
Get the open, close and afterhours prices of a symbol on a certain date.
quotes, err := polygon.DailyOpenClose(&polygon.Parameters{
Ticker: "AAPL",
Date: "2020-01-01",
// possibly more, check polygon docs or hover in VSC
})
The mappings for conditions on trades and quotes.
mappings, err := polygon.ConditionMappings(&polygon.Parameters{
TickType: "trades",
// possibly more, check polygon docs or hover in VSC
})
Snapshot allows you to see all tickers current minute aggregate, daily aggregate and last trade. As well as previous days aggregate and calculated change for today.
snapshots, err := polygon.SnapshotAllTickers()
See the current snapshot of a single ticker.
snapshot, err := polygon.SnapshotSingleTicker(&polygon.Parameters{
Ticker: "AAPL",
// possibly more, check polygon docs or hover in VSC
})
See the current snapshot of the top 20 gainers or losers of the day at the moment.
snapshots, err := polygon.SnapshotGainersLosers(&polygon.Parameters{
Direction: "gainers",
// possibly more, check polygon docs or hover in VSC
})
Get the previous day close for the specified ticker.
aggregate, err := polygon.PreviousClose(&polygon.Parameters{
Ticker: "AAPL",
// possibly more, check polygon docs or hover in VSC
})
Get the previous day close for the specified ticker.
aggregate, err := polygon.Aggregates(&polygon.Parameters{
Ticker: "AAPL",
Timespan: "day",
From: "2019-01-01",
To: "2019-02-01",
Multiplier: 1,
// possibly more, check polygon docs or hover in VSC
})
Get the daily OHLC for entire markets.
aggregates, err := polygon.GroupedDaily(&polygon.Parameters{
Locale: "US",
Market: "stocks",
Date: "2019-02-01",
// possibly more, check polygon docs or hover in VSC
})