Skip to content
Hero Background Light

FinBrain API, Python SDK & MCP Server — Now on v2

FinBrain API, Python SDK & MCP Server — Now on v2

We’ve shipped v2 across the entire FinBrain stack — the REST API, Python SDK (v0.2.0), and MCP server (v0.2.0). This release simplifies how you interact with every endpoint and adds powerful new capabilities.

What Changed

Simplified API Calls

The market parameter is no longer required for per-ticker endpoints. In v1, you had to specify the market alongside the ticker. Now you just pass the symbol:

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
# v1 (old)
# fb.sentiments.ticker("S&P 500", "AAPL")
# v2 (new) — just the ticker
df = fb.sentiments.ticker("AAPL", as_dataframe=True)

Bearer Token Authentication

v2 uses standard Bearer token authentication instead of query-string tokens:

Terminal window
# v2 — Bearer token (recommended)
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.finbrain.tech/v2/sentiment/AAPL"

Query parameter auth (?apiKey=) still works, and the legacy ?token= parameter is supported for backward compatibility.

Standardized Response Format

Every v2 endpoint returns the same envelope structure:

{
"success": true,
"data": { ... },
"meta": {
"timestamp": "2026-03-12T12:00:00.000Z"
}
}

No more guessing the response shape — success tells you if it worked, data has your payload, and meta has request metadata.

Updated Field Names

Response fields have been cleaned up for consistency:

v1v2
transactiontransactionType
signalaction
representativepolitician
tickersymbol
followersCountfollowerCount
dateFrom / dateTostartDate / endDate

All field names now use camelCase, and numeric values are returned as numbers (not strings).

New Capabilities

11 Screener Endpoints

Screen and filter data across entire markets in a single request — no more looping through tickers one by one:

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
# Screen insider transactions across S&P 500
insider_df = fb.screener.insider_trading(market="S&P 500", as_dataframe=True)
print(insider_df)
# Screen House trades across all US stocks
house_df = fb.screener.house_trades(region="US", as_dataframe=True)
print(house_df)
# Screen sentiment across NASDAQ
sentiment_df = fb.screener.sentiment(market="NASDAQ", as_dataframe=True)
print(sentiment_df)

Available screeners: sentiment, predictions (daily/monthly), insider trading, House trades, Senate trades, analyst ratings, put/call ratio, LinkedIn metrics, app ratings, and news.

Recent Activity Endpoints

Get the latest data entries across all tracked tickers without specifying a symbol:

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
# Most recent news across all tickers
news_df = fb.recent.news(limit=20, as_dataframe=True)
print(news_df)
# Most recent analyst ratings
ratings_df = fb.recent.analyst_ratings(limit=20, as_dataframe=True)
print(ratings_df)

News Endpoint with Sentiment

The new /v2/news/{symbol} endpoint returns article headlines, sources, URLs, and AI-powered sentiment scores for each article:

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
df = fb.news.ticker("TSLA", as_dataframe=True)
for _, article in df.iterrows():
sentiment = article["sentiment"]
sent_str = f"{sentiment:.3f}" if sentiment is not None else "N/A"
print(f"[{sent_str}] {article['headline']}")

Regions Discovery

Programmatically discover which markets are available in each region:

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
regions = fb.available.regions()
print(regions)

Full Async Support

The Python SDK now includes AsyncFinBrainClient for non-blocking workflows:

import asyncio
from finbrain import AsyncFinBrainClient
async def main():
fb = AsyncFinBrainClient(api_key="YOUR_API_KEY")
# Fetch multiple tickers concurrently
results = await asyncio.gather(
fb.sentiments.ticker("AAPL", as_dataframe=True),
fb.sentiments.ticker("MSFT", as_dataframe=True),
fb.sentiments.ticker("GOOGL", as_dataframe=True),
)
for df in results:
print(df.head())
asyncio.run(main())

Built-in Plotting

The SDK now includes built-in visualization for every dataset:

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
fb.plot.predictions("AAPL")
fb.plot.sentiments("TSLA")
fb.plot.options("NVDA")
fb.plot.linkedin("META")
fb.plot.app_ratings("UBER", store="app")

MCP Server v0.2.0

The FinBrain MCP server now uses the v2 API under the hood. New queries you can ask your AI assistant:

  • “Show me the most bullish insider buying this week”
  • “What are the latest congressional trades?”
  • “Screen S&P 500 stocks by sentiment”
  • “What markets does FinBrain cover?”

Your MCP configuration stays the same — just upgrade the package:

Terminal window
pip install --upgrade finbrain-mcp

Updated REST API Endpoints

Datasetv2 Endpoint
Sentiment/v2/sentiment/{symbol}
Insider Trades/v2/insider-trading/{symbol}
House Trades/v2/congress/house/{symbol}
Senate Trades/v2/congress/senate/{symbol}
Analyst Ratings/v2/analyst-ratings/{symbol}
Put/Call Ratio/v2/put-call-ratio/{symbol}
LinkedIn Metrics/v2/linkedin/{symbol}
App Ratings/v2/app-ratings/{symbol}
News/v2/news/{symbol}
AI Predictions/v2/predictions/{type}/{symbol}

Getting Started

Upgrade the Python SDK to start using v2:

Terminal window
pip install --upgrade finbrain-python

Questions about migrating to v2? Reach out at info@finbrain.tech