# cryptologo
[](https://crates.io/crates/cryptologo)
[](https://docs.rs/cryptologo)
[](https://opensource.org/licenses/MIT)
Rust client for [crypto-logo.com](https://crypto-logo.com) — the cryptocurrency logo database with 413 coins in SVG, PNG, WebP, JPEG, and ICO formats. Async API powered by `reqwest` and `serde`.
Every logo is available as a scalable SVG vector and pre-generated raster derivatives in 13 standard sizes (16px to 2000px). Logos are served from Cloudflare R2 CDN with immutable cache headers.
> **Browse logos at [crypto-logo.com](https://crypto-logo.com)** — [API docs](https://crypto-logo.com/api/docs/)
## Install
```toml
[dependencies]
cryptologo = "0.1"
tokio = { version = "1", features = ["full"] }
```
## Quick Start
```rust,no_run
use cryptologo::{CryptoLogo, LogoFormat};
#[tokio::main]
async fn main() -> Result<(), cryptologo::Error> {
let client = CryptoLogo::new();
// List all 413 coins sorted by market cap
let coins = client.list_coins().await?;
for coin in coins.iter().take(3) {
println!("{} ({}) — rank #{:?}", coin.name, coin.ticker, coin.market_cap_rank);
}
// Download Bitcoin SVG logo
let svg = client.get_logo("bitcoin-btc", LogoFormat::Svg, None).await?;
std::fs::write("bitcoin.svg", &svg)?;
// Generate CDN URL for embedding
let url = client.get_cdn_url("ethereum-eth", LogoFormat::WebP, 128);
println!("{}", url);
// https://cdn.crypto-logo.com/logos/ethereum-eth/128x128/transparent.webp
Ok(())
}
```
## What You Can Do
### List Coins
```rust,no_run
let coins = client.list_coins().await?;
```rust
// CDN URL for fast display
let url = client.get_cdn_url("bitcoin-btc", LogoFormat::WebP, 128);
// https://cdn.crypto-logo.com/logos/bitcoin-btc/128x128/transparent.webp
```
## Cryptocurrency Logo Standards
| Website UI | SVG | Scalable |
| Exchange listing | PNG | 512x512 |
| Social/OG | PNG | 1200x630 |
| Favicon | ICO/SVG | 32x32 |
Pre-generated sizes: 16, 32, 48, 64, 96, 120, 128, 200, 256, 400, 512, 1024, 2000.
## API Reference
| `CryptoLogo::new()` | `CryptoLogo` | Create client |
| `list_coins()` | `Result<Vec<Coin>>` | All 413 coins |
| `get_logo(slug, fmt, opts)` | `Result<Vec<u8>>` | Logo bytes |
| `get_logo_url(slug, fmt, opts)` | `String` | API URL |
| `get_cdn_url(slug, fmt, width)` | `String` | CDN URL |
| `download_logo(slug, fmt, opts, path)` | `Result<()>` | Save to file |
| `get_asset(path)` | `Result<Vec<u8>>` | Variant/history |
## Also Available
| **PyPI** | [cryptologo](https://pypi.org/project/cryptologo/) | `pip install cryptologo` |
| **npm** | [cryptologo](https://www.npmjs.com/package/cryptologo) | `npm install cryptologo` |
| **Go** | [cryptologo-go](https://github.com/dobestan/cryptologo-go) | `go get github.com/dobestan/cryptologo-go` |
| **Ruby** | [cryptologo](https://rubygems.org/gems/cryptologo) | `gem install cryptologo` |
## Embed Widget
Embed [CryptoLogo](https://crypto-logo.com) widgets on any website with [cryptologo-embed](https://widget.crypto-logo.com):
```html
<script src="https://cdn.jsdelivr.net/npm/cryptologo-embed@1/dist/embed.min.js"></script>
<div data-cryptologo="entity" data-slug="example"></div>
```
Zero dependencies · Shadow DOM · 4 themes (light/dark/sepia/auto) · [Widget docs](https://widget.crypto-logo.com)
## License
MIT