Skip to content

Price Forecasts API

Retrieve price forecasts for a specific ticker. Returns daily or monthly forecasts with directional signals and confidence bounds, generated from ARIMA time-series models.

GET /v2/predictions/{type}/{symbol}

Supports multiple authentication methods (in order of preference):

Method Example
Bearer token (recommended) Authorization: Bearer YOUR_API_KEY
X-API-Key header X-API-Key: YOUR_API_KEY
Query parameter ?apiKey=YOUR_API_KEY
Legacy query parameter ?token=YOUR_API_KEY
Parameter Type Required Description
type string Yes Prediction type: daily or monthly
symbol string Yes Stock ticker symbol (e.g., AAPL, MSFT)
Parameter Type Required Description
apiKey string No Your API key (if not using header auth)

Note: Predictions are forward-looking only. The API returns forecasts from the current date forward (10 days for daily, 12 months for monthly). Historical predictions are not available.

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
# Get daily predictions
df = fb.predictions.ticker("AAPL", prediction_type="daily",
as_dataframe=True)
print(df)
# Get monthly predictions
df = fb.predictions.ticker("AAPL", prediction_type="monthly",
as_dataframe=True)
print(df)
{
"success": true,
"data": {
"symbol": "AAPL",
"name": "Apple Inc.",
"type": "daily",
"predictions": [
{ "date": "2026-01-16", "mid": 255.21, "lower": 251.01, "upper": 259.48 },
{ "date": "2026-01-20", "mid": 255.59, "lower": 249.67, "upper": 261.66 },
{ "date": "2026-01-21", "mid": 255.97, "lower": 248.72, "upper": 263.43 },
{ "date": "2026-01-22", "mid": 256.35, "lower": 247.99, "upper": 265.00 },
{ "date": "2026-01-23", "mid": 256.74, "lower": 247.39, "upper": 266.44 }
],
"metadata": {
"expectedShortTerm": 0.17,
"expectedMidTerm": 0.47,
"expectedLongTerm": 1.22,
"lowerBoundChange": -3.95,
"upperBoundChange": 6.67
},
"lastUpdated": "2026-01-19T15:05:59.853Z"
},
"meta": {
"timestamp": "2026-01-19T15:05:59.853Z"
}
}
Field Type Description
success boolean Whether the request was successful
data object Prediction data object
meta object Response metadata
Field Type Description
symbol string Stock ticker symbol
name string Company name
type string Prediction type (daily or monthly)
predictions array Array of prediction objects
metadata object Expected move and bound change metrics
lastUpdated string When prediction was last updated (ISO 8601)

Each item in the predictions array contains:

Field Type Description
date string Forecast date (YYYY-MM-DD)
mid number The model’s mid-point price forecast
lower number Lower confidence bound
upper number Upper confidence bound
Field Type Description
expectedShortTerm number Expected short-term price change % (~3 days)
expectedMidTerm number Expected mid-term price change % (~5 days)
expectedLongTerm number Expected long-term price change % (~10 days)
lowerBoundChange number Lower bound percentage change
upperBoundChange number Upper bound percentage change

The expected move fields indicate percentage price change predictions:

Field Time Horizon
expectedShortTerm ~3 trading days
expectedMidTerm ~5 trading days
expectedLongTerm ~10 trading days
import requests
headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get(
"https://api.finbrain.tech/v2/predictions/daily/AAPL",
headers=headers
)
result = response.json()
data = result["data"]
metadata = data["metadata"]
print(f"AAPL Prediction (updated {data['lastUpdated']})")
print(f" Expected Short-term: {metadata['expectedShortTerm']}%")
print(f" Expected Mid-term: {metadata['expectedMidTerm']}%")
print(f" Expected Long-term: {metadata['expectedLongTerm']}%")
# Iterate over predictions array
for pred in data["predictions"]:
print(f" {pred['date']}: ${pred['mid']:.2f} (range: ${pred['lower']:.2f} - ${pred['upper']:.2f})")
import requests
headers = {"Authorization": "Bearer YOUR_API_KEY"}
def get_price_forecasts(symbol):
"""Extract price forecasts from predictions"""
response = requests.get(
f"https://api.finbrain.tech/v2/predictions/daily/{symbol}",
headers=headers
)
result = response.json()
data = result["data"]
for pred in data["predictions"]:
print(f"{pred['date']}: ${pred['mid']:.2f} (${pred['lower']:.2f} - ${pred['upper']:.2f})")
# Access bound change metrics
metadata = data["metadata"]
print(f"\nLower bound change: {metadata['lowerBoundChange']}%")
print(f"Upper bound change: {metadata['upperBoundChange']}%")
get_price_forecasts("AAPL")
import requests
headers = {"Authorization": "Bearer YOUR_API_KEY"}
tickers = ["AAPL", "MSFT", "GOOGL", "NVDA"]
for ticker in tickers:
response = requests.get(
f"https://api.finbrain.tech/v2/predictions/daily/{ticker}",
headers=headers
)
result = response.json()
metadata = result["data"]["metadata"]
print(f"{ticker}: Short {metadata['expectedShortTerm']}%, Mid {metadata['expectedMidTerm']}%, Long {metadata['expectedLongTerm']}%")
Code Error Description
400 Bad Request Invalid symbol or prediction type
401 Unauthorized Invalid or missing API key
403 Forbidden Authenticated, but not authorized to access this resource
404 Not Found Ticker not found
429 Too Many Requests Rate limit exceeded — wait and retry
500 Internal Server Error Server-side error