Financial Data API

Go SDK for Financial Data

Context support, zero dependencies, automatic retries. The Go market data library for high-performance systems.

go get github.com/eulerpool/eulerpool-go

Quick start

Three steps to your first data call

1. Install
$ go get github.com/eulerpool/eulerpool-go
2. Authenticate
import eulerpool "github.com/eulerpool/eulerpool-go"

client := eulerpool.NewClient("ep_live_xxx")
3. Fetch data
raw, err := client.Equity.Metrics(ctx, "AAPL")

var m struct {
  Valuation struct { PE float64 `json:"pe"` } `json:"valuation"`
}
json.Unmarshal(raw, &m)

log.Printf("P/E %.2f", m.Valuation.PE)

Features

Built for Go developers

01

Strongly typed

Structs for every response. No interface{} or dynamic typing.

02

Context support

Cancellation, timeouts, and tracing. Idiomatic Go.

03

Raw JSON control

Responses come back as json.RawMessage — unmarshal into your own structs.

04

Minimal dependencies

Standard library first. No heavy frameworks. Small binaries.

Example

Market scanner

scanner.go
package main

import (
  "context"
  "encoding/json"
  "log"

  eulerpool "github.com/eulerpool/eulerpool-go"
)

type metrics struct {
  Ticker    string `json:"ticker"`
  Valuation struct { PE float64 `json:"pe"` } `json:"valuation"`
}

func main() {
  client := eulerpool.NewClient("ep_live_xxx")
  ctx := context.Background()

  for _, t := range []string{"AAPL", "MSFT", "GOOGL"} {
    raw, err := client.Equity.Metrics(ctx, t)
    if err != nil {
      log.Fatal(err)
    }

    var m metrics
    json.Unmarshal(raw, &m)

    if m.Valuation.PE > 0 && m.Valuation.PE < 15 {
      log.Printf("%s: P/E %.2f (value)", m.Ticker, m.Valuation.PE)
    }
  }
}

Frequently asked questions

Run go get github.com/eulerpool/eulerpool-go. The SDK requires Go 1.21+ and uses the standard library for HTTP. It has zero external dependencies beyond the Go standard library.

Yes. All methods accept a context.Context parameter for timeout and cancellation. This integrates naturally with Go's concurrency patterns. Use context.WithTimeout for request-level timeouts or context.WithCancel for manual cancellation.

Yes. The SDK is designed for low-latency, high-throughput use cases. It uses the standard library HTTP client with connection pooling and returns raw JSON for zero-copy unmarshaling into your own structs. The client is safe for concurrent use across goroutines.

Yes. The SDK returns typed errors (eulerpool.AuthenticationError, eulerpool.NotFoundError, eulerpool.RateLimitError, eulerpool.ServerError) for precise handling with errors.As. Automatic retries with exponential backoff are enabled by default for transient errors (429 and 5xx); configure via ClientOptions.MaxRetries.

Yes. Bulk endpoints like Market.QuotesBulk fetch many securities per call, and json.RawMessage responses let you stream-decode large payloads. It integrates well with Go data processing tools and works in production ETL pipelines, risk systems, and trading infrastructure.

Ready to build?

Get your free API key. 100,000 calls/month. No credit card required.

Get your free API key