Getting started
Raspberry API gives you stock-market insights built from what traders are saying on X (Twitter), in real time. This guide walks you through it in plain English — no technical background needed.
https://raspberrytrades.comExamples, not live results. The responses in this guide are illustrative so you can understand each field. Current data requires an API key; only the AAPL insider page is a public demo.
Open the AAPL insider demo →Fast by design. Cached responses return in milliseconds; a live lookup takes a second or two while we fetch fresh tweets and score them with AI.
Quickstart — your first call in 3 steps
From zero to live market sentiment in about a minute.
Make your first call
Paste your key and ask for any US ticker. Pick your language:
import requests
resp = requests.get(
"https://raspberrytrades.com/api/sentiment",
headers={"x-api-key": "ra_live_your_key_here"},
params={"ticker": "NVDA"},
)
data = resp.json()
print(data["sentiment"]["label"], data["sentiment"]["score"])Read the response
You get back clean JSON — the overall sentiment label & score, the bullish / bearish / neutral split, and the top tweets behind it. See the full shape in Example below.
Prefer no code? Use it on TradingView
Two free browser add-ons drop our data right inside TradingView for the stock you're viewing — no coding needed, they update as you switch symbols. One for each API: live X sentiment and the breakout radar.
Install Tampermonkey
A free browser extension that runs small add-ons. Get it for your browser at tampermonkey.net.
Open TradingView
Open any US stock on tradingview.com and a panel appears showing whether traders on X are bullish or bearish on it, right now — with the tweets behind it.
Developer details+
The add-on is a Tampermonkey userscript that calls /api/sentiment for the symbol shown in the TradingView tab, using your own API key (it prompts for it on first run and stores it locally in your browser — click the 🔑 in the widget to change it). Your calls count against your plan's quota.
Get an API key
An API key is like a password for your app. Create one in your dashboard and use it to access Raspberry API data. Keep your key private — never share it publicly or post it online.
Developer details+
Your key starts with ra_live_. Treat it as a secret and keep it on your server — never ship it in front-end code. One key works for every Raspberry API endpoint.
Connecting
Every request includes your API key so we know it's you. Add the key to your request and you're connected. If a request is missing a valid key, it simply won't return any data.
Developer details+
Send your key in the x-api-key header on every request (or ?api_key= in the URL for a quick browser test). Missing or invalid keys return 401.
x-api-key: ra_live_8f2a9c4d1e6b7a3f...What you can ask for
Here's what the API can tell you. The technical request details for each one are tucked away — open them only if you need them.
The Sentiment API answers two different questions with the same API key:
/api/sentiment?ticker=NVDAAre traders on X bullish or bearish on a specific company, right now? Reads every post that mentions that ticker.
/api/market-sentiment?market=btcCurrent X sentiment for a whole market, targeting about 40 quality-filtered posts from the latest 72 hours. Curated specialists lead the sample; any search top-up is disclosed and downweighted, and DeepSeek condenses both sides into one balanced summary.
Both are part of the Sentiment API and use the same key — nothing extra to buy.
Market Intelligence
Social sentiment, multi-source news and how market mood changes over time.
/api/sentimentWhether traders on X are bullish or bearish on any US stock, right now.
Use it toGauge how traders feel about a specific stock right now, before you act.
curl "https://raspberrytrades.com/api/sentiment?ticker=NVDA" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
ticker | string | US stock symbol, e.g. NVDA (required) |
fresh | 0 | 1 | 1 = bypass the 30-min cache and fetch live now (optional) |
x-api-key | header | Your API key (required) |
{
"ticker": "NVDA",
"updatedAt": "2026-07-01T14:32:08Z",
"mentions": 24,
"sentiment": { "label": "bullish", "score": 0.42, "bullish": 14, "bearish": 4, "neutral": 6 },
"bullSummary": "Traders point to the base breakout and strong AI demand, watching 145 as the trigger.",
"bearSummary": "Skeptics flag the extended move and a possible pullback to the 50-day MA.",
"topTweets": [
{
"author": "ripster47", "verified": true,
"text": "$NVDA breaking out of this base, watching 145",
"likes": 1280, "sentiment": "bullish",
"createdAt": "Sun Jun 28 13:05:22 +0000 2026",
"lang": "en", "url": "https://x.com/ripster47/status/..."
}
],
"relatedTweets": [],
"cached": false
}/api/market-sentimentThe mood on a whole market — US, gold, silver, BTC and more — from curated smart-money traders.
Use it toRead the mood of a whole market (risk-on/off, gold, crypto) before positioning.
curl "https://raspberrytrades.com/api/market-sentiment?market=btc" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
market | string | us | gold | silver | btc | eth | oil | dollar | copper | bonds — omit for all (optional) |
fresh | 0 | 1 | 1 = bypass the 30-min cache and read live now (optional) |
x-api-key | header | Your API key — market scope (required) |
{
"id": "btc", "name": "Bitcoin", "emoji": "₿",
"updatedAt": "2026-07-01T12:00:00Z",
"windowHours": 72,
"sampleSize": 40,
"sample": { "target": 40, "total": 40, "shortfall": 0, "curated": 24, "search": 16, "distinctAuthors": 14, "curatedAuthors": 6, "searchAuthors": 8 },
"sourceHealth": { "status": "healthy", "curated": { "attempted": 8, "succeeded": 8, "failed": 0 }, "search": { "attempted": 1, "succeeded": 1, "failed": 0 } },
"quality": { "status": "ok", "confidence": "high", "score": 0.89, "classificationMode": "ai", "aiClassified": 40, "warnings": [] },
"sentiment": { "label": "bearish", "score": -0.23, "bullish": 10, "bearish": 21, "neutral": 9, "basis": "X sentiment only; price action reported separately" },
"priceAction": { "proxy": "BTC-USD", "changePct": 1.2 },
"aiSummary": "El mercado mantiene un sesgo bajista tras perder soporte, aunque las compras institucionales y los objetivos cercanos a $92k sostienen el argumento de rebote. Predomina la cautela hasta recuperar el nivel técnico señalado por los traders.",
"bullSummary": "Institutional adoption: a UAE bank bought $137M BTC on the dip; targets near $92k.",
"bearSummary": "Price broke key support; traders warn of further downside before a bounce.",
"topTweets": [
{
"author": "PeterLBrandt",
"text": "BTC losing this level opens the door lower",
"sentiment": "bearish",
"origin": "curated",
"ageHours": 2.8,
"createdAt": "Wed Jul 01 09:12:00 +0000 2026",
"url": "https://x.com/PeterLBrandt/status/..."
}
],
"cached": true, "stale": false, "ageSeconds": 120
}/api/newsWhether the financial-news headlines on a stock are positive or negative — AI-scored, with links.
Use it toCheck whether the news flow on a stock is positive or negative — the press angle, not social.
curl "https://raspberrytrades.com/api/news?ticker=NVDA" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
ticker | string | US stock symbol, e.g. NVDA (required) |
fresh | 0 | 1 | 1 = bypass the 30-min cache (optional) |
x-api-key | header | Your API key — news scope (required) |
{
"ticker": "NVDA",
"updatedAt": "2026-07-01T14:00:00Z",
"source": "multi-source",
"sources": ["tradingkey", "marketbeat", "marketscreener", "yahoo-finance"],
"providerStatus": [
{ "provider": "tradingkey", "status": "ok", "count": 4 },
{ "provider": "marketbeat", "status": "ok", "count": 3 },
{ "provider": "marketscreener", "status": "ok", "count": 2 },
{ "provider": "yahoo-finance", "status": "ok", "count": 11 }
],
"count": 20,
"sentiment": { "label": "bullish", "score": 0.34, "bullish": 13, "bearish": 2, "neutral": 5 },
"bullSummary": "Coverage highlights AI-chip demand and new design wins.",
"bearSummary": "A few pieces flag valuation and competition risk.",
"headlines": [
{
"title": "Nvidia extends AI lead with new datacenter deal",
"summary": "The chipmaker announced…",
"url": "https://www.reuters.com/...",
"source": "reuters.com",
"provider": "marketbeat",
"publishedAt": "2026-07-01T11:20:00Z",
"sentiment": "bullish"
}
]
}/api/market-newsThe latest news driving a whole market — US, gold, BTC, oil… — AI-scored, with links.
Use it toSee the news flow driving a whole market (Fed, gold, crypto…), not just one stock.
curl "https://raspberrytrades.com/api/market-news?market=us" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
market | string | us | gold | silver | btc | eth | oil | dollar | copper | bonds — omit to list them (optional) |
fresh | 0 | 1 | 1 = bypass the 30-min cache (optional) |
x-api-key | header | Your API key — market-news scope (required) |
{
"ticker": "us",
"name": "US Market",
"source": "multi-source",
"sources": ["tradingkey", "marketbeat", "marketscreener", "yahoo-finance"],
"count": 20,
"sentiment": { "label": "bullish", "score": 0.18, "bullish": 11, "bearish": 4, "neutral": 5 },
"bullSummary": "Headlines point to cooling inflation and resilient earnings.",
"bearSummary": "Some pieces warn on stretched valuations and rate risk.",
"headlines": [
{
"title": "S&P 500 closes at record as inflation eases",
"url": "https://www.reuters.com/...",
"source": "reuters.com",
"publishedAt": "2026-07-01T20:05:00Z",
"sentiment": "bullish"
}
]
}/api/historyWhether the mood on a stock is improving or worsening over time — a sentiment trend line.
Use it toSee whether the mood on a stock is building or fading — momentum in the sentiment itself.
curl "https://raspberrytrades.com/api/history?ticker=NVDA&window=7" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
ticker | string | US stock symbol, e.g. NVDA (required) |
window | number | Trend window in days (default 7, max 365) (optional) |
x-api-key | header | Your API key — history scope (required) |
{
"ticker": "NVDA",
"windowDays": 7,
"trend": { "direction": "improving", "change": 0.18, "from": 0.12, "to": 0.30, "points": 9 },
"points": [
{ "at": "2026-06-28T14:00:00Z", "score": 0.12, "label": "bullish", "mentions": 22 },
{ "at": "2026-06-30T10:00:00Z", "score": 0.24, "label": "bullish", "mentions": 31 },
{ "at": "2026-07-01T12:00:00Z", "score": 0.30, "label": "bullish", "mentions": 28 }
]
}Signals & Strategies
Breakout setups, personal influencer lists and rules-based trading systems.
/api/influencersThe breakout setups trusted X traders are flagging now — validated against the chart, graded and scored.
Use it toConsume only the pre-breakout setups that pass the live quality contract, even when the honest result is a short list.
curl "https://raspberrytrades.com/api/influencers?setup=breakout" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
setup | string | Filter by pattern. Friendly aliases: breakout (includes base_breakout), base, flag; exact values also work: vcp, staircase, pullback, bull_flag, base_breakout, support_bounce (optional). |
ticker | string | Check a single symbol, e.g. NVDA (optional) |
view | string | Use evaluated for an audit-only list with per-ticker exclusion reasons; excluded names never enter the normal leaderboard (optional) |
x-api-key | header | Your API key (required) |
{
"generatedAt": "2026-07-01T14:00:00Z",
"regime": "ON",
"cached": true,
"signalFresh": true,
"count": 13,
"strictCount": 13,
"candidateCount": 13,
"returnedSections": { "explicados": 13, "mencionados": 0, "descartados": 0 },
"returnedSources": { "trader": 2, "technical": 9, "hybrid": 2 },
"candidateFilters": {
"explainedSetupRequired": true,
"conservativeTechnicalValidationRequired": true,
"patternQualityRequired": true,
"marketCapRequired": 300000000,
"readyMaxDistToPivotPct": 8,
"selection": {
"available": 13, "returned": 13,
"limit": 30, "truncated": false
}
},
"filters": {
"explainedSetupRequired": true,
"broke": false,
"earningsSoon": false,
"maxDistToPivotPct": 8
},
"leaderboard": [
{
"ticker": "MU", "breakoutScore": 82,
"source": "hybrid", "section": "setup-explicado",
"candidateState": "ready", "strictEligible": true, "actionable": true,
"pattern": "vcp", "patternLabel": "VCP base", "grade": "A",
"setupTraders": 2, "traderCount": 3, "postAgeHours": 11.2,
"price": 198.2, "distFromHigh": -4.1,
"pivot": 205, "distToPivot": 3.4,
"broke": false, "earningsSoon": false,
"patternQualityPass": true, "patternQualityScore": 91,
"patternQualityReasons": [],
"patternMetrics": {
"structuralAsOf": "2026-06-30",
"baseAgeSessions": 24,
"pivotTouches": 3,
"range20Pct": 14.2,
"volContraction": 0.72
},
"setupSummary": "@srxtrades (bull_flag): $MU tight coil under 205, watching for the break",
"setupReasons": [
{
"trader": "srxtrades", "setupType": "bull_flag",
"text": "$MU tight coil under 205, watching for the break",
"images": ["https://pbs.twimg.com/media/...daily.jpg"]
}
],
"why": [
{
"author": "srxtrades",
"text": "$MU tight coil under 205, watching for the break",
"image": "https://pbs.twimg.com/media/...jpg",
"images": [
"https://pbs.twimg.com/media/...daily.jpg",
"https://pbs.twimg.com/media/...weekly.jpg"
],
"createdAt": "Wed Jul 01 06:09:25 +0000 2026",
"url": "https://x.com/srxtrades/status/..."
}
]
}
],
"candidates": [
{
"ticker": "MU", "source": "hybrid",
"section": "setup-explicado", "candidateState": "ready",
"strictEligible": true, "actionable": true, "distToPivot": 3.4,
"technicalQualified": true, "patternQualityPass": true,
"marketCapQualified": true,
"technicalSetupReason": {
"evidenceSource": "technical",
"author": "Raspberry Radar",
"setupType": "vcp",
"text": "MU presenta un vcp grado A: cotiza a 3.4% del pivote..."
}
}
],
"watchlist": []
}/api/influencers/accountsYour private influencer list for the Breakout Radar — add, rename or hide accounts without changing anyone else's radar.
Use it toPersonalize which trusted traders you see without changing the shared Raspberry radar.
Your additions/removals are isolated to your account and exposed as `scope: user` plus `preferences`. They are applied automatically when that owner's key calls the Breakout Radar: removals filter that user's social evidence and additions use a private cached X/AI overlay. The technical market scan remains shared. Legacy shared environment keys cannot access this private endpoint.
curl "https://raspberrytrades.com/api/influencers/accounts" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
Authentication | session | API key | Use a signed-in website session or a dashboard-issued owner-bound key (required) |
handle | string | X handle for POST/PATCH/DELETE, with or without @ |
handles | string[] | Complete private list for PUT (maximum 100) |
{
"scope": "user",
"count": 39,
"globalCount": 40,
"accounts": [
{ "handle": "srxtrades", "name": "srxtrades", "source": "curated" },
{ "handle": "my_trader", "name": "My trader", "source": "user", "addedAt": "2026-07-01T14:00:00Z" }
],
"preferences": {
"added": [
{ "handle": "my_trader", "name": "My trader", "source": "user", "addedAt": "2026-07-01T14:00:00Z" }
],
"removed": ["another_curated_trader"],
"updatedAt": "2026-07-01T14:00:00Z"
}
}/api/strategiesWhich rules-based SPY strategies are active or upcoming today — with entry/exit dates and reasons.
Use it toKnow which rules-based SPY strategies are active today and which fit the current market regime.
curl "https://raspberrytrades.com/api/strategies" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
id | string | Return a single strategy by id, e.g. turn_of_month (optional) |
x-api-key | header | Your API key (required) |
{
"strategies": [
{
"id": "turn_of_month",
"name": "Turn of the Month",
"category": "Seasonality",
"asset": "SPY",
"description": "WHAT IT IS: The Turn of the Month (TOM) effect is a long-standing seasonal tendency … (full prose)",
"historical": {
"yearsTested": 34, "winRate": 0.6259, "averageReturn": 0.61,
"bestYear": 27.38, "worstYear": -11.34, "maxDrawdown": 20.32,
"averageHoldingPeriod": 7, "profitFactor": 1.85, "totalTrades": 401,
"source": "Internal backtest · SPY daily bars (Yahoo Finance) · 401 monthly windows · 1993–2026"
},
"historicalPattern": {
"title": "Turn of the Month — average cumulative return across the held window",
"xLabel": "Trading days relative to month-end (ME = last trading day; entry T−4, exit T+3)",
"yLabel": "Average cumulative return (%)",
"basis": "derived",
"source": "Internal backtest — 401 completed SPY windows (Yahoo Finance daily closes), 1993–2026",
"note": "Empirical average path measured from history, not illustrative. …",
"series": [
{ "day": -4, "label": "T−4 (Entry)", "cumulativeReturn": 0 },
{ "day": 0, "label": "ME", "cumulativeReturn": 0.27 },
{ "day": 3, "label": "T+3 (Exit)", "cumulativeReturn": 0.61 }
]
},
"status": "Active",
"entryDate": "2025-12-24",
"exitDate": "2026-01-06",
"daysUntilEntry": 0,
"entryPrice": null, "stopLoss": null, "firstTarget": null,
"riskPercent": null, "rewardRiskRatio": null,
"confidenceScore": 100,
"confidenceBreakdown": { "seasonalWindow": 60, "windowProximity": 40 },
"explanation": "SPY is inside its Turn of the Month window (entered 2025-12-24, exits 2026-01-06) — the seasonally strong month-boundary period, rating 100/100 as a setup-quality measure (not a probability of profit).",
"checklist": ["Turn-of-month seasonal window is active"],
"score": 40, "recommended": false, "weight": "low"
},
{
"id": "triple_rsi",
"name": "Triple RSI Strategy",
"category": "Technical",
"asset": "SPY",
"description": "WHAT IT IS: The Triple RSI strategy is a technical, mean-reversion setup … (full prose)",
"historical": {
"yearsTested": 34, "winRate": 0.8989, "averageReturn": 1.31,
"bestYear": 17.63, "worstYear": -2.36, "maxDrawdown": 7.37,
"averageHoldingPeriod": 5, "profitFactor": 6.21, "totalTrades": 89,
"source": "Internal backtest · SPY daily bars (Yahoo Finance) · 89 trades · 1993–2026"
},
"historicalPattern": null,
"status": "Upcoming",
"entryDate": "", "exitDate": "", "daysUntilEntry": 0,
"entryPrice": 433.3, "stopLoss": null, "firstTarget": null,
"riskPercent": null, "rewardRiskRatio": null,
"confidenceScore": 0,
"confidenceBreakdown": { "trendFilter": 0, "oversold": 0, "momentumDecline": 0, "pullbackContext": 0, "oversoldDepth": 0 },
"explanation": "SPY does not currently trigger Triple RSI — 0 of 4 entry conditions in place, rating 0/100 (Weak). A signal fires only when all four align.",
"checklist": [],
"score": 55, "recommended": false, "weight": "medium"
}
]
}/api/scanScreen the whole S&P 500 for the stocks that trigger a strategy's rules right now.
Use it toScreen the whole S&P 500 for the stocks that trigger a strategy's entry rules right now.
curl "https://raspberrytrades.com/api/scan?strategy=daily_rsi_mean_reversion" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
strategy | string | Strategy id to scan, e.g. momentum_breakout or daily_rsi_mean_reversion (optional — omit to scan every scannable strategy) |
x-api-key | header | Your API key (required) |
{
"strategy": "daily_rsi_mean_reversion",
"supported": true,
"scanned": 494,
"matches": [
{
"symbol": "QCOM",
"signal": "BUY",
"score": 79,
"reasons": { "crossedBelowEntry": true, "crossedAboveExit": false },
"metrics": { "rsi": 14.04, "prevRsi": 21.23, "close": 482.54 },
"entryPrice": 482.54,
"stopLoss": null,
"firstTarget": null,
"riskPercent": null,
"rewardRiskRatio": null,
"confidenceScore": 78,
"confidenceBreakdown": { "entryCross": 70, "oversoldDepth": 5, "reversalStrength": 3, "cleanCross": 0 },
"checklist": ["RSI(3) crossed below 20"],
"explanation": "QCOM rates 78/100 — a good setup by the Daily RSI Mean Reversion rules (a measure of setup quality, not a probability of profit). RSI(3) just crossed below 20 (now 14.04); the strategy exits only when RSI(3) crosses back above 70, and defines no price stop or target."
}
],
"skipped": []
}
// Scanners with an objective stop (e.g. momentum_breakout) also populate
// stopLoss / riskPercent; strategies with a condition-based exit leave the
// price levels null rather than invent them. Fields are identical across every
// scannable strategy — only the values differ./api/backtestProve a strategy's edge over decades of real history — computed metrics and sample trades, without placing orders.
Use it toValidate a strategy's edge over decades of real history before trusting today's signal.
curl "https://raspberrytrades.com/api/backtest?strategy=triple_rsi" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
strategy | string | Strategy id to backtest, e.g. triple_rsi (required) |
symbol | string | Override the instrument, e.g. SPY or IWM (optional — defaults to the strategy's asset) |
from | string | Window start, YYYY-MM-DD (optional — defaults to all available history) |
to | string | Window end, YYYY-MM-DD (optional — defaults to today) |
x-api-key | header | Your API key (required) |
{
"strategy": "triple_rsi",
"symbol": "SPY",
"range": {
"requestedFrom": null,
"requestedTo": null,
"testedFrom": "1993-01-29",
"testedTo": "2026-08-05",
"barsTested": 8436
},
"metrics": {
"totalTrades": 89,
"winningTrades": 80,
"losingTrades": 9,
"winRate": 0.8989,
"averageReturn": 0.0131,
"medianReturn": 0.0132,
"bestTrade": 0.0781,
"worstTrade": -0.0737,
"averageHoldingPeriod": 4.83,
"profitFactor": 6.2147,
"totalReturn": 2.1381,
"maxDrawdown": 0.0737
},
"sampleTrades": [
{ "entryDate": "2025-12-17", "exitDate": "2025-12-19", "entryPrice": 671.4, "exitPrice": 680.59, "return": 0.0137, "holdingDays": 2 },
{ "entryDate": "2025-11-18", "exitDate": "2025-11-24", "entryPrice": 660.08, "exitPrice": 668.73, "return": 0.0131, "holdingDays": 4 }
],
"openTradeEntryDate": null
}
// A universe backtest (momentum_breakout) leaves maxDrawdown / bestYear /
// worstYear null — a pooled cross-section has no single equity curve — and
// reports pooled trade stats instead./api/backtestProve a strategy's edge over decades of real history — computed metrics and sample trades, without placing orders.
Use it toAudit how a rules-based strategy behaved before using its live signal.
curl "https://raspberrytrades.com/api/backtest?strategy=triple_rsi&ticker=SPY" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
strategy | string | Supported backtest strategy id (required) |
ticker | string | Ticker to test, e.g. SPY (required) |
x-api-key | header | Your API key (required) |
{
"strategy": "triple_rsi",
"ticker": "SPY",
"barsTested": 2520,
"metrics": { "totalReturn": 0.42, "maxDrawdown": -0.18, "trades": 31 },
"trades": []
}Company Data
Official SEC filings, insider trades, reported financials and company guidance.
/api/v1/insider-trades/{ticker}Who's buying or selling their own stock — recent insider trades from official SEC filings.
Use it toSee what a company's own executives and directors are doing with their shares.
curl "https://raspberrytrades.com/api/v1/insider-trades/AAPL" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
ticker | path | Covered US equity symbol, e.g. AAPL (required) |
include_noise | 0 | 1 | 1 = also return administrative A/M/F/G and tax-withholding transactions (optional) |
limit | number | Maximum transactions to return (optional, max 500) |
x-api-key | header | Your API key (required) |
{
"requestedTicker": "AAPL",
"mappingStatus": "exact",
"issuer": { "cik": "0000320193", "name": "Apple Inc.", "ticker": "AAPL" },
"query": { "includeNoise": false, "limit": 100 },
"count": 31,
"transactions": [
{
"transactionDate": "2026-05-27",
"code": "S",
"shares": 50000,
"pricePerShare": 311.02,
"grossValue": 15551000,
"signal": "sell",
"is10b5One": false,
"isTaxWithholding": false,
"alertEligible": true,
"reportingOwners": [
{ "name": "EXAMPLE DIRECTOR", "roles": ["Director"] }
],
"source": {
"source": "sec_ownership_xml",
"filingDetailUrl": "https://www.sec.gov/Archives/edgar/data/..."
}
}
],
"summary": {
"threeMonths": { "netValue": -15551000, "distinctBuyers": 0 },
"twelveMonths": { "netValue": -15551000, "distinctBuyers": 0 },
"clusterBuy": { "active": false }
}
}/api/v1/financials/{ticker}The income statement, balance sheet and cash flow a company has reported to the SEC — historical facts.
Use it toRetrieve revenue, earnings, balance-sheet and cash-flow figures the company has already filed.
This endpoint contains reported historical facts. It is the correct endpoint for Apple revenue or earnings already announced. A first uncached request can return HTTP 202 with `Retry-After: 5`; repeat it after that interval. Company Facts access is free and does not use an LLM. Canonical normalization currently targets US-GAAP; foreign issuers using another taxonomy can expose fewer or no canonical metrics, and the API reports that honestly instead of fabricating values.
curl "https://raspberrytrades.com/api/v1/financials/AAPL?period=annual&metric=revenue&limit=1" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
ticker | path | Mapped company ticker, e.g. AAPL (required) |
period | string | annual | quarterly | all (optional; default annual) |
view | string | canonical | raw (optional; default canonical) |
metric | string | Comma-separated metric IDs such as revenue, net_income or free_cash_flow (optional) |
statement | string | income | balance | cash_flow (optional) |
limit | number | Maximum observations per metric (optional, integer 1–50; default 8) |
x-api-key | header | Any valid Raspberry Trades API key (required) |
{
"requestedTicker": "AAPL",
"mappingStatus": "exact",
"issuer": {
"cik": "0000320193",
"entityName": "Apple Inc."
},
"query": {
"period": "annual",
"view": "canonical",
"metrics": ["revenue"],
"statements": [],
"limitPerMetric": 1
},
"count": 1,
"observations": [
{
"metric": "revenue",
"statement": "income",
"taxonomy": "us-gaap",
"tag": "RevenueFromContractWithCustomerExcludingAssessedTax",
"unit": "USD",
"value": 416161000000,
"start": "2024-09-29",
"end": "2025-09-27",
"accession": "0000320193-25-000079",
"fiscalYear": 2025,
"fiscalPeriod": "FY",
"form": "10-K",
"filedAt": "2025-10-31",
"derived": false
}
],
"source": {
"source": "sec_company_facts",
"sourceUrl": "https://data.sec.gov/api/xbrl/companyfacts/CIK0000320193.json"
}
}/api/v1/guidance/{ticker}Management's own forecasts for future periods, when the company files them with the SEC.
Use it toTrack exactly what management guided and whether that guidance improved or deteriorated.
Guidance is voluntary and can legitimately be empty — Apple often reports complete financial results without filing formal forward guidance. For results already announced, use `/api/v1/financials/{ticker}` instead. A first uncached request can return HTTP 202 with dataStatus `preparing` and `Retry-After: 15`. SEC access is free; the first successful extraction can use DeepSeek, while later requests use the compact cache.
curl "https://raspberrytrades.com/api/v1/guidance/NVDA?change=lowered&limit=1" \
-H "x-api-key: ra_live_your_key_here"| Parameter | Type | Description |
|---|---|---|
ticker | path | Mapped company ticker, e.g. NVDA (required) |
metric | string | Comma-separated canonicalMetric values such as revenue, eps or gross margin (optional). canonicalMetric is the stable field for filtering and grouping; the descriptive metric label may vary between filings. |
period | string | Period text such as FY2027 or H2 2026 (optional) |
change | string | raised | lowered | maintained | withdrawn | initiated | unknown (optional) |
since | date | Minimum SEC filing date, YYYY-MM-DD (optional) |
limit | number | Maximum observations (optional, integer 1–500; invalid values return HTTP 400) |
x-api-key | header | Your API key (required) |
{
"requestedTicker": "NVDA",
"mappingStatus": "exact",
"issuer": {
"cik": "0001045810",
"name": "NVIDIA CORP",
"ticker": "NVDA",
"tickers": ["NVDA"]
},
"query": {
"metrics": [],
"periods": [],
"changes": ["lowered"],
"since": null,
"limit": 1
},
"count": 1,
"guidance": [
{
"period": "FY2027",
"metric": "tax rate (gaap)",
"canonicalMetric": "tax rate",
"low": 16,
"high": 18,
"unit": "percent",
"currency": null,
"basis": "gaap",
"explicitChange": "unknown",
"qualitative": false,
"evidence": "For the full year fiscal 2027, NVIDIA expects GAAP and non-GAAP tax rates to be between 16.0% and 18.0%, excluding any discrete items and material changes to NVIDIA’s tax environment.",
"comparisonKey": "fy2027|tax rate|%||gaap",
"change": {
"direction": "lowered",
"method": "numeric_midpoint",
"currentMidpoint": 17,
"previous": {
"accession": "0001045810-26-000019",
"filingDate": "2026-02-25",
"low": 17,
"high": 19,
"midpoint": 18
},
"delta": -1,
"deltaPercent": -5.5556
},
"accession": "0001045810-26-000051",
"form": "8-K",
"filingDate": "2026-05-20",
"reportDate": "2026-05-20",
"source": {
"source": "sec_filed_exhibit",
"filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/1045810/000104581026000051/index.json",
"filingDetailUrl": "https://www.sec.gov/Archives/edgar/data/1045810/000104581026000051/nvda-20260520.htm",
"documents": [
{
"exhibitType": "EX-99.1",
"documentUrl": "https://www.sec.gov/Archives/edgar/data/1045810/000104581026000051/q1fy27pr.htm"
}
],
"retrievedAt": "2026-07-27T21:54:37.058Z"
},
"extraction": {
"extractorVersion": "1.2.0",
"promptVersion": "guidance-v3",
"model": "deepseek-v4-flash",
"extractedAt": "2026-07-27T22:26:24.449Z",
"rejectedStatements": 0
}
}
],
"latestByMetric": {
"tax rate:gaap": {
"period": "FY2027",
"metric": "tax rate (gaap)",
"canonicalMetric": "tax rate",
"low": 16,
"high": 18,
"unit": "percent",
"currency": null,
"basis": "gaap",
"explicitChange": "unknown",
"qualitative": false,
"evidence": "For the full year fiscal 2027, NVIDIA expects GAAP and non-GAAP tax rates to be between 16.0% and 18.0%, excluding any discrete items and material changes to NVIDIA’s tax environment.",
"comparisonKey": "fy2027|tax rate|%||gaap",
"change": {
"direction": "lowered",
"method": "numeric_midpoint",
"currentMidpoint": 17,
"previous": {
"accession": "0001045810-26-000019",
"filingDate": "2026-02-25",
"low": 17,
"high": 19,
"midpoint": 18
},
"delta": -1,
"deltaPercent": -5.5556
},
"accession": "0001045810-26-000051",
"form": "8-K",
"filingDate": "2026-05-20",
"reportDate": "2026-05-20",
"source": {
"source": "sec_filed_exhibit",
"filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/1045810/000104581026000051/index.json",
"filingDetailUrl": "https://www.sec.gov/Archives/edgar/data/1045810/000104581026000051/nvda-20260520.htm",
"documents": [
{
"exhibitType": "EX-99.1",
"documentUrl": "https://www.sec.gov/Archives/edgar/data/1045810/000104581026000051/q1fy27pr.htm"
}
],
"retrievedAt": "2026-07-27T21:54:37.058Z"
},
"extraction": {
"extractorVersion": "1.2.0",
"promptVersion": "guidance-v3",
"model": "deepseek-v4-flash",
"extractedAt": "2026-07-27T22:26:24.449Z",
"rejectedStatements": 0
}
}
},
"storeStats": {
"filingCount": 6,
"filingsWithGuidance": 6,
"statementCount": 40
},
"limitations": {
"includesAnalystConsensus": false,
"includesUnfiledCallTranscript": false,
"sourceScope": "SEC-filed EX-99.1 exhibits for 8-K Items 2.02/7.01 and filed 6-K documents."
}
}Example
When you ask for a stock's sentiment, here's the kind of answer you get back:
And when you ask for a whole market instead (/api/market-sentiment), you get the same shape — for the market as a whole:
Show the code & raw data (for developers)+
The same request in your language of choice:
import requests
resp = requests.get(
"https://raspberrytrades.com/api/sentiment",
headers={"x-api-key": "ra_live_your_key_here"},
params={"ticker": "NVDA"},
)
data = resp.json()
print(data["sentiment"]["label"], data["sentiment"]["score"])And the raw response it returns:
{
"ticker": "NVDA",
"updatedAt": "2026-06-28T14:32:08Z",
"source": "x/twitter241",
"sampleSize": 24,
"mentions": 24,
"sentiment": {
"label": "bullish",
"score": 0.42,
"bullish": 14,
"bearish": 4,
"neutral": 6
},
"bullSummary": "Traders point to the base breakout and strong AI demand, watching 145 as the trigger.",
"bearSummary": "Skeptics flag the extended move and a possible pullback to the 50-day MA.",
"topTweets": [
{
"author": "ripster47",
"verified": true,
"text": "$NVDA breaking out of this base, watching 145 for the trigger",
"likes": 1280,
"sentiment": "bullish",
"createdAt": "Sun Jun 28 13:05:22 +0000 2026",
"lang": "en",
"url": "https://x.com/ripster47/status/..."
}
],
"relatedTweets": [],
"relatedCount": 0,
"cached": false,
"ageSeconds": 0
}Errors
Errors use a stable JSON shape: { error: string }. Missing or invalid keys return 401, insufficient access returns 403, invalid parameters return 400, and temporary upstream failures return 502 or503.
Rate Limits
Successful API requests count against your plan's monthly volume. Cached reads are fast; fresh social and news lookups can take longer while Raspberry queries its sources and scores the result. A 429 response means the current monthly allowance has been reached.