Install
openclaw skills install @avmw2025/crypto-market-intelCrypto Market Intelligence - Free market data pipeline for any OpenClaw agent. Zero API keys needed. Fetch real-time crypto prices, market metrics, Fear & Greed index, DeFi TVL, stock indices, and macro indicators. Use when you need crypto prices, market data, market analysis, fear and greed, DeFi TVL, stock prices, macro data, market intelligence, or trading signals.
openclaw skills install @avmw2025/crypto-market-intelReal-time market data pipeline for crypto, stocks, and macro indicators. Zero API keys required. All data fetched from free public APIs.
Trigger this skill when you need:
Fetch all market data:
cd ~/.openclaw/skills/crypto-market-intel/scripts
python3 market-data-fetcher.py all --output ~/market-data
Analyze market conditions:
./analyze-market.sh
✅ 6 Free APIs, Zero Keys
✅ Crypto Coverage
✅ Stocks & Macro
✅ Agent-Ready Output
python3 scripts/market-data-fetcher.py crypto --output ./data
Output: data/crypto-latest.json
python3 scripts/market-data-fetcher.py stocks --output ./data
Output: data/stocks-latest.json
python3 scripts/market-data-fetcher.py all --output ./data
Run the analyzer wrapper to fetch data and generate a market summary prompt:
./scripts/analyze-market.sh ~/market-data
This fetches fresh data and outputs a structured prompt for the agent to analyze:
Schedule hourly market data fetches:
crontab -e
# Fetch market data every hour
0 * * * * cd ~/.openclaw/skills/crypto-market-intel/scripts && python3 market-data-fetcher.py all --output ~/market-data
The agent can then read pre-fetched data for instant analysis without waiting for API calls.
crypto-latest.json){
"fetched_at": "2026-03-13T15:45:00Z",
"source": "coingecko+alternative.me",
"top_coins": [
{
"symbol": "BTC",
"name": "Bitcoin",
"price": 68500.0,
"market_cap": 1340000000000,
"volume_24h": 28000000000,
"change_24h_pct": 2.5,
"change_7d_pct": -1.2,
"change_1h_pct": 0.3,
"ath": 69000.0,
"ath_change_pct": -0.7,
"rank": 1
}
],
"global": {
"total_market_cap_usd": 2400000000000,
"total_volume_24h_usd": 85000000000,
"btc_dominance": 55.8,
"eth_dominance": 17.2,
"active_cryptocurrencies": 13245,
"market_cap_change_24h_pct": 1.8
},
"fear_greed": [
{
"value": 62,
"label": "Greed",
"date": "1710346800"
}
],
"trending": [
{
"name": "Solana",
"symbol": "SOL",
"rank": 5,
"score": 0
}
],
"defi_tvl": {
"total_tvl": 95800000000,
"date": 1710288000,
"change_1d": 2.1
}
}
stocks-latest.json){
"fetched_at": "2026-03-13T15:45:00Z",
"stocks": {
"indices": [
{
"symbol": "^GSPC",
"price": 5200.5,
"prev_close": 5180.0,
"change_pct": 0.4
}
],
"ai_chips": [
{
"symbol": "NVDA",
"price": 890.25,
"prev_close": 885.0,
"change_pct": 0.59
}
]
},
"dxy": {
"price": 103.45,
"prev_close": 103.2
},
"treasury_10y": {
"yield": 4.25,
"prev_close": 4.22
}
}
| API | Rate Limit | Notes |
|---|---|---|
| CoinGecko | 10-50 calls/min | Free tier, no key required |
| Alternative.me | Unlimited | Public endpoint |
| DeFi Llama | Unlimited | Public endpoint |
| Yahoo Finance | ~2000 calls/hour | Unofficial API, use responsibly |
Recommendation: Run fetcher hourly, not more frequently. APIs are free but fair use matters.
Problem: Fetch fails with timeout
Solution: Check network connection, try again in a few minutes. Some APIs have temporary outages.
Problem: Yahoo Finance returns no data for a stock
Solution: Symbol may be delisted or unavailable. Check symbol accuracy (use ^ prefix for indices, e.g., ^GSPC).
Problem: DeFi TVL is null
Solution: DeFi Llama API may be updating. Historical data endpoint occasionally has lag. Try again later.
Problem: Fear & Greed returns empty
Solution: Alternative.me may be down. Check https://alternative.me/crypto/fear-and-greed-index/ directly.
urllib (no external deps)--output flag to set data directory#!/bin/bash
python3 scripts/market-data-fetcher.py crypto --output /tmp
FEAR=$(jq '.fear_greed[0].value' /tmp/crypto-latest.json)
if [ "$FEAR" -lt 25 ]; then
echo "🚨 Extreme Fear detected: $FEAR — potential buy opportunity"
fi
import json
# Load pre-fetched data
with open("~/market-data/crypto-latest.json") as f:
data = json.load(f)
# Extract top movers
top_coins = data["top_coins"]
gainers = sorted(top_coins, key=lambda x: x["change_24h_pct"], reverse=True)[:5]
print("Top 5 Gainers (24h):")
for coin in gainers:
print(f"{coin['symbol']}: +{coin['change_24h_pct']:.2f}%")
See references/api-sources.md for detailed API documentation, endpoints, response schemas, and rate limit specifics.
Last Updated: 2026-03-13