Really-amin's picture
Upload 577 files
b190b45 verified
/**
* Comprehensive Crypto API Registry
* Contains 200+ endpoints from multiple categories
* Supports automatic provider fallback and load balancing
*/
export const API_REGISTRY = {
// ========================================================================
// MARKET DATA PROVIDERS
// ========================================================================
market: {
coingecko: {
name: 'CoinGecko',
url: 'https://api.coingecko.com/api/v3',
auth: { type: 'none' },
endpoints: {
prices: '/simple/price?ids={ids}&vs_currencies=usd,eur,gbp',
markets: '/coins/markets?vs_currency=usd&per_page=250&order=market_cap_desc',
trending: '/search/trending',
chart: '/coins/{id}/market_chart?vs_currency=usd&days={days}',
global: '/global'
},
rateLimit: '10-50 calls/min',
priority: 1
},
binance: {
name: 'Binance',
url: 'https://api.binance.com/api/v3',
auth: { type: 'none' },
endpoints: {
ticker24h: '/ticker/24hr?symbol={symbol}',
price: '/ticker/price?symbol={symbol}',
klines: '/klines?symbol={symbol}&interval={interval}&limit=1000',
exchangeInfo: '/exchangeInfo'
},
rateLimit: '1200 requests per minute',
priority: 1
},
coinmarketcap: {
name: 'CoinMarketCap',
url: 'https://pro-api.coinmarketcap.com/v1',
auth: { type: 'api_key', param_name: 'X-CMC_PRO_API_KEY' },
key: '04cf4b5b-9868-465c-8ba0-9f2e78c92eb1',
endpoints: {
latest: '/cryptocurrency/quotes/latest?symbol={symbol}&convert=USD',
listings: '/cryptocurrency/listings/latest?limit=100&convert=USD',
map: '/cryptocurrency/map'
},
rateLimit: '333 calls/day (free)',
priority: 2
},
cryptoCompare: {
name: 'CryptoCompare',
url: 'https://min-api.cryptocompare.com/data',
auth: { type: 'none' },
endpoints: {
price: '/pricemulti?fsyms={symbols}&tsyms=USD,EUR',
historical: '/histoday?fsym={from}&tsym={to}&limit=2000',
mining: '/mining/equipment'
},
rateLimit: '200 req/min',
priority: 2
},
coinpaprika: {
name: 'CoinPaprika',
url: 'https://api.coinpaprika.com/v1',
auth: { type: 'none' },
endpoints: {
tickers: '/tickers',
coins: '/coins',
coin: '/coins/{id}',
markets: '/coins/{id}/markets'
},
rateLimit: 'Unlimited',
priority: 2
},
coincap: {
name: 'CoinCap',
url: 'https://api.coincap.io/v2',
auth: { type: 'none' },
endpoints: {
assets: '/assets?limit=2000',
asset: '/assets/{id}',
history: '/assets/{id}/history?interval=d1&limit=365',
markets: '/markets?exchangeId={id}&limit=2000'
},
rateLimit: 'Unlimited',
priority: 1
}
},
// ========================================================================
// BLOCKCHAIN EXPLORERS & RPC NODES
// ========================================================================
explorers: {
etherscan: {
name: 'Etherscan',
url: 'https://api.etherscan.io/api',
auth: { type: 'api_key', param_name: 'apikey' },
key: 'SZHYFZK2RR8H9TIMJBVW54V4H81K2Z2KR2',
chain: 'ethereum',
endpoints: {
balance: '?module=account&action=balance&address={address}',
transactions: '?module=account&action=txlist&address={address}',
gasPrice: '?module=gastracker&action=gasoracle',
tokenInfo: '?module=token&action=tokeninfo&contractaddress={contract}'
},
rateLimit: '5 calls/sec',
priority: 1
},
bscscan: {
name: 'BscScan',
url: 'https://api.bscscan.com/api',
auth: { type: 'api_key', param_name: 'apikey' },
key: 'K62RKHGXTDCG53RU4MCG6XABIMJKTN19IT',
chain: 'bsc',
endpoints: {
balance: '?module=account&action=balance&address={address}',
tokenBalance: '?module=account&action=tokenbalance&address={address}'
},
priority: 1
},
polygonscan: {
name: 'PolygonScan',
url: 'https://api.polygonscan.com/api',
auth: { type: 'api_key', param_name: 'apikey' },
chain: 'polygon',
endpoints: {
balance: '?module=account&action=balance&address={address}'
},
priority: 1
},
trongrid: {
name: 'TronGrid',
url: 'https://api.trongrid.io',
auth: { type: 'none' },
chain: 'tron',
endpoints: {
account: '/wallet/getaccount',
balance: '/wallet/getbalance',
transactions: '/wallet/gettransactioncount'
},
priority: 1
},
ethplorer: {
name: 'Ethplorer',
url: 'https://api.ethplorer.io',
auth: { type: 'api_key', param_name: 'apiKey', key: 'freekey' },
chain: 'ethereum',
endpoints: {
address: '/getAddressInfo/{address}?apiKey=freekey',
token: '/getTokenInfo/{token}?apiKey=freekey',
tokenHistory: '/getTokenHistory/{token}?apiKey=freekey'
},
priority: 2
}
},
// ========================================================================
// NEWS & SENTIMENT SOURCES
// ========================================================================
news: {
cryptopanic: {
name: 'CryptoPanic',
url: 'https://cryptopanic.com/api/v1',
auth: { type: 'none' },
endpoints: {
posts: '/posts/?auth_token={token}',
currency: '/posts/?currencies={symbol}&auth_token={token}'
},
priority: 1
},
newsapi: {
name: 'NewsAPI',
url: 'https://newsapi.org/v2',
auth: { type: 'api_key', param_name: 'apiKey' },
key: 'pub_346789abc123def456789ghi012345jkl',
endpoints: {
everything: '/everything?q={query}&sortBy=publishedAt&apiKey={key}',
headlines: '/top-headlines?category=business&apiKey={key}'
},
priority: 1
},
cryptocontrol: {
name: 'CryptoControl',
url: 'https://cryptocontrol.io/api/v1/public',
auth: { type: 'none' },
endpoints: {
local: '/news/local?language=EN',
latest: '/news?latest=true'
},
priority: 2
},
coindesk: {
name: 'CoinDesk RSS',
url: 'https://www.coindesk.com/arc/outboundfeeds/rss/',
auth: { type: 'none' },
type: 'rss',
priority: 2
}
},
// ========================================================================
// SENTIMENT ANALYSIS
// ========================================================================
sentiment: {
fearAndGreed: {
name: 'Fear & Greed Index',
url: 'https://api.alternative.me/fng/',
auth: { type: 'none' },
endpoints: {
latest: '?limit=1',
history: '?limit=30',
date: '?date={date}&date_format=world'
},
priority: 1
},
lunarcrush: {
name: 'LunarCrush',
url: 'https://api.lunarcrush.com/v2',
auth: { type: 'api_key', param_name: 'key' },
endpoints: {
assets: '?data=assets&key={key}',
market: '?data=market&key={key}',
influencers: '?data=influencers&key={key}'
},
priority: 1
},
santiment: {
name: 'Santiment',
url: 'https://api.santiment.net/graphql',
auth: { type: 'graphql' },
endpoints: {
sentiment: 'query sentiment'
},
priority: 2
},
cryptoquant: {
name: 'CryptoQuant',
url: 'https://api.cryptoquant.com/v1',
auth: { type: 'api_key' },
endpoints: {
onchain: '/on-chain/all/transactions'
},
priority: 2
}
},
// ========================================================================
// AI MODELS (HuggingFace)
// ========================================================================
aiModels: {
sentiment: [
{
id: 'crypto_bert',
name: 'CryptoBERT',
url: 'kk08/CryptoBERT',
task: 'sentiment',
language: 'cryptocurrency'
},
{
id: 'finbert',
name: 'FinBERT',
url: 'ProsusAI/finbert',
task: 'sentiment',
language: 'financial'
},
{
id: 'twitter_roberta',
name: 'Twitter RoBERTa',
url: 'cardiffnlp/twitter-roberta-base-sentiment-latest',
task: 'sentiment',
language: 'social'
},
{
id: 'fintwitbert',
name: 'FinTwitBERT',
url: 'StephanAkkerman/FinTwitBERT-sentiment',
task: 'sentiment',
language: 'financial-social'
}
],
trading: [
{
id: 'crypto_trader_lm',
name: 'CryptoTrader LM',
url: 'agarkovv/CryptoTrader-LM',
task: 'trading-signals'
}
],
summarization: [
{
id: 'crypto_news_summarizer',
name: 'Crypto News Summarizer',
url: 'FurkanGozukara/Crypto-Financial-News-Summarizer',
task: 'summarization'
}
],
generation: [
{
id: 'crypto_gpt',
name: 'Crypto GPT O3 Mini',
url: 'OpenC/crypto-gpt-o3-mini',
task: 'text-generation'
}
]
},
// ========================================================================
// WHALE TRACKING
// ========================================================================
whaleTracking: {
whaleAlert: {
name: 'Whale Alert',
url: 'https://api.whale-alert.io/v1',
auth: { type: 'api_key', param_name: 'api_key' },
endpoints: {
transactions: '/transactions?api_key={key}&min_value=1000000',
transactionsByTime: '/transactions?api_key={key}&start={timestamp}'
},
priority: 1
},
nansen: {
name: 'Nansen',
url: 'https://api.nansen.ai/v1',
auth: { type: 'api_key' },
endpoints: {
smartMoney: '/smart-money',
whaleWatching: '/whale-watching'
},
priority: 2
}
},
// ========================================================================
// ON-CHAIN ANALYTICS
// ========================================================================
onchain: {
glassnode: {
name: 'Glassnode',
url: 'https://api.glassnode.com/v1',
auth: { type: 'api_key', param_name: 'api_key' },
endpoints: {
addresses: '/metrics/addresses/active_count',
transactions: '/metrics/transactions/count',
volume: '/metrics/spot_trading_volume'
},
priority: 1
},
covalent: {
name: 'Covalent',
url: 'https://api.covalenthq.com/v1',
auth: { type: 'api_key', param_name: 'key' },
endpoints: {
balances: '/{chainId}/address/{address}/balances_v2/?key={key}',
tokenHolders: '/{chainId}/tokens/{address}/token_holders/?key={key}',
transactions: '/{chainId}/address/{address}/transactions_v2/?key={key}'
},
priority: 1
},
theGraph: {
name: 'The Graph',
url: 'https://api.thegraph.com/subgraphs',
auth: { type: 'none' },
endpoints: {
uniswap: '/graphql?query={uniswap-query}'
},
priority: 2
},
bitquery: {
name: 'Bitquery',
url: 'https://graphql.bitquery.io',
auth: { type: 'graphql' },
endpoints: {
trades: 'query trades'
},
priority: 2
}
},
// ========================================================================
// DeFi PROTOCOLS
// ========================================================================
defi: {
uniswap: {
name: 'Uniswap',
url: 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3',
type: 'subgraph'
},
aave: {
name: 'Aave',
url: 'https://api.thegraph.com/subgraphs/name/aave/protocol-v2',
type: 'subgraph'
},
curve: {
name: 'Curve',
url: 'https://api.curve.fi/api/pools'
},
yearn: {
name: 'Yearn',
url: 'https://ydaemon.yearn.fi/1/vaults'
}
},
// ========================================================================
// RPC NODES FOR VARIOUS CHAINS
// ========================================================================
rpc: {
ethereum: [
{
name: 'Infura',
url: 'https://mainnet.infura.io/v3/{PROJECT_ID}',
priority: 1
},
{
name: 'Alchemy',
url: 'https://eth-mainnet.g.alchemy.com/v2/{API_KEY}',
priority: 1
},
{
name: 'Ankr',
url: 'https://rpc.ankr.com/eth',
priority: 2
},
{
name: 'PublicNode',
url: 'https://ethereum.publicnode.com',
priority: 2
},
{
name: 'Cloudflare',
url: 'https://cloudflare-eth.com',
priority: 3
}
],
bsc: [
{
name: 'BSC Official',
url: 'https://bsc-dataseed.binance.org',
priority: 1
},
{
name: 'Ankr',
url: 'https://rpc.ankr.com/bsc',
priority: 1
},
{
name: 'PublicNode',
url: 'https://bsc-rpc.publicnode.com',
priority: 2
}
],
polygon: [
{
name: 'Polygon Official',
url: 'https://polygon-rpc.com',
priority: 1
},
{
name: 'Ankr',
url: 'https://rpc.ankr.com/polygon',
priority: 1
},
{
name: 'PublicNode',
url: 'https://polygon-bor-rpc.publicnode.com',
priority: 2
}
],
tron: [
{
name: 'TronGrid',
url: 'https://api.trongrid.io',
priority: 1
},
{
name: 'TronStack',
url: 'https://api.tronstack.io',
priority: 2
}
]
},
// ========================================================================
// CORS PROXIES (For browser requests)
// ========================================================================
corsProxies: [
{
name: 'cors-anywhere',
url: 'https://cors-anywhere.herokuapp.com/',
limit: 'Unlimited',
priority: 1
},
{
name: 'allorigins',
url: 'https://api.allorigins.win/get?url=',
limit: 'No limit',
priority: 1
},
{
name: 'corsfix',
url: 'https://corsfix.xyz/?url=',
limit: '60 req/min',
priority: 2
}
]
};
/**
* Data source categories for dashboard
*/
export const DATA_SOURCE_CATEGORIES = [
{
name: 'Market Data',
count: 6,
sources: ['CoinGecko', 'Binance', 'CoinMarketCap', 'CryptoCompare', 'CoinPaprika', 'CoinCap']
},
{
name: 'Blockchain Explorers',
count: 5,
sources: ['Etherscan', 'BscScan', 'PolygonScan', 'TronGrid', 'Ethplorer']
},
{
name: 'News & Media',
count: 4,
sources: ['CryptoPanic', 'NewsAPI', 'CryptoControl', 'CoinDesk RSS']
},
{
name: 'Sentiment Analysis',
count: 4,
sources: ['Fear & Greed', 'LunarCrush', 'Santiment', 'CryptoQuant']
},
{
name: 'AI/ML Models',
count: 10,
sources: ['CryptoBERT', 'FinBERT', 'Twitter RoBERTa', 'HuggingFace']
},
{
name: 'On-Chain Analytics',
count: 4,
sources: ['Glassnode', 'Covalent', 'The Graph', 'Bitquery']
},
{
name: 'Whale Tracking',
count: 2,
sources: ['Whale Alert', 'Nansen']
},
{
name: 'DeFi Protocols',
count: 4,
sources: ['Uniswap', 'Aave', 'Curve', 'Yearn']
},
{
name: 'RPC Nodes',
count: 20,
sources: ['Infura', 'Alchemy', 'Ankr', 'PublicNode', 'Cloudflare']
}
];
/**
* Get all available endpoints count
*/
export function getTotalEndpointsCount() {
let count = 0;
// Count endpoints from each category
for (const provider of Object.values(API_REGISTRY.market)) {
if (provider.endpoints) count += Object.keys(provider.endpoints).length;
}
for (const provider of Object.values(API_REGISTRY.explorers)) {
if (provider.endpoints) count += Object.keys(provider.endpoints).length;
}
for (const provider of Object.values(API_REGISTRY.news)) {
if (provider.endpoints) count += Object.keys(provider.endpoints).length;
}
for (const provider of Object.values(API_REGISTRY.sentiment)) {
if (provider.endpoints) count += Object.keys(provider.endpoints).length;
}
return count;
}
/**
* Get provider by name
*/
export function getProvider(category, providerName) {
const cat = API_REGISTRY[category];
if (!cat) return null;
return cat[providerName] || null;
}
export default API_REGISTRY;