Multi-exchange crypto symbols intelligence tool
Fetch and analyze perpetual/derivative symbols from crypto exchanges with a clean, modular CLI interface.
- β Fetch all perpetual and derivative symbols from Bybit V5 API
- β Support for both linear (USDT) and inverse categories
- β Automatic pagination handling
- β Filter by symbol name or status
- β Multiple output formats (text, JSON, interactive TUI)
- β Modular architecture - easy to add new exchanges
- β Fast execution (< 3 seconds for all symbols)
# Clone and build
git clone https://github.com/HanSoBored/CryptoScope
cd cryptoscope
cargo build --release
# Or install directly
cargo install --path .# Fetch all symbols from Bybit (linear + inverse)
cryptoscope
# Fetch only linear (USDT perpetual) symbols
cryptoscope --category linear
# Fetch only inverse perpetual symbols
cryptoscope --category inverse# Human-readable text output (default)
cryptoscope --output text
# Machine-readable JSON output
cryptoscope --output json > symbols.json
# Interactive terminal UI (TUI)
cryptoscope --output tui# Search for symbols containing "BTC"
cryptoscope --search BTC
# Combine filters
cryptoscope --search ETH --category linear# Enable verbose logging
cryptoscope --verbose
# See all available options
cryptoscope --help=== CryptoScope: BYBIT Perpetual Symbols ===
Exchange: BYBIT
Categories: linear, inverse
π Statistics:
Total Symbols: 669
By Category:
INVERSE (Inverse Perpetual): 27
LINEAR (USDT Perpetual): 642
By Contract Type:
LinearPerpetual: 606
LinearFutures: 36
InversePerpetual: 23
InverseFutures: 4
π Sample Symbols (first 20):
0GUSDT, 1000000BABYDOGEUSDT, 1000000CHEEMSUSDT, ...
... and 649 more
β
Fetch completed in 3.1s
Launch the interactive terminal UI:
cryptoscope --output tuiThe TUI features:
- Symbol table - Scrollable list with selection highlighting
- Stats dashboard - Toggle with
Tabto view statistics - Search - Press
/to filter symbols in real-time - Refresh - Press
rto re-fetch symbols from the API - Cyberpunk theme - Dark UI with neon accent colors
Key bindings:
| Key | Action |
|---|---|
q / Esc |
Quit |
j / β |
Next symbol |
k / β |
Previous symbol |
/ |
Toggle search mode |
Tab |
Toggle symbol list / stats view |
r |
Refresh data |
CryptoScope uses a trait-based architecture for easy extensibility:
βββββββββββββββββββββββββββββββββββββββ
β CLI Layer β
β (main.rs + cli.rs) β
βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β Exchange Trait β
β (exchange/exchange_trait.rs) β
βββββββββββββββββββββββββββββββββββββββ
β² β²
β β
ββββββββ΄βββββββ βββββββββ΄βββββββββ
β BybitClient β β BinanceClient β (future)
β (v1.0) β β (v2.0) β
βββββββββββββββ ββββββββββββββββββ
To add support for a new exchange (e.g., Binance):
- Create
src/exchange/binance.rs - Implement the
Exchangetrait - Add to the factory in
src/exchange/factory.rs
That's it! No changes to existing code required.
cryptoscope/
βββ Cargo.toml
βββ src/
β βββ main.rs # Entry point
β βββ cli.rs # CLI argument parsing
β βββ error.rs # Error types
β βββ models/
β β βββ mod.rs
β β βββ symbol.rs # Symbol struct
β β βββ response.rs # API responses
β β βββ statistics.rs # Statistics aggregation
β βββ exchange/
β β βββ mod.rs
β β βββ exchange_trait.rs # Exchange trait
β β βββ bybit.rs # Bybit implementation
β β βββ factory.rs # Exchange factory
β βββ fetcher/
β β βββ mod.rs
β β βββ instrument_fetcher.rs
β βββ output/
β β βββ mod.rs
β β βββ formatter.rs # Text output
β β βββ json_output.rs # JSON output
β βββ tui/
β βββ mod.rs
β βββ app.rs # App state management
β βββ runner.rs # TUI event loop
β βββ theme.rs # Cyberpunk color theme
β βββ widgets/
β βββ mod.rs
β βββ header.rs # Header widget
β βββ footer.rs # Footer widget
β βββ popup.rs # Popup/notification widget
β βββ stats_panel.rs # Stats dashboard widget
β βββ symbol_table.rs # Symbol table widget
βββ tests/
- tokio - Async runtime
- reqwest - HTTP client
- serde + serde_json - JSON serialization
- clap - CLI framework
- thiserror + anyhow - Error handling
- tracing - Logging
- ratatui - Terminal UI framework
- crossterm - Terminal manipulation
- unicode-width - Unicode string width calculation
- β Bybit V5 (linear + inverse perpetual/futures)
- β³ Binance Futures
- β³ OKX Derivatives
- β³ Symbol comparison across exchanges
GNU General Public License v3.0 (GPL-3.0)
Contributions welcome! Please feel free to submit a Pull Request.