Skip to content

Stock Predictions API

Retrieve AI-powered price predictions for a specific ticker. Returns daily or monthly forecasts with directional signals and confidence bounds.

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

Supports multiple authentication methods (in order of preference):

MethodExample
Bearer token (recommended)Authorization: Bearer YOUR_API_KEY
X-API-Key headerX-API-Key: YOUR_API_KEY
Query parameter?apiKey=YOUR_API_KEY
Legacy query parameter?token=YOUR_API_KEY
ParameterTypeRequiredDescription
typestringYesPrediction type: daily or monthly
symbolstringYesStock ticker symbol (e.g., AAPL, MSFT)
ParameterTypeRequiredDescription
apiKeystringNoYour 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"
}
}
FieldTypeDescription
successbooleanWhether the request was successful
dataobjectPrediction data object
metaobjectResponse metadata
FieldTypeDescription
symbolstringStock ticker symbol
namestringCompany name
typestringPrediction type (daily or monthly)
predictionsarrayArray of prediction objects
metadataobjectExpected move and bound change metrics
lastUpdatedstringWhen prediction was last updated (ISO 8601)

Each item in the predictions array contains:

FieldTypeDescription
datestringForecast date (YYYY-MM-DD)
midnumberThe model’s mid-point price forecast
lowernumberLower confidence bound
uppernumberUpper confidence bound
FieldTypeDescription
expectedShortTermnumberExpected short-term price change % (~3 days)
expectedMidTermnumberExpected mid-term price change % (~5 days)
expectedLongTermnumberExpected long-term price change % (~10 days)
lowerBoundChangenumberLower bound percentage change
upperBoundChangenumberUpper bound percentage change

The expected move fields indicate percentage price change predictions:

FieldTime 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']}%")
CodeErrorDescription
400Bad RequestInvalid symbol or prediction type
401UnauthorizedInvalid or missing API key
403ForbiddenAuthenticated, but not authorized to access this resource
404Not FoundTicker not found
429Too Many RequestsRate limit exceeded — wait and retry
500Internal Server ErrorServer-side error