Automated tooling for scanning CSFloat listings, generating trade leads, and maintaining buy-order strategies.
- Scan a list of skins and score opportunities by EV + volume/sales heuristics.
- Send Discord alerts for qualified opportunities.
- Manage/reprice existing buy orders (
autobid). - Scrape and build candidate skin lists from newest CSFloat listings.
- Simple Flask dashboard for viewing local bid state.
- Python 3.10+
- Install dependencies (recommended in a virtualenv):
pip install requests numpy flask discord-webhook selenium tqdmFor scraper/price_scraping.py, you also need a Chrome/Chromium webdriver.
Create config.py (or copy from config.example.py):
API_URL = "https://csfloat.com/api/v1"
API_KEY_CSF = "YOUR_CSFLOAT_API_KEY"
COOKIE = "" # optional ("session=..." or raw session value)
DISCORD_WEBHOOK_URL = "https://discord.com/api/webhooks/..."
REQUEST_TIMEOUT_SECONDS = 20
MIN_REQUEST_INTERVAL_SECONDS = 0.35
MAX_RETRIES = 4Important:
config.pyis gitignored.- Treat
API_KEY_CSFas secret.
python3 scraper/newest_market_scrape.py \
--min-price 10 \
--max-price 500 \
--pages 6 \
--delay 0.6 \
--out-csv output/newest_10_500_candidates.csv \
--out-list output/newest_10_500_candidates.txtpython3 screen.py --input output/newest_10_500_candidates.txt --output output/hits.csvUseful screener flags:
--threshold,--min-price,--max-price--strategy-delay,--min-similar-sales,--min-vol--send-alert/--no-send-alert--start-at,--n-iters,--loop-delay
python3 -u bid.py --threshold 0.045 --delay 120python3 -u bid.py --threshold 0.045 --delay 1 --max-cycles 1 --dry-runscreen.py: CLI entrypoint for screener.- Usage:
python3 screen.py --input <path> [--output <path>] [--start-at N] [--n-iters N]
- Usage:
screener.py:Screenerclass (loads item list, executes strategy loop).screener_config.py: Default screening thresholds and heuristic selection.strategy/ArbitrageStrategy.py: Core opportunity logic and alert trigger conditions.tools.py: CSFloat API client helpers, retries/rate-limit handling, listing/sales/order functions.autobid/bidtools.py: Buy-order maintenance logic.- Key functions:
autobid(...),try_update_buy_order(...), dry-run support.
- Key functions:
bid.py: Autobid CLI runner (--threshold,--delay,--max-cycles,--dry-run).visual.py: Discord webhook helpers (send_webhook,send_webhook_msg).stats.py: Outlier removal helper (remove_outliers_iqr).heuristics/harvey.py: Heuristic scoring functions (harvey,hamilton).scraper/newest_market_scrape.py: Pull newest CSFloat listings and generate candidate files.scraper/price_scraping.py: Selenium scraper for csgoskins.gg pricing by skin list.scrape.py: Simple runner forprice_scraping.py(expectsdata/relevant_skins.txt).dashboard.py: Flask app exposing local bid state.- Run:
python3 dashboard.pythen openhttp://127.0.0.1:5000
- Run:
templates/index.html: Dashboard template.db/database.py: Lightweight JSON-backed local datastore utility.clear_db.py: Clears local cache DB (db/cache).config.example.py: Example configuration template.autobid/orders.txt: Scratch/notes file (not required by runtime).bids.json: Legacy/placeholder JSON file.db/cache: Local cache store file.
- CSFloat API can rate-limit aggressively. Keep request delay conservative.
- If you see repeated 429s, increase delays and reduce candidate set size.
send_alert=Truesends Discord notifications but does not buy by itself.- Buy placement happens through
add_buy_orderpaths (primarily autobid logic).