Crypto Price Alerts via CoinGecko
Track any coin's price and fire an alert on percent moves - cleaner than exchange-side alerts and integrated with your own infrastructure.
crypto-price-coingeckoThe scenario
You hold a position in a coin and want to be notified if it drops 5% inside an hour, or breaks through a meaningful round number on the upside. Exchange-side alerts work but lock you into one venue, won't fire your own systems, and don't speak Slack or Discord natively.
What you actually want is a monitor that watches the public CoinGecko API, applies your threshold, and posts to your own channels - so your trading bot, journal, or team chat hears about it the same way every time.
The problem
CoinGecko's API is free, fast, and stable, but they don't push you anything. You have to poll. Building your own poller-plus-threshold-plus-webhook service is the kind of evergreen background project that's never quite finished - it works until the API rate-limits you, your VPS reboots, or you forget to renew the TLS cert.
How Verid solves it
The pre-built crypto-price-coingecko template wraps the CoinGecko /simple/price endpoint with a JSONPath extractor and a percent-change predicate. You pass the coin id and the threshold; Verid runs the poll, caches results, and only delivers when the threshold trips.
Build the monitor
Extraction config
{
"method": "json_path",
"fields": {
"price_usd": "$.bitcoin.usd",
"market_cap": "$.bitcoin.usd_market_cap",
"change_24h": "$.bitcoin.usd_24h_change"
}
}
For a different coin, replace bitcoin with the coin id (e.g. ethereum, solana).
Predicate
A 5% drop fires the alert:
{ "type": "field_decreases_by_percent", "field": "price_usd", "threshold": 5 }
To also fire on 5% upside, use a composite:
{
"type": "composite",
"operator": "OR",
"conditions": [
{ "type": "field_decreases_by_percent", "field": "price_usd", "threshold": 5 },
{ "type": "field_increases_by_percent", "field": "price_usd", "threshold": 5 }
]
}
Create the monitor
Using the template:
curl -X POST https://api.verid.dev/v1/monitors/from-template/crypto-price-coingecko \
-H "Authorization: Bearer vrd_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "BTC - 5% move alerts",
"deliveries": [
{ "type": "webhook", "url": "https://my-trading-bot.example.com/webhooks/verid" }
]
}'
Or via the SDK:
import { VeridClient } from '@verid.dev/sdk';
const client = new VeridClient({ apiKey: 'vrd_your_api_key' });
await client.monitors.createFromTemplate('crypto-price-coingecko', {
name: 'BTC - 5% move alerts',
deliveries: [
{ type: 'webhook', url: 'https://my-trading-bot.example.com/webhooks/verid' },
],
});
What the webhook delivers
{
"id": "del_01H...",
"version": "2026-05-01",
"monitor_id": "9b1c…",
"fired_at": "2026-05-08T13:42:00Z",
"diff": {
"fields_changed": ["price_usd", "change_24h", "market_cap"],
"before": { "price_usd": 62450.12, "change_24h": -1.2, "market_cap": 1230000000000 },
"after": { "price_usd": 59102.40, "change_24h": -6.4, "market_cap": 1166000000000 }
}
}
Caveats & tips
- JSONPath returns numbers when the JSON contains numbers. That's exactly what percent-change predicates need - no currency-symbol problem here.
- Run interval bounds the signal. A monitor running every 30 minutes can only detect 5% moves that survive a half-hour window. If you want minute-by-minute granularity, drop the interval (on a plan tier that allows it).
- CoinGecko free tier has a rate limit. Verid's own polling is gentle - once per interval per monitor - but stacking many monitors against the same endpoint at fast intervals can exceed the public-tier ceiling. Spread coins across different schedules.
Related use cases
For equity prices, see stock price drop alerts. For FX moves, see currency / FX rate monitoring. For any other JSON API, see JSON API field monitoring.
Related use cases
Ship this monitor today
5 monitors free, no credit card. Set up takes about a minute.
Get started free