End-of-Day Brand & Company Financial Data powered by BAV and Morningstar
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
/api/getAccessToken with your client credentials/api/brands?brand_name=Apple/api/company?ticker=AAPL.USAll data endpoints require a JWT Bearer token. Obtain one by posting your client credentials to the token endpoint. Tokens are valid for 1 hour.
Generate a JWT access token using your client credentials.
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_id | string | Yes | Your API client ID |
| client_secret | string | Yes | Your API client secret |
curl -X POST https://eod-api.bavfutures.com/api/getAccessToken \ -H "Content-Type: application/json" \ -d '{"client_id": "YOUR_ID", "client_secret": "YOUR_SECRET"}'
{
"status": "success",
"accessToken": "eyJhbGciOiJIUzI1NiIs..."
}Include the token in the Authorization header for all subsequent requests:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
401 response on a data endpoint, request a new token.Search for brands by name and retrieve BAV brand equity metrics.
| Parameter | Type | Required | Description |
|---|---|---|---|
| brand_name | string | Yes | Brand name to search (prefix match, case-insensitive) |
| country | string | No | Filter by country name (e.g. "united states") |
| limit | number | No | Max results to return (1–200, default 50) |
curl https://eod-api.bavfutures.com/api/brands?brand_name=Nike \ -H "Authorization: Bearer YOUR_TOKEN"
{
"brand_list": [
{
"Brand name": "Nike",
"Sector": "Apparel & Accessories",
"Strength rank": 97.75,
"Stature rank": 98.05,
"Ticker": "NKE",
"Exchange": "US"
}
]
}| Field | Description |
|---|---|
| Brand name | Official brand name from BAV study |
| Sector | Industry sector classification |
| Strength rank | BAV Brand Strength percentile (0–100) |
| Stature rank | BAV Brand Stature percentile (0–100) |
| Ticker | Stock ticker symbol |
| Exchange | Stock exchange code (US, TO, PA, LSE, etc.) |
Retrieve comprehensive financial data for a company by its stock ticker. Data is sourced from Morningstar and updated daily.
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | Yes | Stock ticker, optionally with exchange (e.g. AAPL.US, MSFT, VOD.LSE) |
| filters | string | No | Comma-separated list of data sections to return |
| Filter | Description |
|---|---|
| General | Company name, description, sector, industry |
| Highlights | Market cap, P/E, EPS, dividend yield, profit margin |
| Technicals | Beta, 52-week high/low, moving averages |
| Valuation | Trailing P/E, forward P/E, P/B, P/S, enterprise value |
| Earnings | EPS history, estimates, trends, quarterly data |
| Financials | Income statement, balance sheet, cash flow |
| AnalystRatings | Rating, target price, buy/hold/sell counts |
| SharesStats | Shares outstanding, float, short interest |
| SplitsDividends | Dividend history, split history, payout ratio |
Shorthand filters: Description, MarketCapitalization, Beta, PERatio, PEGRatio, 52WeekHigh, 52WeekLow, PayoutRatio, GicSector
curl https://eod-api.bavfutures.com/api/company?ticker=AAPL.US&filters=Highlights,AnalystRatings \ -H "Authorization: Bearer YOUR_TOKEN"
[
{
"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
}
}
]filters parameter to reduce payload size. Without filters, the response includes all 9 data sections and can be quite large.Check API and database connection status. No authentication required.
{
"status": "ok",
"checks": {
"mysql": true,
"mongodb": true
}
}| Endpoint | Limit |
|---|---|
| /api/getAccessToken | 10 requests per 15 minutes per IP |
| /api/brands | 100 requests per 15 minutes per IP |
| /api/company | 100 requests per 15 minutes per IP |
Rate limit headers (RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset) are included in every response.
429 (Too Many Requests) responses with exponential backofffilters parameter on /api/company to reduce payload sizeclient_id and client_secret.All error responses use the following format:
{
"status": "failed",
"message": "Descriptive error message"
}| Code | Meaning | Description |
|---|---|---|
| 400 | Bad Request | Missing or invalid parameters |
| 401 | Unauthorized | Invalid credentials or expired/missing token |
| 404 | Not Found | Unknown endpoint |
| 429 | Too Many Requests | Rate limit exceeded — retry after the indicated delay |
| 500 | Server Error | Internal server error |
| 503 | Service Degraded | Database connectivity issue |