v3.0

BAV EOD API

End-of-Day Brand & Company Financial Data powered by BAV and Morningstar

Overview

The BAV EOD API provides access to BAV brand metrics (strength, stature, differentiation, relevance, esteem, knowledge) alongside company financial fundamentals powered by Morningstar data. The API uses JWT authentication and returns JSON responses.

Base URL: https://eod-api.bavfutures.com

Quick Start

  1. Get an access token — POST to /api/getAccessToken with your client credentials
  2. Search for brands — GET /api/brands?brand_name=Apple
  3. Get company fundamentals — GET /api/company?ticker=AAPL.US

Contents

Authentication

All data endpoints require a JWT Bearer token. Obtain one by posting your client credentials to the token endpoint. Tokens are valid for 1 hour.

POST /api/getAccessToken

Generate a JWT access token using your client credentials.

Request Body

ParameterTypeRequiredDescription
client_idstringYesYour API client ID
client_secretstringYesYour API client secret

Example Request

curl -X POST https://eod-api.bavfutures.com/api/getAccessToken \
  -H "Content-Type: application/json" \
  -d '{"client_id": "YOUR_ID", "client_secret": "YOUR_SECRET"}'

Success Response

{
  "status": "success",
  "accessToken": "eyJhbGciOiJIUzI1NiIs..."
}

Token Usage

Include the token in the Authorization header for all subsequent requests:

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Tokens expire after 1 hour. When you receive a 401 response on a data endpoint, request a new token.

Brand Search

Search for brands by name and retrieve BAV brand equity metrics.

GET /api/brands Bearer token required

Query Parameters

ParameterTypeRequiredDescription
brand_namestringYesBrand name to search (prefix match, case-insensitive)
countrystringNoFilter by country name (e.g. "united states")
limitnumberNoMax results to return (1–200, default 50)

Example Request

curl https://eod-api.bavfutures.com/api/brands?brand_name=Nike \
  -H "Authorization: Bearer YOUR_TOKEN"

Example Response

{
  "brand_list": [
    {
      "Brand name": "Nike",
      "Sector": "Apparel & Accessories",
      "Strength rank": 97.75,
      "Stature rank": 98.05,
      "Ticker": "NKE",
      "Exchange": "US"
    }
  ]
}

Response Fields

FieldDescription
Brand nameOfficial brand name from BAV study
SectorIndustry sector classification
Strength rankBAV Brand Strength percentile (0–100)
Stature rankBAV Brand Stature percentile (0–100)
TickerStock ticker symbol
ExchangeStock exchange code (US, TO, PA, LSE, etc.)

Company Fundamentals

Retrieve comprehensive financial data for a company by its stock ticker. Data is sourced from Morningstar and updated daily.

GET /api/company Bearer token required

Query Parameters

ParameterTypeRequiredDescription
tickerstringYesStock ticker, optionally with exchange (e.g. AAPL.US, MSFT, VOD.LSE)
filtersstringNoComma-separated list of data sections to return

Available Filters (Data Sections)

FilterDescription
GeneralCompany name, description, sector, industry
HighlightsMarket cap, P/E, EPS, dividend yield, profit margin
TechnicalsBeta, 52-week high/low, moving averages
ValuationTrailing P/E, forward P/E, P/B, P/S, enterprise value
EarningsEPS history, estimates, trends, quarterly data
FinancialsIncome statement, balance sheet, cash flow
AnalystRatingsRating, target price, buy/hold/sell counts
SharesStatsShares outstanding, float, short interest
SplitsDividendsDividend history, split history, payout ratio

Shorthand filters: Description, MarketCapitalization, Beta, PERatio, PEGRatio, 52WeekHigh, 52WeekLow, PayoutRatio, GicSector

Example Request

curl https://eod-api.bavfutures.com/api/company?ticker=AAPL.US&filters=Highlights,AnalystRatings \
  -H "Authorization: Bearer YOUR_TOKEN"

Example Response

[
  {
    "Name": "Apple Inc",
    "Ticker": "AAPL",
    "Exchange_code": "US",
    "Highlights": {
      "MarketCapitalization": 3725924237312,
      "MarketCapitalizationMln": 3725924.24,
      "EBITDA": 152901992448,
      "PERatio": 32.09,
      "PEGRatio": 2.27,
      "EarningsShare": 7.90,
      "DividendYield": 0.004,
      "ProfitMargin": 0.2704
    },
    "AnalystRatings": {
      "Rating": 3.91,
      "TargetPrice": 295.32,
      "StrongBuy": 20,
      "Buy": 7,
      "Hold": 16,
      "Sell": 1,
      "StrongSell": 2
    }
  }
]
Tip: Use the filters parameter to reduce payload size. Without filters, the response includes all 9 data sections and can be quite large.

Health Check

GET /api/health

Check API and database connection status. No authentication required.

Example Response

{
  "status": "ok",
  "checks": {
    "mysql": true,
    "mongodb": true
  }
}

Security & Rate Limits

Rate Limiting

EndpointLimit
/api/getAccessToken10 requests per 15 minutes per IP
/api/brands100 requests per 15 minutes per IP
/api/company100 requests per 15 minutes per IP

Rate limit headers (RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset) are included in every response.

Authentication Security

Best Practices

Credential Security: If you suspect your credentials have been compromised, contact anthony@fingertipmedia.com to rotate your client_id and client_secret.

Error Responses

All error responses use the following format:

{
  "status": "failed",
  "message": "Descriptive error message"
}

Status Code Reference

CodeMeaningDescription
400Bad RequestMissing or invalid parameters
401UnauthorizedInvalid credentials or expired/missing token
404Not FoundUnknown endpoint
429Too Many RequestsRate limit exceeded — retry after the indicated delay
500Server ErrorInternal server error
503Service DegradedDatabase connectivity issue

API Status

Status
Operational
Authentication
JWT Bearer Tokens (HMAC-SHA256)
Token Expiry
1 Hour
Credentials
Per-client (contact admin)