News sentiment as a normalized time series. Track whether media coverage of any topic, brand, or company is shifting positive or negative over time - weekly data, period growth, via a single POST endpoint.
Volume and tone are different questions. A brand might be generating more news coverage than ever, but if the tone is deteriorating, that volume is working against it. Tracking sentiment separately from volume is what lets you catch that divergence early.
Trends MCP returns news sentiment as a normalized 0-100 time series. The same endpoint, same JSON structure as news volume and every other source.
POST https://api.trendsmcp.ai/api
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Weekly news sentiment for any keyword, normalized 0-100. Higher values mean more positive coverage.
{
"source": "news sentiment",
"keyword": "tesla"
}
Response:
[
{
"date": "2026-03-21",
"value": 42,
"volume": null,
"keyword": "tesla",
"source": "news sentiment"
}
]
Daily mode for the last 30 days:
{
"source": "news sentiment",
"keyword": "tesla",
"data_mode": "daily"
}
A negative growth figure here means sentiment has declined - coverage has become more negative relative to the baseline period.
{
"source": "news sentiment",
"keyword": "boeing",
"percent_growth": ["3M", "6M", "1Y"]
}
Custom date comparison - useful for before/after a specific event:
{
"source": "news sentiment",
"keyword": "boeing",
"percent_growth": [
{ "name": "post-incident", "recent": "2026-01-01", "baseline": "2024-01-01" }
]
}
Preset periods: 7D 14D 30D 1M 2M 3M 6M 9M 12M 1Y 18M 24M 2Y 36M 3Y 48M 60M 5Y MTD QTD YTD
The most useful pattern is querying both sources for the same keyword and comparing them. A divergence - volume rising while sentiment falls - is often the early signal of a developing story or brand crisis.
import requests
headers = {"Authorization": "Bearer YOUR_API_KEY"}
base = "https://api.trendsmcp.ai/api"
volume = requests.post(base, headers=headers,
json={"source": "news volume", "keyword": "boeing", "percent_growth": ["3M"]}).json()
sentiment = requests.post(base, headers=headers,
json={"source": "news sentiment", "keyword": "boeing", "percent_growth": ["3M"]}).json()
JavaScript
const res = await fetch("https://api.trendsmcp.ai/api", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({ source: "news sentiment", keyword: "tesla", percent_growth: ["3M", "1Y"] })
});
const data = await res.json();
FAQ