Why I Started This Project
Last year, I was trading Bitcoin and kept getting caught off guard. Price would dump 10% and I'd check Twitter - turns out everyone had been panicking for hours. Or it would pump and I'd realize Reddit had been bullish all morning.
I was always late to the party.
So I asked myself: what if I could track all of this automatically?
The Problem With Manual Sentiment Tracking
If you want to understand Bitcoin market mood, you need to monitor:
- Crypto Twitter (X)
- Reddit (r/bitcoin, r/cryptocurrency)
- YouTube crypto channels
- News sites (CoinDesk, Decrypt, etc.)
- Fear & Greed indexes
- Economic calendars (FOMC, CPI releases)
- Google Trends
Doing this manually? Impossible. You'd spend your whole day reading instead of trading.
My Solution: Aggregate Everything Into One Score
I built a system that pulls data from 7 different sources, analyzes it, and outputs a simple score from 0 to 100.
- 0-25: Extreme Fear (people are panicking)
- 25-45: Bearish (negative sentiment)
- 45-55: Neutral (mixed signals)
- 55-75: Bullish (positive sentiment)
- 75-100: Extreme Greed (euphoria, often a warning sign)
The system also tracks whether sentiment is rising, stable, or declining - because direction matters as much as the absolute number.
What I Learned Building This
- Not all sources are equal
Reddit sentiment moves fast but is noisy. News headlines are slower but more reliable. I ended up weighting sources differently based on their signal-to-noise ratio.
- Confidence matters
Sometimes you only get data from 2-3 sources. Is that reading reliable? I added a confidence score (0-1) so you know when to trust the data and when to be cautious.
- Sentiment extremes are useful, midrange is not
A score of 15 (extreme fear) or 85 (extreme greed) is actionable. A score of 50? Not really. The edges are where the value is.
Opening It Up
After using this internally for months, I decided to make it available as an API. Mostly because I thought other developers might find it useful, and partly because I wanted feedback from the community.
The free tier gives you 100 requests/month to the basic endpoint - enough to test it out.
Code Examples
Here's how to use it in Python:
import requests
API_KEY = "your_rapidapi_key"
URL = "https://btc-real-time-sentiment-news-analysis.p.rapidapi.com/current"
headers = {
"X-RapidAPI-Key": API_KEY,
"X-RapidAPI-Host": "btc-real-time-sentiment-news-analysis.p.rapidapi.com"
}
response = requests.get(URL, headers=headers)
data = response.json()
if data["success"]:
s = data["data"]
print(f"Score: {s['score']}/100 ({s['state']})")
print(f"Trend: {s['trend']}")
print(f"Confidence: {s['confidence']*100:.0f}%")
Output:
Score: 45/100 (Neutral)
Trend: declining
Confidence: 72%
And in JavaScript:
const axios = require('axios');
const config = {
headers: {
'X-RapidAPI-Key': 'your_rapidapi_key',
'X-RapidAPI-Host': 'btc-real-time-sentiment-news-analysis.p.rapidapi.com'
}
};
axios.get('https://btc-real-time-sentiment-news-analysis.p.rapidapi.com/current', config)
.then(({ data }) => {
if (data.success) {
console.log(${data.data.score}/100 - ${data.data.state});
}
});
A Simple Use Case: Sentiment Alerts
One thing I use this for is alerting on big sentiment shifts:
import time
def monitor():
last_score = None
while True:
data = get_sentiment() # function from above
score = data['data']['score']
if last_score and abs(score - last_score) >= 10:
print(f"Big move! {last_score} -> {score}")
last_score = score
time.sleep(300) # check every 5 min
When sentiment drops 10+ points quickly, something is happening. Worth paying attention.
Endpoints Available
Endpoint What it does
/current Overall sentiment score
/breakdown │ Score split by source type
/headlines │ Recent news with sentiment
/impact │ Upcoming economic events
/history │ Historical data
The free tier includes /current. Other endpoints require a paid plan - check RapidAPI for details.
Limitations (Being Honest)
This isn't magic. Some things to keep in mind:
- Sentiment doesn't predict price - it's one input among many
- Lag exists - by the time sentiment shifts, price may have already moved
- False signals happen - especially in the neutral zone
- It's BTC only for now
I'm not selling this as a "get rich" tool. It's a data source that might be useful if you're already doing analysis.
Links
- API: https://rapidapi.com/ismail91300/api/btc-real-time-sentiment-news-analysis
- Code examples: https://github.com/ismail91300/btc-sentiment-api-examples-
- Updates: https://twitter.com/SahbiQuant on Twitter
What's Next
I'm still improving the system. Things I'm considering:
- Adding more assets (ETH, SOL)
- Exposing individual source scores
- Websocket for real-time updates
If you try it out, I'd love to hear feedback. What would make this more useful for you?
Thanks for reading. Feel free to ask questions in the comments.

Top comments (0)