coingecko-api
npx skills add https://github.com/sablier-labs/agent-skills --skill coingecko-api
Agent 安装分布
Skill 文档
CoinGecko API
Overview
Query cryptocurrency market data using the CoinGecko API V3. This skill covers:
- Price lookups by coin ID, symbol, or contract address
- Market data with rankings, volume, and price changes
- Historical price charts and OHLC data
- Search and trending coins
- Global market statistics
Scope: Covers the Demo (free), Analyst, Lite, and Pro tiers. For on-chain DEX data (GeckoTerminal endpoints), consult the fallback documentation.
Prerequisites
API Key Detection
Before making any API call, determine the available API key:
if [ -n "$COINGECKO_PRO_API_KEY" ]; then
CG_BASE="https://pro-api.coingecko.com/api/v3"
CG_AUTH=(-H "x-cg-pro-api-key: $COINGECKO_PRO_API_KEY")
elif [ -n "$COINGECKO_API_KEY" ]; then
CG_BASE="https://api.coingecko.com/api/v3"
CG_AUTH=(-H "x-cg-demo-api-key: $COINGECKO_API_KEY")
else
CG_BASE="https://api.coingecko.com/api/v3"
CG_AUTH=()
echo "Warning: No CoinGecko API key found. Using keyless access (stricter rate limits)."
echo "For higher limits, set COINGECKO_API_KEY or COINGECKO_PRO_API_KEY."
fi
API Tiers
| Tier | Base URL | Auth Header | Rate Limit |
|---|---|---|---|
| Demo | https://api.coingecko.com/api/v3 |
x-cg-demo-api-key |
~30 calls/min, ~10k/month |
| Analyst / Lite / Pro | https://pro-api.coingecko.com/api/v3 |
x-cg-pro-api-key |
Plan-dependent |
Authentication via HTTP header (recommended). Query parameters (x_cg_demo_api_key / x_cg_pro_api_key) also work.
Coin ID Resolution
CoinGecko uses string IDs (e.g., bitcoin, ethereum, uniswap) rather than symbols. Before querying, resolve the correct coin ID.
Resolution Strategy
- Common coins â Use well-known IDs directly:
bitcoin,ethereum,solana,cardano,chainlink,uniswap,aave,maker. Note that some IDs diverge from the coin name:binancecoin(BNB),avalanche-2(AVAX),polygon-ecosystem-token(POL) â see the table below. - Symbol lookup â Use
/simple/pricewith thesymbolsparameter for quick lookups:symbols=btc,eth. Symbols are not unique â multiple coins can share the same symbol. By default, only the top-market-cap coin per symbol is returned; passinclude_tokens=allto get all matches. - Ambiguous symbols â If a symbol maps to multiple coins (e.g., “UNI” could be Uniswap or Universe), use
/search?query=<name>to disambiguate. Always verify the result matches the user’s intent. - Contract address â Use
/simple/token_price/{platform_id}when a contract address is provided. - Unknown coins â Use
/search?query=<term>to find the correct ID before querying.
Common Coin IDs
| Coin | ID | Symbol |
|---|---|---|
| Bitcoin | bitcoin |
BTC |
| Ethereum | ethereum |
ETH |
| Solana | solana |
SOL |
| BNB | binancecoin |
BNB |
| XRP | ripple |
XRP |
| Cardano | cardano |
ADA |
| Dogecoin | dogecoin |
DOGE |
| Chainlink | chainlink |
LINK |
| Avalanche | avalanche-2 |
AVAX |
| Polygon | polygon-ecosystem-token |
POL |
| Uniswap | uniswap |
UNI |
| Aave | aave |
AAVE |
| Maker | maker |
MKR |
| USDC | usd-coin |
USDC |
| USDT | tether |
USDT |
| DAI | dai |
DAI |
| Wrapped BTC | wrapped-bitcoin |
WBTC |
Platform Resolution
Do not default to Ethereum. Always infer the platform from the user’s prompt before making contract-based API calls.
Inference Rules
- Explicit platform mention â If the user mentions a chain name (e.g., “on Polygon”, “Arbitrum token”, “Base chain”), map it to the corresponding platform ID (see
./references/PLATFORMS.md). - Platform-specific tokens â Some tokens exist primarily on specific platforms:
- SOL, BONK, JUP â Solana (
solana) - POL â Polygon (
polygon-pos) - ARB â Arbitrum One (
arbitrum-one) - OP â Optimism (
optimistic-ethereum)
- SOL, BONK, JUP â Solana (
- Address format hints â Base58 addresses (no
0xprefix) may be Solana or Tron â ask the user to clarify.0x-prefixed addresses are EVM but exist on multiple chains. - Testnet keywords â Words like “testnet”, “Sepolia”, “Goerli”, “devnet” indicate testnets. CoinGecko does not index testnet tokens â inform the user immediately.
- Ambiguous cases â If the platform cannot be inferred, ask the user before proceeding. Do not assume Ethereum.
Unsupported Platforms
If the user references a chain not indexed by CoinGecko, respond with:
The chain "[chain name]" is not supported by the CoinGecko API.
For the current list of supported platforms, query:
https://api.coingecko.com/api/v3/asset_platforms
For a curated list of common platforms, see ./references/PLATFORMS.md. For the full live index, query the endpoint above.
Core Workflows
Quick Price Check
Fetch current price for one or more coins:
curl -s "$CG_BASE/simple/price?ids=bitcoin,ethereum&vs_currencies=usd&include_24hr_change=true&include_market_cap=true" "${CG_AUTH[@]}"
For symbol-based lookups:
curl -s "$CG_BASE/simple/price?symbols=btc,eth&vs_currencies=usd" "${CG_AUTH[@]}"
Token Price by Contract Address
Fetch price using a contract address on a specific chain:
curl -s "$CG_BASE/simple/token_price/ethereum?contract_addresses=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48&vs_currencies=usd&include_market_cap=true" "${CG_AUTH[@]}"
Common platform IDs: ethereum, polygon-pos, arbitrum-one, optimistic-ethereum, base, avalanche, binance-smart-chain. For the full list, see ./references/PLATFORMS.md.
Token Logo
The /coins/{id} response includes logo URLs in the image object:
| Field | Typical Size |
|---|---|
image.thumb |
25×25 px |
image.small |
50×50 px |
image.large |
200×200 px |
Fetch via /coins/{id} or /coins/{platform}/contract/{address} â the image field is present in both responses.
Market Rankings
Fetch top coins by market cap with detailed data:
curl -s "$CG_BASE/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=10&page=1&price_change_percentage=24h,7d" "${CG_AUTH[@]}"
Historical Price Data
Fetch price history for charts:
# Last 7 days (hourly granularity)
curl -s "$CG_BASE/coins/bitcoin/market_chart?vs_currency=usd&days=7" "${CG_AUTH[@]}"
# Last 365 days (daily granularity)
curl -s "$CG_BASE/coins/bitcoin/market_chart?vs_currency=usd&days=365" "${CG_AUTH[@]}"
Auto-granularity: 1 day â 5-min intervals, 2-90 days â hourly, >90 days â daily.
Response contains prices, market_caps, and total_volumes arrays of [timestamp_ms, value] pairs.
OHLC / Candlestick Data
Fetch OHLC data for charting:
curl -s "$CG_BASE/coins/bitcoin/ohlc?vs_currency=usd&days=7" "${CG_AUTH[@]}"
Returns [[timestamp, open, high, low, close], ...]. Valid days values: 1, 7, 14, 30, 90, 180, 365, max.
Global Market Stats
curl -s "$CG_BASE/global" "${CG_AUTH[@]}"
Returns total market cap, 24h volume, BTC/ETH dominance percentages, and active cryptocurrencies count.
Search for a Coin
curl -s "$CG_BASE/search?query=sablier" "${CG_AUTH[@]}"
Returns matching coins, exchanges, categories, and NFTs sorted by market cap.
Trending Coins
curl -s "$CG_BASE/search/trending" "${CG_AUTH[@]}"
Returns top trending coins based on CoinGecko search activity.
Output Formatting
Default behavior: Present results in a Markdown table:
| Coin | Price (USD) | 24h Change | Market Cap |
| ---- | ----------- | ---------- | ---------- |
| Bitcoin | $67,187.34 | +3.64% | $1.32T |
| Ethereum | $3,456.78 | +2.15% | $415.2B |
User preference: If the user requests a specific format (JSON, CSV, plain text), use that format instead.
Number Formatting
- Prices > $1: 2 decimal places (e.g.,
$67,187.34) - Prices $0.01â$1: 4 decimal places (e.g.,
$0.4523) - Prices < $0.01: 6+ decimal places (e.g.,
$0.000001234) - Market caps: abbreviated (e.g.,
$1.32T,$415.2B,$8.5M) - Percentages: 2 decimal places with sign (e.g.,
+3.64%,-1.23%)
Rate Limits
For Pro/Analyst/Lite plans, query the /key endpoint for live quotas (Pro base URL only â returns 401 on Demo):
curl -s "https://pro-api.coingecko.com/api/v3/key" -H "x-cg-pro-api-key: $COINGECKO_PRO_API_KEY"
Returns plan, rate_limit_request_per_minute, monthly_call_credit, and current_remaining_monthly_calls. Demo users should refer to the pricing page for current limits.
Approximate defaults (may vary):
| Tier | Requests/Min | Monthly Cap |
|---|---|---|
| Demo (free) | ~30 | ~10,000 |
| Analyst | ~500 | ~500,000 |
| Lite | ~500 | ~1,000,000 |
| Pro | ~1,000 | ~3,000,000 |
If rate limited (HTTP 429), wait briefly and retry. Batch multiple coin queries into single calls using comma-separated IDs where possible.
Error Handling
| HTTP Code | Error Code | Cause | Action |
|---|---|---|---|
| 401 | 10002 | Invalid or missing API key | Verify the key value and base URL match the tier |
| 401 | 10005 | Endpoint not included in current plan | Use the tier-restricted fallback below |
| 429 | â | Rate limit exceeded | Wait and retry; reduce request frequency |
200 {} |
â | Unknown coin ID or contract address | /simple/* endpoints return empty {} instead of 404 for unrecognized IDs/addresses. Treat an empty response as “not found” and use /search to resolve the correct ID |
| 404 | â | Invalid endpoint path | Verify the endpoint URL is correct |
Tier-Restricted Endpoints
Some endpoints return 401 (error code 10005) on the Pro base URL for lower-tier plans (e.g., Analyst) but work on the Demo base URL.
Known Analyst-tier restrictions (401/10005 on Pro base URL):
/search/trending/global/global/decentralized_finance_defi
Fallback strategy: On a 401 with error code 10005, retry on the Demo base URL. If COINGECKO_API_KEY is available, use it for better rate limits; otherwise fall back to keyless:
if [ -n "$COINGECKO_API_KEY" ]; then
curl -s "https://api.coingecko.com/api/v3/search/trending" \
-H "x-cg-demo-api-key: $COINGECKO_API_KEY"
else
curl -s "https://api.coingecko.com/api/v3/search/trending"
fi
Do not use this fallback for error code 10002 (invalid key) â that indicates a misconfigured API key, not a tier restriction.
Reference Files
./references/ENDPOINTS.mdâ Curated endpoint reference with parameters, response formats, and asset platform IDs./references/PLATFORMS.mdâ Curated list of common asset platform IDs with chain mappings (query/asset_platformsfor the full live index)
Fallback Documentation
For endpoints not covered by this skill (on-chain DEX data, NFT details, exchange-specific queries), fetch the AI-friendly documentation:
https://docs.coingecko.com/llms.txt
Use WebFetch to retrieve this documentation for extended API capabilities.