A high-performance synchronization tool for downloading and managing Binance historical data (klines, trades, etc.) asynchronously. It supports both local and S3 storage with intelligent data optimization (monthly vs daily preference).
Project description
Binance Syncer
Binance Syncer is a high-performance synchronization tool for downloading and managing Binance historical data (klines, trades, etc.) asynchronously. It supports both local and S3 storage with intelligent data optimization (monthly vs daily preference).
Features
- Asynchronous synchronization: Concurrent downloading optimized for large volumes
- Multi-market support: SPOT, FUTURES (UM/CM), and OPTIONS markets
- Various data types: KLINES, TRADES, AGG_TRADES, BOOK_DEPTH, etc.
- Flexible storage: Local filesystem or cloud (AWS S3)
- Intelligent optimization: Automatic preference for monthly data
- CLI interface: Complete command-line interface with dry-run mode
- Error handling: Automatic retry and robust SSL management
- Progress tracking: Progress bar with rich console
- Advanced logging: Structured logs with automatic rotation
Installation
From pip
pip install binance-syncer
From uv
uv tool install binance-syncer
From source
git clone https://github.com/caymaar/binance-syncer.git
cd binance-syncer
pip install .
Configuration
Automatic configuration
On first launch, the syncer automatically creates:
~/utilities/config/binance_syncer.ini
~/utilities/logs/binance_syncer/
Manual configuration
Edit ~/.config/binance_syncer/config.ini and replace with your configuration:
[LOCAL]
PATH = ~/binance-vision
[S3]
BUCKET = my-binance-data-bucket
PREFIX = binance-vision
[SETTINGS]
MAX_CONCURRENT_DOWNLOADS = 100
SYMBOL_CONCURRENCY = 10
BATCH_SIZE_SYNC = 20
BATCH_SIZE_DELETE = 1000
AWS environment variables (for S3)
To set your S3:
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_DEFAULT_REGION=us-east-1
Usage
Command Line Interface
Basic commands
# Sync all SPOT KLINES 1d data
binance-syncer --market-type spot --data-type klines --interval 1d
# Specific symbols with progress bar
binance-syncer --market-type spot --data-type klines --interval 1d \
--symbols BTCUSDT ETHUSDT ADAUSDT --progress
# S3 storage
binance-syncer --market-type spot --data-type klines --interval 1d \
--storage s3 --progress
# Dry-run mode (simulation)
binance-syncer --market-type spot --data-type klines --interval 1d \
--dry-run
# Trade data (no interval required)
binance-syncer --market-type spot --data-type trades --storage local
Advanced options
# Verbose logging
binance-syncer --market-type spot --data-type klines --interval 1d \
--verbose --progress
# Futures with 4h interval
binance-syncer --market-type futures/um --data-type klines --interval 4h \
--storage s3 --progress
Programmatic usage
import asyncio
from binance_syncer import BinanceDataSync, MarketType, DataType, KlineInterval
async def main():
# Configure syncer
syncer = BinanceDataSync(
storage_mode="local", # or "s3"
market_type=MarketType.SPOT,
data_type=DataType.KLINES,
interval=KlineInterval.D1,
progress=True
)
# Sync specific symbols
await syncer.sync(["BTCUSDT", "ETHUSDT"])
# Or sync all available symbols
# await syncer.sync()
# Execute
asyncio.run(main())
Data Structure
Local storage
~/binance-vision/
├── data/
│ ├── spot/
│ │ ├── klines/
│ │ │ ├── BTCUSDT/
│ │ │ │ ├── 1d/
│ │ │ │ │ ├── 2024-01.parquet # Monthly data
│ │ │ │ │ ├── 2024-02-15.parquet # Daily data
│ │ │ │ │ └── ...
│ │ │ │ └── 1h/
│ │ │ └── ETHUSDT/
│ │ └── trades/
│ ├── futures/
│ └── option/
S3 storage
s3://your-bucket/
├── binance-vision/
│ ├── data/
│ │ ├── spot/
│ │ │ ├── klines/
│ │ │ │ ├── BTCUSDT/
│ │ │ │ │ ├── 1d/
│ │ │ │ │ │ ├── 2024-01.parquet
│ │ │ │ │ │ └── ...
Supported Data Types
| Data Type | Market Types | Interval Required |
|---|---|---|
| KLINES | SPOT, FUTURES_UM, FUTURES_CM | Yes |
| TRADES | SPOT, FUTURES_UM, FUTURES_CM | No |
| AGG_TRADES | SPOT, FUTURES_UM, FUTURES_CM | No |
| BOOK_DEPTH | SPOT, FUTURES_UM, FUTURES_CM | No |
| BOOK_TICKER | SPOT, FUTURES_UM, FUTURES_CM | No |
| EOH_SUMMARY | OPTION | No |
Supported intervals
- Seconds: 1s
- Minutes: 1m, 3m, 5m, 15m, 30m
- Hours: 1h, 2h, 4h, 6h, 8h, 12h
- Days: 1d
- Weeks: 1w
Logging and Monitoring
Log files
Logs are automatically created in ~/utilities/logs/binance_syncer/
Automatic rotation
- Retention: 7 days
- Levels: DEBUG, INFO, WARNING, ERROR
Performance and Optimizations
Concurrency
- Downloads: 100 simultaneous tasks per symbol
- Symbols: 10 symbols processed in parallel
- Batches: Processing in batches of 20 to avoid overload
Network optimizations
- SSL: Robust configuration with fallback
- Timeouts: Configurable (connection: 30s, read: 120s, total: 300s)
- Retry: Automatic retry logic with exponential backoff
- Chunked reading: Reading in 8KB chunks for large files
Data optimization
- Monthly preference: Automatic removal of daily data when monthly data is available
- Deduplication: Avoids downloading existing files
- Compression: Parquet format with Snappy compression
Troubleshooting
Common SSL issues
# On macOS, install Python certificates
/Applications/Python\ 3.11/Install\ Certificates.command
# Check SSL configuration
python -c "import ssl, certifi; print(certifi.where())"
S3 issues
# Check AWS credentials
aws configure list
aws s3 ls s3://your-bucket/
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file binance_syncer-0.2.3.tar.gz.
File metadata
- Download URL: binance_syncer-0.2.3.tar.gz
- Upload date:
- Size: 116.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
381491734e055de8bb3af6e22e1947d05323aa510a46c9bfcf2e7e2bfe7b0b17
|
|
| MD5 |
9c9f6ce70be2bc254ebd4d5c8176f090
|
|
| BLAKE2b-256 |
c964791f98f0ddddaa2409633d91daaecabab3654943ad42320ff6d3c006b9b2
|
File details
Details for the file binance_syncer-0.2.3-py3-none-any.whl.
File metadata
- Download URL: binance_syncer-0.2.3-py3-none-any.whl
- Upload date:
- Size: 30.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
757529045990ac6deb6d6998c48c8571a6761bae6c22c0a83cbddec871950d57
|
|
| MD5 |
c6101af5703df1740571805d354df866
|
|
| BLAKE2b-256 |
4bb07afdd0028a7429dad1ed4cae078a3ca6c0362ca9823089518387b01a5d1e
|