I run a small API hub (api.lazy-mac.com). Last spring I needed crypto signals — buy/sell/hold calls with RSI, MACD, Bollinger — for a side project that experiments with rule-based scalping.
I tried three things:
- CoinGecko Pro / CryptoCompare — fine for raw prices, but signal logic is on me. Cheapest plan with WebSocket was around $129/mo. The next jump for "give me an actual trade signal" comes from altFINS-style providers — currently $299/mo for their Standard plan.
- Self-host TA-Lib + Binance — works for a day, then breaks on the third candle gap and you start writing your own retry/backfill instead of trading.
- A small worker that pulls Binance klines, computes 6 indicators with explicit weights, returns one JSON per call.
Option 3 became crypto-signal-api. It's been my #2 most-called worker for months. So I cleaned it up and shipped the same thing for everyone else.
This post is what it actually does. With live data — copy-paste the curls and you'll get the same exact JSON I'm reading right now.
The actual ask
For trading signals you need three things in one response:
- The current indicator block (RSI, MACD, EMA cross, Bollinger Band position, StochRSI, volume ratio)
- A composite signal (STRONG_BUY / BUY / HOLD / SELL / STRONG_SELL) with a transparent score breakdown
- A screener that ranks pairs so you can find what's actually moving today
Most providers give you one or two. So you stitch them. So you get bugs.
This worker does all three behind a single /signal/{symbol} endpoint, plus a /screener for ranking.
Try it right now
No API key. No signup. You can hit these as you read:
# One pair — full signal + indicators
curl https://api.lazy-mac.com/crypto-signal/api/v1/signal/BTCUSDT
Sample response, captured a few minutes before I published this:
{
"symbol": "BTCUSDT",
"interval": "1h",
"signal": {
"action": "STRONG_BUY",
"strength": "strong",
"confidence": 42,
"score": 5,
"maxScore": 12,
"details": [
{ "name": "RSI", "score": 1, "reason": "RSI low (36.78)" },
{ "name": "MACD", "score": -1, "reason": "MACD bearish (hist: -123.43)" },
{ "name": "EMA", "score": 0, "reason": "EMA mixed" },
{ "name": "BB", "score": 2, "reason": "Price at lower Bollinger Band" },
{ "name": "StochRSI","score": 2, "reason": "StochRSI oversold (K:3.31 D:2.21)" },
{ "name": "Volume", "score": 1, "reason": "High volume (1.6x avg)" }
]
},
"indicators": {
"price": 76856.07,
"rsi": 36.78,
"macd": { "MACD": -38.15, "signal": 85.28, "histogram": -123.43 },
"ema": { "ema9": 77385.82, "ema21": 77499.17, "ema50": 77416.23 },
"bollingerBands": { "upper": 79412.5, "middle": 78140.2, "lower": 76867.9 }
}
}
Two things to notice:
- The action is composite. Six sub-signals voted. RSI/BB/StochRSI/Volume pulled it bullish, MACD pulled bearish, EMA stayed neutral. Net
+5out of±12. That's the entire scoring surface — no hidden ML, no proprietary "smart money" sauce. - Every component reports
reason. If you're paper-trading and the signal disagrees with you, you can read why in one line.
Screener — what's worth looking at today
curl https://api.lazy-mac.com/crypto-signal/api/v1/screener
Returns the top 20 pairs ranked by signal score, with price, change24h, volume24h, signal, confidence. This is the endpoint I leave open in a tab.
Right now, at the top: BTCUSDT and XRPUSDT both STRONG_BUY with confidence 42, then ETHUSDT and ZECUSDT at BUY moderate. ZEC is up 11.3% on 24h with above-average volume — that's the kind of row you want to know about before scrolling Twitter.
Just the numbers, no opinion
If you only want the indicator block and want to roll your own scoring:
curl https://api.lazy-mac.com/crypto-signal/api/v1/indicators/ETHUSDT
{
"symbol": "ETHUSDT",
"indicators": {
"price": 2110.79,
"rsi": 37.76,
"macd": { "MACD": -3.35, "signal": 0.11, "histogram": -3.46 },
"ema": { "ema9": 2122.72, "ema21": 2127.9, "ema50": 2129.7 },
"bollingerBands": { "upper": 2152.25, "middle": 2131.77, "lower": 2111.29 },
"stochRsi": { "k": 4.96, "d": 3.73 },
"atr": 12.34,
"volume": { "current": 14107.02, "average": 7790.6, "ratio": 1.81 }
}
}
The Korean market thing
There's a second worker on the same hub that I keep underselling — korea-market. It's the only API I know of that wraps KOSPI/KOSDAQ prices, KRW exchange rates, and the Kimchi Premium (Korean exchange BTC price vs Binance, the gap retail traders watch for sentiment) in one MCP-ready endpoint.
curl https://api.lazy-mac.com/korea-market/api/v1/exchange
If you're building any AI agent that needs to know what Korean retail is doing on a given day, this is the lane. As of writing the Kimchi Premium just inverted to roughly -2%, meaning BTC trades cheaper on Upbit than on Binance — a sentiment signal worth catching in code, not by hand.
It's free.
Why the price is $14.99/mo and not $0 or $300
Three reasons I'll be honest about:
- $0 forever doesn't last. Binance rate-limits aggressively. Caching at the edge is what makes this fast and not banned. Cloudflare Workers cost money. Free is a marketing tier, not a viable plan.
- $300/mo is renting a brand. altFINS, Tokenmetrics — they have real teams and real datasets. They also have real overhead. If you want 150 indicators and human research notes, pay them. If you want six indicators with explicit math and an MCP endpoint, that's me at $14.99.
- The price is what makes me ship. When someone is paying $14.99 for uptime, I show up. When it's free, I drift. That's the trade.
What you get on /?q=crypto
The whole hub is at api.lazy-mac.com/?q=crypto#catalog — three products visible there today:
| Product | What it does | Tier |
|---|---|---|
| crypto-signal | RSI/MACD/Bollinger/SMA combined, 100+ pairs, screener, MCP endpoint | $14.99/mo |
| crypto-tax | FIFO/LIFO/Average cost basis. US/UK/EU tax brackets. CSV import. | $14.99/mo |
| korea-market | KOSPI/KOSDAQ + Kimchi Premium + KRW rates + news, MCP for agents | Free |
The catalog page is live data — every count and request stat refreshes from the actual Cloudflare GraphQL feed, not a hardcoded number I wrote three months ago and forgot.
MCP — yes, it works in Claude/Cursor
Every product on the hub is also an MCP JSON-RPC 2.0 server. So you can give Claude or Cursor a literal "tell me which alt has the strongest signal right now" prompt and the model will hit the screener tool. The MCP endpoint is POST /crypto-signal/mcp if you want to wire it manually.
Where I'd love feedback
Three things I'm actively iterating on, comments very welcome:
-
Custom weights — should
/signal/{symbol}accept a?weights=query so traders can tune their own mix? My instinct is yes, but it explodes the cache space. - More exchanges — currently Binance only. Coinbase + OKX are next, in that order. Anyone particularly needs Bybit?
- More indicators — Ichimoku Cloud is the most-requested. VWAP. Heikin Ashi candles. What would you actually use in production?
If you ship something with this — even a hobby paper-trading dashboard — drop a link below. I read every reply.
— Daniel
api.lazy-mac.com/?q=crypto#catalog
Top comments (0)