| ╔══════════════════════════════════════════════════════════════════════════════════════╗ |
| ║ CRYPTOCURRENCY API CONFIGURATION - COMPLETE GUIDE ║ |
| ║ تنظیمات کامل API های ارز دیجیتال ║ |
| ║ Updated: October 2025 ║ |
| ╚══════════════════════════════════════════════════════════════════════════════════════╝ |
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 🔑 API KEYS - کلیدهای API |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| EXISTING KEYS (کلیدهای موجود): |
| ───────────────────────────────── |
| TronScan: 7ae72726-bffe-4e74-9c33-97b761eeea21 |
| BscScan: K62RKHGXTDCG53RU4MCG6XABIMJKTN19IT |
| Etherscan: SZHYFZK2RR8H9TIMJBVW54V4H81K2Z2KR2 |
| Etherscan_2: T6IR8VJHX2NE6ZJW2S3FDVN1TYG4PYYI45 |
| CoinMarketCap: 04cf4b5b-9868-465c-8ba0-9f2e78c92eb1 |
| CoinMarketCap_2: b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c |
| NewsAPI: pub_346789abc123def456789ghi012345jkl |
| CryptoCompare: e79c8e6d4c5b4a3f2e1d0c9b8a7f6e5d4c3b2a1f |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 🌐 CORS PROXY SOLUTIONS - راهحلهای پروکسی CORS |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| FREE CORS PROXIES (پروکسیهای رایگان): |
| ────────────────────────────────────────── |
|
|
| 1. AllOrigins (بدون محدودیت) |
| URL: https://api.allorigins.win/get?url={TARGET_URL} |
| Example: https://api.allorigins.win/get?url=https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd |
| Features: JSON/JSONP, گزینه raw content |
| |
| 2. CORS.SH (بدون rate limit) |
| URL: https://proxy.cors.sh/{TARGET_URL} |
| Example: https://proxy.cors.sh/https://api.coinmarketcap.com/v1/cryptocurrency/quotes/latest |
| Features: سریع، قابل اعتماد، نیاز به header Origin یا x-requested-with |
| |
| 3. Corsfix (60 req/min رایگان) |
| URL: https://proxy.corsfix.com/?url={TARGET_URL} |
| Example: https://proxy.corsfix.com/?url=https://api.etherscan.io/api |
| Features: header override، cached responses |
| |
| 4. CodeTabs (محبوب) |
| URL: https://api.codetabs.com/v1/proxy?quest={TARGET_URL} |
| Example: https://api.codetabs.com/v1/proxy?quest=https://api.binance.com/api/v3/ticker/price |
| |
| 5. ThingProxy (10 req/sec) |
| URL: https://thingproxy.freeboard.io/fetch/{TARGET_URL} |
| Example: https://thingproxy.freeboard.io/fetch/https://api.nomics.com/v1/currencies/ticker |
| Limit: 100,000 characters per request |
| |
| 6. Crossorigin.me |
| URL: https://crossorigin.me/{TARGET_URL} |
| Note: فقط GET، محدودیت 2MB |
| |
| 7. Self-Hosted CORS-Anywhere |
| GitHub: https://github.com/Rob--W/cors-anywhere |
| Deploy: Cloudflare Workers، Vercel، Heroku |
|
|
| USAGE PATTERN (الگوی استفاده): |
| ──────────────────────────────── |
| // Without CORS Proxy |
| fetch('https://api.example.com/data') |
|
|
| // With CORS Proxy |
| const corsProxy = 'https://api.allorigins.win/get?url='; |
| fetch(corsProxy + encodeURIComponent('https://api.example.com/data')) |
| .then(res => res.json()) |
| .then(data => console.log(data.contents)); |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 🔗 RPC NODE PROVIDERS - ارائهدهندگان نود RPC |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| ETHEREUM RPC ENDPOINTS: |
| ─────────────────────────────────── |
|
|
| 1. Infura (رایگان: 100K req/day) |
| Mainnet: https://mainnet.infura.io/v3/{PROJECT_ID} |
| Sepolia: https://sepolia.infura.io/v3/{PROJECT_ID} |
| Docs: https://docs.infura.io |
| |
| 2. Alchemy (رایگان: 300M compute units/month) |
| Mainnet: https://eth-mainnet.g.alchemy.com/v2/{API_KEY} |
| Sepolia: https://eth-sepolia.g.alchemy.com/v2/{API_KEY} |
| WebSocket: wss://eth-mainnet.g.alchemy.com/v2/{API_KEY} |
| Docs: https://docs.alchemy.com |
| |
| 3. Ankr (رایگان: بدون محدودیت عمومی) |
| Mainnet: https://rpc.ankr.com/eth |
| Docs: https://www.ankr.com/docs |
| |
| 4. PublicNode (کاملا رایگان) |
| Mainnet: https://ethereum.publicnode.com |
| All-in-one: https://ethereum-rpc.publicnode.com |
| |
| 5. Cloudflare (رایگان) |
| Mainnet: https://cloudflare-eth.com |
| |
| 6. LlamaNodes (رایگان) |
| Mainnet: https://eth.llamarpc.com |
| |
| 7. 1RPC (رایگان با privacy) |
| Mainnet: https://1rpc.io/eth |
| |
| 8. Chainnodes (ارزان) |
| Mainnet: https://mainnet.chainnodes.org/{API_KEY} |
| |
| 9. dRPC (decentralized) |
| Mainnet: https://eth.drpc.org |
| Docs: https://drpc.org |
|
|
| BSC (BINANCE SMART CHAIN) RPC: |
| ────────────────────────────────── |
|
|
| 1. Official BSC RPC (رایگان) |
| Mainnet: https://bsc-dataseed.binance.org |
| Alt1: https://bsc-dataseed1.defibit.io |
| Alt2: https://bsc-dataseed1.ninicoin.io |
| |
| 2. Ankr BSC |
| Mainnet: https://rpc.ankr.com/bsc |
| |
| 3. PublicNode BSC |
| Mainnet: https://bsc-rpc.publicnode.com |
| |
| 4. Nodereal BSC (رایگان: 3M req/day) |
| Mainnet: https://bsc-mainnet.nodereal.io/v1/{API_KEY} |
|
|
| TRON RPC ENDPOINTS: |
| ─────────────────────────── |
|
|
| 1. TronGrid (رایگان) |
| Mainnet: https://api.trongrid.io |
| Full Node: https://api.trongrid.io/wallet/getnowblock |
| |
| 2. TronStack (رایگان) |
| Mainnet: https://api.tronstack.io |
| |
| 3. Nile Testnet |
| Testnet: https://api.nileex.io |
|
|
| POLYGON RPC: |
| ────────────────── |
|
|
| 1. Polygon Official (رایگان) |
| Mainnet: https://polygon-rpc.com |
| Mumbai: https://rpc-mumbai.maticvigil.com |
| |
| 2. Ankr Polygon |
| Mainnet: https://rpc.ankr.com/polygon |
| |
| 3. Alchemy Polygon |
| Mainnet: https://polygon-mainnet.g.alchemy.com/v2/{API_KEY} |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 📊 BLOCK EXPLORER APIs - APIهای کاوشگر بلاکچین |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| CATEGORY 1: ETHEREUM EXPLORERS (11 endpoints) |
| ────────────────────────────────────────────── |
|
|
| PRIMARY: Etherscan |
| ───────────────────── |
| URL: https://api.etherscan.io/api |
| Key: SZHYFZK2RR8H9TIMJBVW54V4H81K2Z2KR2 |
| Rate Limit: 5 calls/sec (free tier) |
| Docs: https://docs.etherscan.io |
|
|
| Endpoints: |
| • Balance: ?module=account&action=balance&address={address}&tag=latest&apikey={KEY} |
| • Transactions: ?module=account&action=txlist&address={address}&startblock=0&endblock=99999999&sort=asc&apikey={KEY} |
| • Token Balance: ?module=account&action=tokenbalance&contractaddress={contract}&address={address}&tag=latest&apikey={KEY} |
| • Gas Price: ?module=gastracker&action=gasoracle&apikey={KEY} |
|
|
| Example (No Proxy): |
| fetch('https://api.etherscan.io/api?module=account&action=balance&address=0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb&tag=latest&apikey=SZHYFZK2RR8H9TIMJBVW54V4H81K2Z2KR2') |
|
|
| Example (With CORS Proxy): |
| const proxy = 'https://api.allorigins.win/get?url='; |
| const url = 'https://api.etherscan.io/api?module=account&action=balance&address=0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb&apikey=SZHYFZK2RR8H9TIMJBVW54V4H81K2Z2KR2'; |
| fetch(proxy + encodeURIComponent(url)) |
| .then(r => r.json()) |
| .then(data => { |
| const result = JSON.parse(data.contents); |
| console.log('Balance:', result.result / 1e18, 'ETH'); |
| }); |
|
|
| FALLBACK 1: Etherscan (Second Key) |
| ──────────────────────────────────── |
| URL: https://api.etherscan.io/api |
| Key: T6IR8VJHX2NE6ZJW2S3FDVN1TYG4PYYI45 |
|
|
| FALLBACK 2: Blockchair |
| ────────────────────── |
| URL: https://api.blockchair.com/ethereum/dashboards/address/{address} |
| Free: 1,440 requests/day |
| Docs: https://blockchair.com/api/docs |
|
|
| FALLBACK 3: BlockScout (Open Source) |
| ───────────────────────────────────── |
| URL: https://eth.blockscout.com/api |
| Free: بدون محدودیت |
| Docs: https://docs.blockscout.com |
|
|
| FALLBACK 4: Ethplorer |
| ────────────────────── |
| URL: https://api.ethplorer.io |
| Endpoint: /getAddressInfo/{address}?apiKey=freekey |
| Free: محدود |
| Docs: https://github.com/EverexIO/Ethplorer/wiki/Ethplorer-API |
|
|
| FALLBACK 5: Etherchain |
| ────────────────────── |
| URL: https://www.etherchain.org/api |
| Free: بله |
| Docs: https://www.etherchain.org/documentation/api |
|
|
| FALLBACK 6: Chainlens |
| ───────────────────── |
| URL: https://api.chainlens.com |
| Free tier available |
| Docs: https://docs.chainlens.com |
|
|
|
|
| CATEGORY 2: BSC EXPLORERS (6 endpoints) |
| ──────────────────────────────────────── |
|
|
| PRIMARY: BscScan |
| ──────────────── |
| URL: https://api.bscscan.com/api |
| Key: K62RKHGXTDCG53RU4MCG6XABIMJKTN19IT |
| Rate Limit: 5 calls/sec |
| Docs: https://docs.bscscan.com |
|
|
| Endpoints: |
| • BNB Balance: ?module=account&action=balance&address={address}&apikey={KEY} |
| • BEP-20 Balance: ?module=account&action=tokenbalance&contractaddress={token}&address={address}&apikey={KEY} |
| • Transactions: ?module=account&action=txlist&address={address}&apikey={KEY} |
|
|
| Example: |
| fetch('https://api.bscscan.com/api?module=account&action=balance&address=0x1234...&apikey=K62RKHGXTDCG53RU4MCG6XABIMJKTN19IT') |
| .then(r => r.json()) |
| .then(data => console.log('BNB:', data.result / 1e18)); |
|
|
| FALLBACK 1: BitQuery (BSC) |
| ────────────────────────── |
| URL: https://graphql.bitquery.io |
| Method: GraphQL POST |
| Free: 10K queries/month |
| Docs: https://docs.bitquery.io |
|
|
| GraphQL Example: |
| query { |
| ethereum(network: bsc) { |
| address(address: {is: "0x..."}) { |
| balances { |
| currency { symbol } |
| value |
| } |
| } |
| } |
| } |
|
|
| FALLBACK 2: Ankr MultiChain |
| ──────────────────────────── |
| URL: https://rpc.ankr.com/multichain |
| Method: JSON-RPC POST |
| Free: Public endpoints |
| Docs: https://www.ankr.com/docs/ |
|
|
| FALLBACK 3: Nodereal BSC |
| ──────────────────────── |
| URL: https://bsc-mainnet.nodereal.io/v1/{API_KEY} |
| Free tier: 3M requests/day |
| Docs: https://docs.nodereal.io |
|
|
| FALLBACK 4: BscTrace |
| ──────────────────── |
| URL: https://api.bsctrace.com |
| Free: Limited |
| Alternative explorer |
|
|
| FALLBACK 5: 1inch BSC API |
| ───────────────────────── |
| URL: https://api.1inch.io/v5.0/56 |
| Free: For trading data |
| Docs: https://docs.1inch.io |
|
|
|
|
| CATEGORY 3: TRON EXPLORERS (5 endpoints) |
| ───────────────────────────────────────── |
|
|
| PRIMARY: TronScan |
| ───────────────── |
| URL: https://apilist.tronscanapi.com/api |
| Key: 7ae72726-bffe-4e74-9c33-97b761eeea21 |
| Rate Limit: Varies |
| Docs: https://github.com/tronscan/tronscan-frontend/blob/dev2019/document/api.md |
|
|
| Endpoints: |
| • Account: /account?address={address} |
| • Transactions: /transaction?address={address}&limit=20 |
| • TRC20 Transfers: /token_trc20/transfers?address={address} |
| • Account Resources: /account/detail?address={address} |
|
|
| Example: |
| fetch('https://apilist.tronscanapi.com/api/account?address=TxxxXXXxxx') |
| .then(r => r.json()) |
| .then(data => console.log('TRX Balance:', data.balance / 1e6)); |
|
|
| FALLBACK 1: TronGrid (Official) |
| ──────────────────────────────── |
| URL: https://api.trongrid.io |
| Free: Public |
| Docs: https://developers.tron.network/docs |
|
|
| JSON-RPC Example: |
| fetch('https://api.trongrid.io/wallet/getaccount', { |
| method: 'POST', |
| headers: {'Content-Type': 'application/json'}, |
| body: JSON.stringify({ |
| address: 'TxxxXXXxxx', |
| visible: true |
| }) |
| }) |
|
|
| FALLBACK 2: Tron Official API |
| ────────────────────────────── |
| URL: https://api.tronstack.io |
| Free: Public |
| Docs: Similar to TronGrid |
|
|
| FALLBACK 3: Blockchair (TRON) |
| ────────────────────────────── |
| URL: https://api.blockchair.com/tron/dashboards/address/{address} |
| Free: 1,440 req/day |
| Docs: https://blockchair.com/api/docs |
|
|
| FALLBACK 4: Tronscan API v2 |
| ─────────────────────────── |
| URL: https://api.tronscan.org/api |
| Alternative endpoint |
| Similar structure |
|
|
| FALLBACK 5: GetBlock TRON |
| ───────────────────────── |
| URL: https://go.getblock.io/tron |
| Free tier available |
| Docs: https://getblock.io/docs/ |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 💰 MARKET DATA APIs - APIهای دادههای بازار |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| CATEGORY 1: PRICE & MARKET CAP (15+ endpoints) |
| ─────────────────────────────────────────────── |
|
|
| PRIMARY: CoinGecko (FREE - بدون کلید) |
| ────────────────────────────────────── |
| URL: https://api.coingecko.com/api/v3 |
| Rate Limit: 10-50 calls/min (free) |
| Docs: https://www.coingecko.com/en/api/documentation |
|
|
| Best Endpoints: |
| • Simple Price: /simple/price?ids=bitcoin,ethereum&vs_currencies=usd |
| • Coin Data: /coins/{id}?localization=false |
| • Market Chart: /coins/{id}/market_chart?vs_currency=usd&days=7 |
| • Global Data: /global |
| • Trending: /search/trending |
| • Categories: /coins/categories |
|
|
| Example (Works Everywhere): |
| fetch('https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,tron&vs_currencies=usd,eur') |
| .then(r => r.json()) |
| .then(data => console.log(data)); |
| // Output: {bitcoin: {usd: 45000, eur: 42000}, ...} |
|
|
| FALLBACK 1: CoinMarketCap (با کلید) |
| ───────────────────────────────────── |
| URL: https://pro-api.coinmarketcap.com/v1 |
| Key 1: b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c |
| Key 2: 04cf4b5b-9868-465c-8ba0-9f2e78c92eb1 |
| Rate Limit: 333 calls/day (free) |
| Docs: https://coinmarketcap.com/api/documentation/v1/ |
|
|
| Endpoints: |
| • Latest Quotes: /cryptocurrency/quotes/latest?symbol=BTC,ETH |
| • Listings: /cryptocurrency/listings/latest?limit=100 |
| • Market Pairs: /cryptocurrency/market-pairs/latest?id=1 |
|
|
| Example (Requires API Key in Header): |
| fetch('https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?symbol=BTC', { |
| headers: { |
| 'X-CMC_PRO_API_KEY': 'b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c' |
| } |
| }) |
| .then(r => r.json()) |
| .then(data => console.log(data.data.BTC)); |
|
|
| With CORS Proxy: |
| const proxy = 'https://proxy.cors.sh/'; |
| fetch(proxy + 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?symbol=BTC', { |
| headers: { |
| 'X-CMC_PRO_API_KEY': 'b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c', |
| 'Origin': 'https://myapp.com' |
| } |
| }) |
|
|
| FALLBACK 2: CryptoCompare |
| ───────────────────────── |
| URL: https://min-api.cryptocompare.com/data |
| Key: e79c8e6d4c5b4a3f2e1d0c9b8a7f6e5d4c3b2a1f |
| Free: 100K calls/month |
| Docs: https://min-api.cryptocompare.com/documentation |
|
|
| Endpoints: |
| • Price Multi: /pricemulti?fsyms=BTC,ETH&tsyms=USD,EUR&api_key={KEY} |
| • Historical: /v2/histoday?fsym=BTC&tsym=USD&limit=30&api_key={KEY} |
| • Top Volume: /top/totalvolfull?limit=10&tsym=USD&api_key={KEY} |
|
|
| FALLBACK 3: Coinpaprika (FREE) |
| ─────────────────────────────── |
| URL: https://api.coinpaprika.com/v1 |
| Rate Limit: 20K calls/month |
| Docs: https://api.coinpaprika.com/ |
|
|
| Endpoints: |
| • Tickers: /tickers |
| • Coin: /coins/btc-bitcoin |
| • Historical: /coins/btc-bitcoin/ohlcv/historical |
|
|
| FALLBACK 4: CoinCap (FREE) |
| ────────────────────────── |
| URL: https://api.coincap.io/v2 |
| Rate Limit: 200 req/min |
| Docs: https://docs.coincap.io/ |
|
|
| Endpoints: |
| • Assets: /assets |
| • Specific: /assets/bitcoin |
| • History: /assets/bitcoin/history?interval=d1 |
|
|
| FALLBACK 5: Nomics (FREE) |
| ───────────────────────── |
| URL: https://api.nomics.com/v1 |
| No Rate Limit on free tier |
| Docs: https://p.nomics.com/cryptocurrency-bitcoin-api |
|
|
| FALLBACK 6: Messari (FREE) |
| ────────────────────────── |
| URL: https://data.messari.io/api/v1 |
| Rate Limit: Generous |
| Docs: https://messari.io/api/docs |
|
|
| FALLBACK 7: CoinLore (FREE) |
| ─────────────────────────── |
| URL: https://api.coinlore.net/api |
| Rate Limit: None |
| Docs: https://www.coinlore.com/cryptocurrency-data-api |
|
|
| FALLBACK 8: Binance Public API |
| ─────────────────────────────── |
| URL: https://api.binance.com/api/v3 |
| Free: بله |
| Docs: https://binance-docs.github.io/apidocs/spot/en/ |
|
|
| Endpoints: |
| • Price: /ticker/price?symbol=BTCUSDT |
| • 24hr Stats: /ticker/24hr?symbol=ETHUSDT |
|
|
| FALLBACK 9: CoinDesk API |
| ──────────────────────── |
| URL: https://api.coindesk.com/v1 |
| Free: Bitcoin price index |
| Docs: https://www.coindesk.com/coindesk-api |
|
|
| FALLBACK 10: Mobula API |
| ─────────────────────── |
| URL: https://api.mobula.io/api/1 |
| Free: 50% cheaper than CMC |
| Coverage: 2.3M+ cryptocurrencies |
| Docs: https://developer.mobula.fi/ |
|
|
| FALLBACK 11: Token Metrics API |
| ─────────────────────────────── |
| URL: https://api.tokenmetrics.com/v2 |
| Free API key available |
| AI-driven insights |
| Docs: https://api.tokenmetrics.com/docs |
|
|
| FALLBACK 12: FreeCryptoAPI |
| ────────────────────────── |
| URL: https://api.freecryptoapi.com |
| Free: Beginner-friendly |
| Coverage: 3,000+ coins |
|
|
| FALLBACK 13: DIA Data |
| ───────────────────── |
| URL: https://api.diadata.org/v1 |
| Free: Decentralized oracle |
| Transparent pricing |
| Docs: https://docs.diadata.org |
|
|
| FALLBACK 14: Alternative.me |
| ─────────────────────────── |
| URL: https://api.alternative.me/v2 |
| Free: Price + Fear & Greed |
| Docs: In API responses |
|
|
| FALLBACK 15: CoinStats API |
| ────────────────────────── |
| URL: https://api.coinstats.app/public/v1 |
| Free tier available |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 📰 NEWS & SOCIAL APIs - APIهای اخبار و شبکههای اجتماعی |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| CATEGORY 1: CRYPTO NEWS (10+ endpoints) |
| ──────────────────────────────────────── |
|
|
| PRIMARY: CryptoPanic (FREE) |
| ─────────────────────────── |
| URL: https://cryptopanic.com/api/v1 |
| Free: بله |
| Docs: https://cryptopanic.com/developers/api/ |
|
|
| Endpoints: |
| • Posts: /posts/?auth_token={TOKEN}&public=true |
| • Currencies: /posts/?currencies=BTC,ETH |
| • Filter: /posts/?filter=rising |
|
|
| Example: |
| fetch('https://cryptopanic.com/api/v1/posts/?public=true') |
| .then(r => r.json()) |
| .then(data => console.log(data.results)); |
|
|
| FALLBACK 1: NewsAPI.org |
| ─────────────────────── |
| URL: https://newsapi.org/v2 |
| Key: pub_346789abc123def456789ghi012345jkl |
| Free: 100 req/day |
| Docs: https://newsapi.org/docs |
|
|
| FALLBACK 2: CryptoControl |
| ───────────────────────── |
| URL: https://cryptocontrol.io/api/v1/public |
| Free tier available |
| Docs: https://cryptocontrol.io/api |
|
|
| FALLBACK 3: CoinDesk News |
| ───────────────────────── |
| URL: https://www.coindesk.com/arc/outboundfeeds/rss/ |
| Free RSS feed |
|
|
| FALLBACK 4: CoinTelegraph API |
| ───────────────────────────── |
| URL: https://cointelegraph.com/api/v1 |
| Free: RSS and JSON feeds |
|
|
| FALLBACK 5: CryptoSlate |
| ─────────────────────── |
| URL: https://cryptoslate.com/api |
| Free: Limited |
|
|
| FALLBACK 6: The Block API |
| ───────────────────────── |
| URL: https://api.theblock.co/v1 |
| Premium service |
|
|
| FALLBACK 7: Bitcoin Magazine RSS |
| ──────────────────────────────── |
| URL: https://bitcoinmagazine.com/.rss/full/ |
| Free RSS |
|
|
| FALLBACK 8: Decrypt RSS |
| ─────────────────────── |
| URL: https://decrypt.co/feed |
| Free RSS |
|
|
| FALLBACK 9: Reddit Crypto |
| ───────────────────────── |
| URL: https://www.reddit.com/r/CryptoCurrency/new.json |
| Free: Public JSON |
| Limit: 60 req/min |
|
|
| Example: |
| fetch('https://www.reddit.com/r/CryptoCurrency/hot.json?limit=25') |
| .then(r => r.json()) |
| .then(data => console.log(data.data.children)); |
|
|
| FALLBACK 10: Twitter/X API (v2) |
| ─────────────────────────────── |
| URL: https://api.twitter.com/2 |
| Requires: OAuth 2.0 |
| Free tier: 1,500 tweets/month |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 😱 SENTIMENT & MOOD APIs - APIهای احساسات بازار |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| CATEGORY 1: FEAR & GREED INDEX (5+ endpoints) |
| ────────────────────────────────────────────── |
|
|
| PRIMARY: Alternative.me (FREE) |
| ────────────────────────────── |
| URL: https://api.alternative.me/fng/ |
| Free: بدون محدودیت |
| Docs: https://alternative.me/crypto/fear-and-greed-index/ |
|
|
| Endpoints: |
| • Current: /?limit=1 |
| • Historical: /?limit=30 |
| • Date Range: /?limit=10&date_format=world |
|
|
| Example: |
| fetch('https://api.alternative.me/fng/?limit=1') |
| .then(r => r.json()) |
| .then(data => { |
| const fng = data.data[0]; |
| console.log(`Fear & Greed: ${fng.value} - ${fng.value_classification}`); |
| }); |
| // Output: "Fear & Greed: 45 - Fear" |
|
|
| FALLBACK 1: LunarCrush |
| ────────────────────── |
| URL: https://api.lunarcrush.com/v2 |
| Free tier: Limited |
| Docs: https://lunarcrush.com/developers/api |
|
|
| Endpoints: |
| • Assets: ?data=assets&key={KEY} |
| • Market: ?data=market&key={KEY} |
| • Influencers: ?data=influencers&key={KEY} |
|
|
| FALLBACK 2: Santiment (GraphQL) |
| ──────────────────────────────── |
| URL: https://api.santiment.net/graphql |
| Free tier available |
| Docs: https://api.santiment.net/graphiql |
|
|
| GraphQL Example: |
| query { |
| getMetric(metric: "sentiment_balance_total") { |
| timeseriesData( |
| slug: "bitcoin" |
| from: "2025-10-01T00:00:00Z" |
| to: "2025-10-31T00:00:00Z" |
| interval: "1d" |
| ) { |
| datetime |
| value |
| } |
| } |
| } |
|
|
| FALLBACK 3: TheTie.io |
| ───────────────────── |
| URL: https://api.thetie.io |
| Premium mainly |
| Docs: https://docs.thetie.io |
|
|
| FALLBACK 4: CryptoQuant |
| ─────────────────────── |
| URL: https://api.cryptoquant.com/v1 |
| Free tier: Limited |
| Docs: https://docs.cryptoquant.com |
|
|
| FALLBACK 5: Glassnode Social |
| ──────────────────────────── |
| URL: https://api.glassnode.com/v1/metrics/social |
| Free tier: Limited |
| Docs: https://docs.glassnode.com |
|
|
| FALLBACK 6: Augmento (Social) |
| ────────────────────────────── |
| URL: https://api.augmento.ai/v1 |
| AI-powered sentiment |
| Free trial available |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 🐋 WHALE TRACKING APIs - APIهای ردیابی نهنگها |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| CATEGORY 1: WHALE TRANSACTIONS (8+ endpoints) |
| ────────────────────────────────────────────── |
|
|
| PRIMARY: Whale Alert |
| ──────────────────── |
| URL: https://api.whale-alert.io/v1 |
| Free: Limited (7-day trial) |
| Paid: From $20/month |
| Docs: https://docs.whale-alert.io |
|
|
| Endpoints: |
| • Transactions: /transactions?api_key={KEY}&min_value=1000000&start={timestamp}&end={timestamp} |
| • Status: /status?api_key={KEY} |
|
|
| Example: |
| const start = Math.floor(Date.now()/1000) - 3600; // 1 hour ago |
| const end = Math.floor(Date.now()/1000); |
| fetch(`https://api.whale-alert.io/v1/transactions?api_key=YOUR_KEY&min_value=1000000&start=${start}&end=${end}`) |
| .then(r => r.json()) |
| .then(data => { |
| data.transactions.forEach(tx => { |
| console.log(`${tx.amount} ${tx.symbol} from ${tx.from.owner} to ${tx.to.owner}`); |
| }); |
| }); |
|
|
| FALLBACK 1: ClankApp (FREE) |
| ─────────────────────────── |
| URL: https://clankapp.com/api |
| Free: بله |
| Telegram: @clankapp |
| Twitter: @ClankApp |
| Docs: https://clankapp.com/api/ |
|
|
| Features: |
| • 24 blockchains |
| • Real-time whale alerts |
| • Email & push notifications |
| • No API key needed |
|
|
| Example: |
| fetch('https://clankapp.com/api/whales/recent') |
| .then(r => r.json()) |
| .then(data => console.log(data)); |
|
|
| FALLBACK 2: BitQuery Whale Tracking |
| ──────────────────────────────────── |
| URL: https://graphql.bitquery.io |
| Free: 10K queries/month |
| Docs: https://docs.bitquery.io |
|
|
| GraphQL Example (Large ETH Transfers): |
| { |
| ethereum(network: ethereum) { |
| transfers( |
| amount: {gt: 1000} |
| currency: {is: "ETH"} |
| date: {since: "2025-10-25"} |
| ) { |
| block { timestamp { time } } |
| sender { address } |
| receiver { address } |
| amount |
| transaction { hash } |
| } |
| } |
| } |
|
|
| FALLBACK 3: Arkham Intelligence |
| ──────────────────────────────── |
| URL: https://api.arkham.com |
| Paid service mainly |
| Docs: https://docs.arkham.com |
|
|
| FALLBACK 4: Nansen |
| ────────────────── |
| URL: https://api.nansen.ai/v1 |
| Premium: Expensive but powerful |
| Docs: https://docs.nansen.ai |
|
|
| Features: |
| • Smart Money tracking |
| • Wallet labeling |
| • Multi-chain support |
|
|
| FALLBACK 5: DexCheck Whale Tracker |
| ─────────────────────────────────── |
| Free wallet tracking feature |
| 22 chains supported |
| Telegram bot integration |
|
|
| FALLBACK 6: DeBank |
| ────────────────── |
| URL: https://api.debank.com |
| Free: Portfolio tracking |
| Web3 social features |
|
|
| FALLBACK 7: Zerion API |
| ────────────────────── |
| URL: https://api.zerion.io |
| Similar to DeBank |
| DeFi portfolio tracker |
|
|
| FALLBACK 8: Whalemap |
| ──────────────────── |
| URL: https://whalemap.io |
| Bitcoin & ERC-20 focus |
| Charts and analytics |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 🔍 ON-CHAIN ANALYTICS APIs - APIهای تحلیل زنجیره |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| CATEGORY 1: BLOCKCHAIN DATA (10+ endpoints) |
| ──────────────────────────────────────────── |
|
|
| PRIMARY: The Graph (Subgraphs) |
| ────────────────────────────── |
| URL: https://api.thegraph.com/subgraphs/name/{org}/{subgraph} |
| Free: Public subgraphs |
| Docs: https://thegraph.com/docs/ |
|
|
| Popular Subgraphs: |
| • Uniswap V3: /uniswap/uniswap-v3 |
| • Aave V2: /aave/protocol-v2 |
| • Compound: /graphprotocol/compound-v2 |
|
|
| Example (Uniswap V3): |
| fetch('https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3', { |
| method: 'POST', |
| headers: {'Content-Type': 'application/json'}, |
| body: JSON.stringify({ |
| query: `{ |
| pools(first: 5, orderBy: volumeUSD, orderDirection: desc) { |
| id |
| token0 { symbol } |
| token1 { symbol } |
| volumeUSD |
| } |
| }` |
| }) |
| }) |
|
|
| FALLBACK 1: Glassnode |
| ───────────────────── |
| URL: https://api.glassnode.com/v1 |
| Free tier: Limited metrics |
| Docs: https://docs.glassnode.com |
|
|
| Endpoints: |
| • SOPR: /metrics/indicators/sopr?a=BTC&api_key={KEY} |
| • HODL Waves: /metrics/supply/hodl_waves?a=BTC&api_key={KEY} |
|
|
| FALLBACK 2: IntoTheBlock |
| ──────────────────────── |
| URL: https://api.intotheblock.com/v1 |
| Free tier available |
| Docs: https://developers.intotheblock.com |
|
|
| FALLBACK 3: Dune Analytics |
| ────────────────────────── |
| URL: https://api.dune.com/api/v1 |
| Free: Query results |
| Docs: https://docs.dune.com/api-reference/ |
|
|
| FALLBACK 4: Covalent |
| ──────────────────── |
| URL: https://api.covalenthq.com/v1 |
| Free tier: 100K credits |
| Multi-chain support |
| Docs: https://www.covalenthq.com/docs/api/ |
|
|
| Example (Ethereum balances): |
| fetch('https://api.covalenthq.com/v1/1/address/0x.../balances_v2/?key=YOUR_KEY') |
|
|
| FALLBACK 5: Moralis |
| ─────────────────── |
| URL: https://deep-index.moralis.io/api/v2 |
| Free: 100K compute units/month |
| Docs: https://docs.moralis.io |
|
|
| FALLBACK 6: Alchemy NFT API |
| ─────────────────────────── |
| Included with Alchemy account |
| NFT metadata & transfers |
|
|
| FALLBACK 7: QuickNode Functions |
| ──────────────────────────────── |
| Custom on-chain queries |
| Token balances, NFTs |
|
|
| FALLBACK 8: Transpose |
| ───────────────────── |
| URL: https://api.transpose.io |
| Free tier available |
| SQL-like queries |
|
|
| FALLBACK 9: Footprint Analytics |
| ──────────────────────────────── |
| URL: https://api.footprint.network |
| Free: Community tier |
| No-code analytics |
|
|
| FALLBACK 10: Nansen Query |
| ───────────────────────── |
| Premium institutional tool |
| Advanced on-chain intelligence |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 🔧 COMPLETE JAVASCRIPT IMPLEMENTATION |
| پیادهسازی کامل جاوااسکریپت |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| // ═══════════════════════════════════════════════════════════════════════════════ |
| // CONFIG.JS - تنظیمات مرکزی API |
| // ═══════════════════════════════════════════════════════════════════════════════ |
|
|
| const API_CONFIG = { |
| // CORS Proxies (پروکسیهای CORS) |
| corsProxies: [ |
| 'https://api.allorigins.win/get?url=', |
| 'https://proxy.cors.sh/', |
| 'https://proxy.corsfix.com/?url=', |
| 'https://api.codetabs.com/v1/proxy?quest=', |
| 'https://thingproxy.freeboard.io/fetch/' |
| ], |
| |
| // Block Explorers (کاوشگرهای بلاکچین) |
| explorers: { |
| ethereum: { |
| primary: { |
| name: 'etherscan', |
| baseUrl: 'https://api.etherscan.io/api', |
| key: 'SZHYFZK2RR8H9TIMJBVW54V4H81K2Z2KR2', |
| rateLimit: 5 // calls per second |
| }, |
| fallbacks: [ |
| { name: 'etherscan2', baseUrl: 'https://api.etherscan.io/api', key: 'T6IR8VJHX2NE6ZJW2S3FDVN1TYG4PYYI45' }, |
| { name: 'blockchair', baseUrl: 'https://api.blockchair.com/ethereum', key: '' }, |
| { name: 'blockscout', baseUrl: 'https://eth.blockscout.com/api', key: '' }, |
| { name: 'ethplorer', baseUrl: 'https://api.ethplorer.io', key: 'freekey' } |
| ] |
| }, |
| bsc: { |
| primary: { |
| name: 'bscscan', |
| baseUrl: 'https://api.bscscan.com/api', |
| key: 'K62RKHGXTDCG53RU4MCG6XABIMJKTN19IT', |
| rateLimit: 5 |
| }, |
| fallbacks: [ |
| { name: 'blockchair', baseUrl: 'https://api.blockchair.com/binance-smart-chain', key: '' }, |
| { name: 'bitquery', baseUrl: 'https://graphql.bitquery.io', key: '', method: 'graphql' } |
| ] |
| }, |
| tron: { |
| primary: { |
| name: 'tronscan', |
| baseUrl: 'https://apilist.tronscanapi.com/api', |
| key: '7ae72726-bffe-4e74-9c33-97b761eeea21', |
| rateLimit: 10 |
| }, |
| fallbacks: [ |
| { name: 'trongrid', baseUrl: 'https://api.trongrid.io', key: '' }, |
| { name: 'tronstack', baseUrl: 'https://api.tronstack.io', key: '' }, |
| { name: 'blockchair', baseUrl: 'https://api.blockchair.com/tron', key: '' } |
| ] |
| } |
| }, |
| |
| // Market Data (دادههای بازار) |
| marketData: { |
| primary: { |
| name: 'coingecko', |
| baseUrl: 'https://api.coingecko.com/api/v3', |
| key: '', // بدون کلید |
| needsProxy: false, |
| rateLimit: 50 // calls per minute |
| }, |
| fallbacks: [ |
| { |
| name: 'coinmarketcap', |
| baseUrl: 'https://pro-api.coinmarketcap.com/v1', |
| key: 'b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c', |
| headerKey: 'X-CMC_PRO_API_KEY', |
| needsProxy: true |
| }, |
| { |
| name: 'coinmarketcap2', |
| baseUrl: 'https://pro-api.coinmarketcap.com/v1', |
| key: '04cf4b5b-9868-465c-8ba0-9f2e78c92eb1', |
| headerKey: 'X-CMC_PRO_API_KEY', |
| needsProxy: true |
| }, |
| { name: 'coincap', baseUrl: 'https://api.coincap.io/v2', key: '' }, |
| { name: 'coinpaprika', baseUrl: 'https://api.coinpaprika.com/v1', key: '' }, |
| { name: 'binance', baseUrl: 'https://api.binance.com/api/v3', key: '' }, |
| { name: 'coinlore', baseUrl: 'https://api.coinlore.net/api', key: '' } |
| ] |
| }, |
| |
| // RPC Nodes (نودهای RPC) |
| rpcNodes: { |
| ethereum: [ |
| 'https://eth.llamarpc.com', |
| 'https://ethereum.publicnode.com', |
| 'https://cloudflare-eth.com', |
| 'https://rpc.ankr.com/eth', |
| 'https://eth.drpc.org' |
| ], |
| bsc: [ |
| 'https://bsc-dataseed.binance.org', |
| 'https://bsc-dataseed1.defibit.io', |
| 'https://rpc.ankr.com/bsc', |
| 'https://bsc-rpc.publicnode.com' |
| ], |
| polygon: [ |
| 'https://polygon-rpc.com', |
| 'https://rpc.ankr.com/polygon', |
| 'https://polygon-bor-rpc.publicnode.com' |
| ] |
| }, |
| |
| // News Sources (منابع خبری) |
| news: { |
| primary: { |
| name: 'cryptopanic', |
| baseUrl: 'https://cryptopanic.com/api/v1', |
| key: '', |
| needsProxy: false |
| }, |
| fallbacks: [ |
| { name: 'reddit', baseUrl: 'https://www.reddit.com/r/CryptoCurrency', key: '' } |
| ] |
| }, |
| |
| // Sentiment (احساسات) |
| sentiment: { |
| primary: { |
| name: 'alternative.me', |
| baseUrl: 'https://api.alternative.me/fng', |
| key: '', |
| needsProxy: false |
| } |
| }, |
| |
| // Whale Tracking (ردیابی نهنگ) |
| whaleTracking: { |
| primary: { |
| name: 'clankapp', |
| baseUrl: 'https://clankapp.com/api', |
| key: '', |
| needsProxy: false |
| } |
| } |
| }; |
|
|
| // ═══════════════════════════════════════════════════════════════════════════════ |
| // API-CLIENT.JS - کلاینت API با مدیریت خطا و fallback |
| // ═══════════════════════════════════════════════════════════════════════════════ |
|
|
| class CryptoAPIClient { |
| constructor(config) { |
| this.config = config; |
| this.currentProxyIndex = 0; |
| this.requestCache = new Map(); |
| this.cacheTimeout = 60000; // 1 minute |
| } |
| |
| // استفاده از CORS Proxy |
| async fetchWithProxy(url, options = {}) { |
| const proxies = this.config.corsProxies; |
| |
| for (let i = 0; i < proxies.length; i++) { |
| const proxyUrl = proxies[this.currentProxyIndex] + encodeURIComponent(url); |
| |
| try { |
| console.log(`🔄 Trying proxy ${this.currentProxyIndex + 1}/${proxies.length}`); |
| |
| const response = await fetch(proxyUrl, { |
| ...options, |
| headers: { |
| ...options.headers, |
| 'Origin': window.location.origin, |
| 'x-requested-with': 'XMLHttpRequest' |
| } |
| }); |
| |
| if (response.ok) { |
| const data = await response.json(); |
| // Handle allOrigins response format |
| return data.contents ? JSON.parse(data.contents) : data; |
| } |
| } catch (error) { |
| console.warn(`❌ Proxy ${this.currentProxyIndex + 1} failed:`, error.message); |
| } |
| |
| // Switch to next proxy |
| this.currentProxyIndex = (this.currentProxyIndex + 1) % proxies.length; |
| } |
| |
| throw new Error('All CORS proxies failed'); |
| } |
| |
| // بدون پروکسی |
| async fetchDirect(url, options = {}) { |
| try { |
| const response = await fetch(url, options); |
| if (!response.ok) throw new Error(`HTTP ${response.status}`); |
| return await response.json(); |
| } catch (error) { |
| throw new Error(`Direct fetch failed: ${error.message}`); |
| } |
| } |
| |
| // با cache و fallback |
| async fetchWithFallback(primaryConfig, fallbacks, endpoint, params = {}) { |
| const cacheKey = `${primaryConfig.name}-${endpoint}-${JSON.stringify(params)}`; |
| |
| // Check cache |
| if (this.requestCache.has(cacheKey)) { |
| const cached = this.requestCache.get(cacheKey); |
| if (Date.now() - cached.timestamp < this.cacheTimeout) { |
| console.log('📦 Using cached data'); |
| return cached.data; |
| } |
| } |
| |
| // Try primary |
| try { |
| const data = await this.makeRequest(primaryConfig, endpoint, params); |
| this.requestCache.set(cacheKey, { data, timestamp: Date.now() }); |
| return data; |
| } catch (error) { |
| console.warn('⚠️ Primary failed, trying fallbacks...', error.message); |
| } |
| |
| // Try fallbacks |
| for (const fallback of fallbacks) { |
| try { |
| console.log(`🔄 Trying fallback: ${fallback.name}`); |
| const data = await this.makeRequest(fallback, endpoint, params); |
| this.requestCache.set(cacheKey, { data, timestamp: Date.now() }); |
| return data; |
| } catch (error) { |
| console.warn(`❌ Fallback ${fallback.name} failed:`, error.message); |
| } |
| } |
| |
| throw new Error('All endpoints failed'); |
| } |
| |
| // ساخت درخواست |
| async makeRequest(apiConfig, endpoint, params = {}) { |
| let url = `${apiConfig.baseUrl}${endpoint}`; |
| |
| // Add query params |
| const queryParams = new URLSearchParams(); |
| if (apiConfig.key) { |
| queryParams.append('apikey', apiConfig.key); |
| } |
| Object.entries(params).forEach(([key, value]) => { |
| queryParams.append(key, value); |
| }); |
| |
| if (queryParams.toString()) { |
| url += '?' + queryParams.toString(); |
| } |
| |
| const options = {}; |
| |
| // Add headers if needed |
| if (apiConfig.headerKey && apiConfig.key) { |
| options.headers = { |
| [apiConfig.headerKey]: apiConfig.key |
| }; |
| } |
| |
| // Use proxy if needed |
| if (apiConfig.needsProxy) { |
| return await this.fetchWithProxy(url, options); |
| } else { |
| return await this.fetchDirect(url, options); |
| } |
| } |
| |
| // ═══════════════ SPECIFIC API METHODS ═══════════════ |
| |
| // Get ETH Balance (با fallback) |
| async getEthBalance(address) { |
| const { ethereum } = this.config.explorers; |
| return await this.fetchWithFallback( |
| ethereum.primary, |
| ethereum.fallbacks, |
| '', |
| { |
| module: 'account', |
| action: 'balance', |
| address: address, |
| tag: 'latest' |
| } |
| ); |
| } |
| |
| // Get BTC Price (multi-source) |
| async getBitcoinPrice() { |
| const { marketData } = this.config; |
| |
| try { |
| // Try CoinGecko first (no key needed, no CORS) |
| const data = await this.fetchDirect( |
| `${marketData.primary.baseUrl}/simple/price?ids=bitcoin&vs_currencies=usd,eur` |
| ); |
| return { |
| source: 'CoinGecko', |
| usd: data.bitcoin.usd, |
| eur: data.bitcoin.eur |
| }; |
| } catch (error) { |
| // Fallback to Binance |
| try { |
| const data = await this.fetchDirect( |
| 'https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT' |
| ); |
| return { |
| source: 'Binance', |
| usd: parseFloat(data.price), |
| eur: null |
| }; |
| } catch (err) { |
| throw new Error('All price sources failed'); |
| } |
| } |
| } |
| |
| // Get Fear & Greed Index |
| async getFearGreed() { |
| const url = `${this.config.sentiment.primary.baseUrl}/?limit=1`; |
| const data = await this.fetchDirect(url); |
| return { |
| value: parseInt(data.data[0].value), |
| classification: data.data[0].value_classification, |
| timestamp: new Date(parseInt(data.data[0].timestamp) * 1000) |
| }; |
| } |
| |
| // Get Trending Coins |
| async getTrendingCoins() { |
| const url = `${this.config.marketData.primary.baseUrl}/search/trending`; |
| const data = await this.fetchDirect(url); |
| return data.coins.map(item => ({ |
| id: item.item.id, |
| name: item.item.name, |
| symbol: item.item.symbol, |
| rank: item.item.market_cap_rank, |
| thumb: item.item.thumb |
| })); |
| } |
| |
| // Get Crypto News |
| async getCryptoNews(limit = 10) { |
| const url = `${this.config.news.primary.baseUrl}/posts/?public=true`; |
| const data = await this.fetchDirect(url); |
| return data.results.slice(0, limit).map(post => ({ |
| title: post.title, |
| url: post.url, |
| source: post.source.title, |
| published: new Date(post.published_at) |
| })); |
| } |
| |
| // Get Recent Whale Transactions |
| async getWhaleTransactions() { |
| try { |
| const url = `${this.config.whaleTracking.primary.baseUrl}/whales/recent`; |
| return await this.fetchDirect(url); |
| } catch (error) { |
| console.warn('Whale API not available'); |
| return []; |
| } |
| } |
| |
| // Multi-source price aggregator |
| async getAggregatedPrice(symbol) { |
| const sources = [ |
| { |
| name: 'CoinGecko', |
| fetch: async () => { |
| const data = await this.fetchDirect( |
| `${this.config.marketData.primary.baseUrl}/simple/price?ids=${symbol}&vs_currencies=usd` |
| ); |
| return data[symbol]?.usd; |
| } |
| }, |
| { |
| name: 'Binance', |
| fetch: async () => { |
| const data = await this.fetchDirect( |
| `https://api.binance.com/api/v3/ticker/price?symbol=${symbol.toUpperCase()}USDT` |
| ); |
| return parseFloat(data.price); |
| } |
| }, |
| { |
| name: 'CoinCap', |
| fetch: async () => { |
| const data = await this.fetchDirect( |
| `https://api.coincap.io/v2/assets/${symbol}` |
| ); |
| return parseFloat(data.data.priceUsd); |
| } |
| } |
| ]; |
| |
| const prices = await Promise.allSettled( |
| sources.map(async source => ({ |
| source: source.name, |
| price: await source.fetch() |
| })) |
| ); |
| |
| const successful = prices |
| .filter(p => p.status === 'fulfilled') |
| .map(p => p.value); |
| |
| if (successful.length === 0) { |
| throw new Error('All price sources failed'); |
| } |
| |
| const avgPrice = successful.reduce((sum, p) => sum + p.price, 0) / successful.length; |
| |
| return { |
| symbol, |
| sources: successful, |
| average: avgPrice, |
| spread: Math.max(...successful.map(p => p.price)) - Math.min(...successful.map(p => p.price)) |
| }; |
| } |
| } |
|
|
| // ═══════════════════════════════════════════════════════════════════════════════ |
| // USAGE EXAMPLES - مثالهای استفاده |
| // ═══════════════════════════════════════════════════════════════════════════════ |
|
|
| // Initialize |
| const api = new CryptoAPIClient(API_CONFIG); |
|
|
| // Example 1: Get Ethereum Balance |
| async function example1() { |
| try { |
| const address = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb'; |
| const balance = await api.getEthBalance(address); |
| console.log('ETH Balance:', parseInt(balance.result) / 1e18); |
| } catch (error) { |
| console.error('Error:', error.message); |
| } |
| } |
|
|
| // Example 2: Get Bitcoin Price from Multiple Sources |
| async function example2() { |
| try { |
| const price = await api.getBitcoinPrice(); |
| console.log(`BTC Price (${price.source}): $${price.usd}`); |
| } catch (error) { |
| console.error('Error:', error.message); |
| } |
| } |
|
|
| // Example 3: Get Fear & Greed Index |
| async function example3() { |
| try { |
| const fng = await api.getFearGreed(); |
| console.log(`Fear & Greed: ${fng.value} (${fng.classification})`); |
| } catch (error) { |
| console.error('Error:', error.message); |
| } |
| } |
|
|
| // Example 4: Get Trending Coins |
| async function example4() { |
| try { |
| const trending = await api.getTrendingCoins(); |
| console.log('Trending Coins:'); |
| trending.forEach((coin, i) => { |
| console.log(`${i + 1}. ${coin.name} (${coin.symbol})`); |
| }); |
| } catch (error) { |
| console.error('Error:', error.message); |
| } |
| } |
|
|
| // Example 5: Get Latest News |
| async function example5() { |
| try { |
| const news = await api.getCryptoNews(5); |
| console.log('Latest News:'); |
| news.forEach((article, i) => { |
| console.log(`${i + 1}. ${article.title} - ${article.source}`); |
| }); |
| } catch (error) { |
| console.error('Error:', error.message); |
| } |
| } |
|
|
| // Example 6: Aggregate Price from Multiple Sources |
| async function example6() { |
| try { |
| const priceData = await api.getAggregatedPrice('bitcoin'); |
| console.log('Price Sources:'); |
| priceData.sources.forEach(s => { |
| console.log(`- ${s.source}: $${s.price.toFixed(2)}`); |
| }); |
| console.log(`Average: $${priceData.average.toFixed(2)}`); |
| console.log(`Spread: $${priceData.spread.toFixed(2)}`); |
| } catch (error) { |
| console.error('Error:', error.message); |
| } |
| } |
|
|
| // Example 7: Dashboard - All Data |
| async function dashboardExample() { |
| console.log('🚀 Loading Crypto Dashboard...\n'); |
| |
| try { |
| // Price |
| const btcPrice = await api.getBitcoinPrice(); |
| console.log(`💰 BTC: $${btcPrice.usd.toLocaleString()}`); |
| |
| // Fear & Greed |
| const fng = await api.getFearGreed(); |
| console.log(`😱 Fear & Greed: ${fng.value} (${fng.classification})`); |
| |
| // Trending |
| const trending = await api.getTrendingCoins(); |
| console.log(`\n🔥 Trending:`); |
| trending.slice(0, 3).forEach((coin, i) => { |
| console.log(` ${i + 1}. ${coin.name}`); |
| }); |
| |
| // News |
| const news = await api.getCryptoNews(3); |
| console.log(`\n📰 Latest News:`); |
| news.forEach((article, i) => { |
| console.log(` ${i + 1}. ${article.title.substring(0, 50)}...`); |
| }); |
| |
| } catch (error) { |
| console.error('Dashboard Error:', error.message); |
| } |
| } |
|
|
| // Run examples |
| console.log('═══════════════════════════════════════'); |
| console.log(' CRYPTO API CLIENT - TEST SUITE'); |
| console.log('═══════════════════════════════════════\n'); |
|
|
| // Uncomment to run specific examples: |
| // example1(); |
| // example2(); |
| // example3(); |
| // example4(); |
| // example5(); |
| // example6(); |
| dashboardExample(); |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 📝 QUICK REFERENCE - مرجع سریع |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| BEST FREE APIs (بهترین APIهای رایگان): |
| ───────────────────────────────────────── |
|
|
| ✅ PRICES & MARKET DATA: |
| 1. CoinGecko (بدون کلید، بدون CORS) |
| 2. Binance Public API (بدون کلید) |
| 3. CoinCap (بدون کلید) |
| 4. CoinPaprika (بدون کلید) |
|
|
| ✅ BLOCK EXPLORERS: |
| 1. Blockchair (1,440 req/day) |
| 2. BlockScout (بدون محدودیت) |
| 3. Public RPC nodes (various) |
|
|
| ✅ NEWS: |
| 1. CryptoPanic (بدون کلید) |
| 2. Reddit JSON API (60 req/min) |
|
|
| ✅ SENTIMENT: |
| 1. Alternative.me F&G (بدون محدودیت) |
|
|
| ✅ WHALE TRACKING: |
| 1. ClankApp (بدون کلید) |
| 2. BitQuery GraphQL (10K/month) |
|
|
| ✅ RPC NODES: |
| 1. PublicNode (همه شبکهها) |
| 2. Ankr (عمومی) |
| 3. LlamaNodes (بدون ثبتنام) |
|
|
|
|
| RATE LIMIT STRATEGIES (استراتژیهای محدودیت): |
| ─────────────────────────────────────────────── |
|
|
| 1. کش کردن (Caching): |
| - ذخیره نتایج برای 1-5 دقیقه |
| - استفاده از localStorage برای کش مرورگر |
|
|
| 2. چرخش کلید (Key Rotation): |
| - استفاده از چندین کلید API |
| - تعویض خودکار در صورت محدودیت |
|
|
| 3. Fallback Chain: |
| - Primary → Fallback1 → Fallback2 |
| - تا 5-10 جایگزین برای هر سرویس |
|
|
| 4. Request Queuing: |
| - صف بندی درخواستها |
| - تاخیر بین درخواستها |
|
|
| 5. Multi-Source Aggregation: |
| - دریافت از چند منبع همزمان |
| - میانگین گیری نتایج |
|
|
|
|
| ERROR HANDLING (مدیریت خطا): |
| ────────────────────────────── |
|
|
| try { |
| const data = await api.fetchWithFallback(primary, fallbacks, endpoint, params); |
| } catch (error) { |
| if (error.message.includes('rate limit')) { |
| // Switch to fallback |
| } else if (error.message.includes('CORS')) { |
| // Use CORS proxy |
| } else { |
| // Show error to user |
| } |
| } |
|
|
|
|
| DEPLOYMENT TIPS (نکات استقرار): |
| ───────────────────────────────── |
|
|
| 1. Backend Proxy (توصیه میشود): |
| - Node.js/Express proxy server |
| - Cloudflare Worker |
| - Vercel Serverless Function |
|
|
| 2. Environment Variables: |
| - ذخیره کلیدها در .env |
| - عدم نمایش در کد فرانتاند |
|
|
| 3. Rate Limiting: |
| - محدودسازی درخواست کاربر |
| - استفاده از Redis برای کنترل |
|
|
| 4. Monitoring: |
| - لاگ گرفتن از خطاها |
| - ردیابی استفاده از API |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| 🔗 USEFUL LINKS - لینکهای مفید |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| DOCUMENTATION: |
| • CoinGecko API: https://www.coingecko.com/api/documentation |
| • Etherscan API: https://docs.etherscan.io |
| • BscScan API: https://docs.bscscan.com |
| • TronGrid: https://developers.tron.network |
| • Alchemy: https://docs.alchemy.com |
| • Infura: https://docs.infura.io |
| • The Graph: https://thegraph.com/docs |
| • BitQuery: https://docs.bitquery.io |
|
|
| CORS PROXY ALTERNATIVES: |
| • CORS Anywhere: https://github.com/Rob--W/cors-anywhere |
| • AllOrigins: https://github.com/gnuns/allOrigins |
| • CORS.SH: https://cors.sh |
| • Corsfix: https://corsfix.com |
|
|
| RPC LISTS: |
| • ChainList: https://chainlist.org |
| • Awesome RPC: https://github.com/arddluma/awesome-list-rpc-nodes-providers |
|
|
| TOOLS: |
| • Postman: https://www.postman.com |
| • Insomnia: https://insomnia.rest |
| • GraphiQL: https://graphiql-online.com |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| ⚠️ IMPORTANT NOTES - نکات مهم |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| 1. ⚠️ NEVER expose API keys in frontend code |
| - همیشه از backend proxy استفاده کنید |
| - کلیدها را در environment variables ذخیره کنید |
|
|
| 2. 🔄 Always implement fallbacks |
| - حداقل 2-3 جایگزین برای هر سرویس |
| - تست منظم fallbackها |
|
|
| 3. 💾 Cache responses when possible |
| - صرفهجویی در استفاده از API |
| - سرعت بیشتر برای کاربر |
|
|
| 4. 📊 Monitor API usage |
| - ردیابی تعداد درخواستها |
| - هشدار قبل از رسیدن به محدودیت |
|
|
| 5. 🔐 Secure your endpoints |
| - محدودسازی domain |
| - استفاده از CORS headers |
| - Rate limiting برای کاربران |
|
|
| 6. 🌐 Test with and without CORS proxies |
| - برخی APIها CORS را پشتیبانی میکنند |
| - استفاده از پروکسی فقط در صورت نیاز |
|
|
| 7. 📱 Mobile-friendly implementations |
| - بهینهسازی برای شبکههای ضعیف |
| - کاهش اندازه درخواستها |
|
|
|
|
| ═══════════════════════════════════════════════════════════════════════════════════════ |
| END OF CONFIGURATION FILE |
| پایان فایل تنظیمات |
| ═══════════════════════════════════════════════════════════════════════════════════════ |
|
|
| Last Updated: October 31, 2025 |
| Version: 2.0 |
| Author: AI Assistant |
| License: Free to use |
|
|
| For updates and more resources, check: |
| - GitHub: Search for "awesome-crypto-apis" |
| - Reddit: r/CryptoCurrency, r/ethdev |
| - Discord: Web3 developer communities |