“Spreadsheets in space — but smarter.”
A Python-powered project that uses the EVE Online ESI and EVE Marketer APIs to identify profitable trade opportunities, analyze regional market trends, and calculate safe routes across New Eden.
This project automates EVE Online market analytics by pulling live data from:
- EVE Marketer API → market buy/sell orders (region-based)
- EVE ESI API → item metadata and historical pricing trends
It then:
- 💰 Find the best equipment to trade for maximum ISK profit
- 📊 Calculates profitability and market deltas between regions
- 📈 Tracks 13-day average price and volume trends
- 🧮 Outputs a CSV report with rich market analytics per item
- 🛰️ Determine the safest travel routes between systems based on kill statistics
All operations are multi-threaded using python concurrent.futures for speed -- processing hundreds of items simultaneously.
Run any ipynb in colab or local machine:
change region if needed based on your cuurrent location
Output will be a CSV file (auto-generated by Pandas) containing all analyzed market data.
Fetches all item IDs and names from Fuzzwork’s type IDs CSV.
Default region: The Forge (10000002) — home to Jita.
For each batch (up to 199 item IDs at once), it requests:
- Global data from EVE Marketer (no region)
- Regional data limited to The Forge
Both responses are zipped together and processed in parallel.
For each item:
- Compares buy/sell percentiles, averages, and min/max values
- Computes profit percentage, price deltas, and market health
- Fetches 13-day history from EVE ESI (
/markets/{region}/history/) - Calculates:
- 📈 Average daily volume and orders
- 📅 Recent price change (%) over 13 days
- 💰 Profitability per unit and per region
All results are compiled into a Pandas DataFrame, then exported as a CSV report, including:
- Item name and ID
- Regional and global buy/sell stats
- Profit and percentile comparisons
- 13-day historical metrics
- Market volume and packaged volume
Handles the entire workflow:
__init__— initializes region, headers, and storageItemInfo()— fetches market data (runs in threads)makeItemInfoDF()— parses and computes metricsstart()— orchestrates the full pipeline
Uses ThreadPoolExecutor for:
- Fetching market data (
evemarketerThreads) - Processing JSONs into final records (
evetechThreads)
Example:
itemsInfo.start(199, 37)- Python 3.x
- Libraries:
pip install requests pandas numpy
- Internet connection for API access
-
Uses threaded requests to process hundreds of items simultaneously.
-
Adjustable thread counts:
itemsInfo.start(evemerketerThreads=199, evetechThreads=37)
-
Typical runtime: depends on number of items (thousands of market calls possible).