Observed since 20 Oct, 19:03 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Python SDK for the Adanos Market Sentiment API
adanos is the public Python SDK for the Adanos Market Sentiment API.
This SDK targets API 1.54.0.
It gives you typed access to:
Links:
Package and import:
adanosadanospython3 -m pip install adanos
from adanos import AdanosClient
client = AdanosClient(api_key="sk_live_...")
trending = client.reddit.trending(limit=10)
tsla = client.reddit.stock("TSLA")
explanation = client.reddit.explain("TSLA")
direct = client.sentiment.analyze("TSLA looks like a short squeeze setup")
print(trending[0].ticker)
print(tsla.buzz_score)
print(explanation.explanation)
print(direct["sentiment_label"])
client.reddit.* for Reddit Stocksclient.news.* for News Stocksclient.x.* for X/Twitter Stocksclient.polymarket.* for Polymarket Stocksclient.crypto.* for Reddit Cryptoclient.reddit_crypto.* is an alias for client.crypto.*client.sentiment.* for direct finance text sentimentclient.health() for root API health aggregated across servicesfrom adanos import AdanosClient
client = AdanosClient(api_key="sk_live_...")
root_health = client.health()
trending = client.reddit.trending(limit=10)
sectors = client.reddit.trending_sectors(limit=10)
countries = client.reddit.trending_countries(limit=10)
tsla = client.reddit.stock("TSLA")
explanation = client.reddit.explain("TSLA")
results = client.reddit.search("Tesla", limit=10)
comparison = client.reddit.compare(["TSLA", "AAPL", "MSFT"])
market = client.reddit.market_sentiment()
from adanos import AdanosClient
client = AdanosClient(api_key="sk_live_...")
news_trending = client.news.trending(source="reuters")
sectors = client.news.trending_sectors(source="reuters")
countries = client.news.trending_countries(source="reuters")
nvda = client.news.stock("NVDA")
explanation = client.news.explain("NVDA")
results = client.news.search("Nvidia", limit=10)
comparison = client.news.compare(["NVDA", "AAPL"])
market = client.news.market_sentiment()
stats = client.news.stats()
health = client.news.health()
News ticker arguments identify one company. Exchange suffixes such as ABX.DE are supported. The API rejects share classes and malformed tickers.
from adanos import AdanosClient
client = AdanosClient(api_key="sk_live_...")
x_trending = client.x.trending(limit=20)
sectors = client.x.trending_sectors(limit=10)
countries = client.x.trending_countries(limit=10)
nvda = client.x.stock("NVDA")
explanation = client.x.explain("NVDA")
results = client.x.search("Nvidia", limit=10)
comparison = client.x.compare(["NVDA", "AMD"])
market = client.x.market_sentiment()
stats = client.x.stats()
health = client.x.health()
from adanos import AdanosClient
client = AdanosClient(api_key="sk_live_...")
pm_trending = client.polymarket.trending(limit=20, type="stock")
sectors = client.polymarket.trending_sectors(limit=10)
countries = client.polymarket.trending_countries(limit=10)
aapl = client.polymarket.stock("AAPL")
results = client.polymarket.search("Apple", limit=10)
comparison = client.polymarket.compare(["AAPL", "TSLA"])
market = client.polymarket.market_sentiment()
stats = client.polymarket.stats()
health = client.polymarket.health()
Polymarket history starts on 2025-10-11. Earlier requested windows return an availability error.
Polymarket semantics:
buzz_score is activity-first and optimized for current market attentiontotal_liquidity is a windowed signal over the selected periodcurrent_market_count is the live-only active-market breadth; market_count remains the selected-window breadthunique_traders can be None when retained wallet-level trades do not fully cover the requested windowpulse on stock() provides a compact current interpretation; use its evidence and warnings as data-quality contexttop_mentions on stock() are representative sentiment evidence, with directional markets prioritizedAcross platforms, each trend_history value represents its own UTC calendar day. The final value for a live window describes the current partial UTC day and is not expected to equal the top-level period buzz_score.
from adanos import AdanosClient
client = AdanosClient(api_key="sk_live_...")
trending = client.crypto.trending(limit=20)
btc = client.crypto.token("BTC")
mentions = client.crypto.mentions("BTC", from_="2026-05-01", to="2026-05-07", limit=10, offset=10)
results = client.crypto.search("bitcoin", limit=10)
comparison = client.crypto.compare(["BTC", "ETH"])
market = client.crypto.market_sentiment()
stats = client.crypto.stats()
health = client.crypto.health()
Reddit crypto total_upvotes and mention upvotes are signed Reddit scores and can be negative. Raw mention created_utc UTC timestamps parse into timezone-aware datetime values.
client.*| Method | Description |
|---|---|
health() | Root API health aggregated across services |
client.reddit.*| Method | Description |
|---|---|
trending(from_, to, days, limit, offset, type) | Trending stocks by buzz score |
trending_sectors(from_, to, days, limit, offset) | Trending sectors |
trending_countries(from_, to, days, limit, offset) | Trending countries |
stock(ticker, from_, to, days) | Detailed sentiment for a ticker |
mentions(ticker, from_, to, days, limit, offset, include_inherited) | Raw Reddit mention rows |
explain(ticker) | AI-generated trend explanation |
search(query, limit) | Search stocks by name or ticker with an API-managed recent summary block |
compare(tickers, from_, to, days) | Compare up to 10 stocks |
market_sentiment(from_, to, days) | Service-level Reddit market sentiment snapshot |
stats() | Dataset statistics |
health() | Public service health |
Period options: use from_ and to as YYYY-MM-DD inclusive UTC dates for reproducible windows. The SDK serializes from_ as query parameter from. days remains available as a legacy v1-compatible shorthand. The API returns 422 if from, to, and days are all sent together. Responses keep period_days; retain requested dates client-side if you need them later. Search endpoints are the exception: they accept only limit and use the API-managed recent summary window.
client.news.*| Method | Description |
|---|---|
trending(from_, to, days, limit, offset, type, source) | Trending stocks from news |
trending_sectors(from_, to, days, limit, offset, source) | Trending sectors from news |
trending_countries(from_, to, days, limit, offset, source) | Trending countries from news |
stock(ticker, from_, to, days) | Detailed news sentiment for a ticker |
mentions(ticker, from_, to, days, limit, offset) | Raw news mention rows |
explain(ticker) | AI-generated explanation from news context |
search(query, limit) | Search stocks in the news dataset with an API-managed recent summary block |
compare(tickers, from_, to, days) | Compare up to 10 stocks in news |
market_sentiment(from_, to, days) | Service-level News market sentiment snapshot |
stats() | News dataset statistics |
health() | Public news service health |
client.x.*| Method | Description |
|---|---|
trending(from_, to, days, limit, offset, type) | Trending stocks on X/Twitter |
trending_sectors(from_, to, days, limit, offset) | Trending sectors |
trending_countries(from_, to, days, limit, offset) | Trending countries |
stock(ticker, from_, to, days) | Detailed X/Twitter sentiment |
mentions(ticker, from_, to, days, limit, offset) | Raw X/Twitter mention rows |
explain(ticker) | AI-generated explanation from X/Twitter context |
search(query, limit) | Search stocks with an API-managed recent summary block |
compare(tickers, from_, to, days) | Compare stocks |
market_sentiment(from_, to, days) | Service-level X/Twitter market sentiment snapshot |
stats() | Dataset statistics |
health() | Public service health |
client.polymarket.*| Method | Description |
|---|---|
trending(from_, to, days, limit, offset, type) | Trending stocks on Polymarket with activity-first buzz and windowed liquidity |
trending_sectors(from_, to, days, limit, offset) | Trending sectors |
trending_countries(from_, to, days, limit, offset) | Trending countries |
stock(ticker, from_, to, days) | Detailed Polymarket activity, sentiment, and relevance-sorted market questions |
mentions(ticker, from_, to, days, limit, offset) | Raw Polymarket market snapshots |
search(query, limit) | Search stocks with an API-managed recent summary block |
compare(tickers, from_, to, days) | Compare stocks with windowed Polymarket activity signals |
market_sentiment(from_, to, days) | Service-level Polymarket market sentiment snapshot |
stats() | Dataset statistics |
health() | Public service health |
client.crypto.*| Method | Description |
|---|---|
trending(from_, to, days, limit, offset) | Trending Reddit crypto tokens |
token(symbol, from_, to, days) | Detailed token sentiment and buzz |
mentions(symbol, from_, to, days, limit, offset, include_inherited) | Raw Reddit crypto mention rows |
search(query, limit) | Search tokens by symbol or name with an API-managed recent summary block |
compare(symbols, from_, to, days) | Compare multiple tokens |
market_sentiment(from_, to, days) | Service-level Reddit Crypto market sentiment snapshot |
stats() | Dataset statistics |
health() | Public service health |
client.sentiment.*| Method | Description |
|---|---|
analyze(text, target=None) / analyze_async(text, target=None) | Analyze one finance or trading text, optionally for a target company. Requires a Professional account. |
target is keyword-only and accepts up to 100 characters. Omitting it or passing None sends text-only analysis. The API validates the target.
result = client.sentiment.analyze("Tesla gained while Ford fell", target="Tesla")
Sentiment responses are JSON dictionaries. components.model_score can be absent or None. Legacy component fields remain in responses but are deprecated.
Every namespace method also has an _async variant.
import asyncio
from adanos import AdanosClient
async def main() -> None:
async with AdanosClient(api_key="sk_live_...") as client:
trending = await client.reddit.trending_async(limit=10)
tsla = await client.reddit.stock_async("TSLA")
explanation = await client.news.explain_async("NVDA")
print(trending[0].ticker)
print(tsla.trend)
print(explanation.explanation)
asyncio.run(main())
Get an API key at https://api.adanos.com/docs
from adanos import AdanosClient
client = AdanosClient(
api_key="sk_live_...",
base_url="https://api.adanos.com",
timeout=60.0,
)
Notes:
api_key is required for protected endpointsbase_url defaults to https://api.adanos.com. Explicit https://api.adanos.org and custom deployments remain supportedtimeout is passed through to the underlying httpx clientContext management:
from adanos import AdanosClient
with AdanosClient(api_key="sk_live_...") as client:
print(client.reddit.health())
market_sentiment() methods return the live JSON payload directly so the new endpoint family is available before the next full generated refreshUnexpectedStatuswith, async with, close(), or aclose() to release HTTP resourcesTypical platform limits:
| Tier | Monthly Requests | Burst Limit |
|---|---|---|
| Free | 250 | 100/min |
| Hobby | 250,000 | 1000/min |
| Professional/Premium | 2,500,000 | 1000/min |
See the live API docs for the current contract and plan details.
social-stock-sentimentVersion 1.0.0 starts the new adanos package line and renames both the PyPI package and the Python import path.
Old:
python3 -m pip install social-stock-sentiment
from stocksentiment import StockSentimentClient
New:
python3 -m pip install adanos
from adanos import AdanosClient
The client API and namespace layout stay the same. Most upgrades only need a dependency rename and an import rewrite.
AdanosClient is now the primary public client name. StockSentimentClient remains available as a compatibility alias.
If you adopted the pre-release adanos-python-sdk naming locally, switch that install/import pair too:
python3 -m pip uninstall adanos-python-sdk
python3 -m pip install adanos
from adanos import AdanosClient
python3 -m pip install -e ".[dev]"
python3 -m pytest tests -q
python3 -m build
MIT
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 2.8.0 | 13 Oct 2026 | 8 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 19:03 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:46beeb539dfcc13659740d4f149cd30d1ab5954d0732cc34b0c93b64174f843d