finds.dev← search

// the find

JUk1-GH/gpt-promo-scanner

★ 628 · Python · MIT · updated May 2026

ChatGPT Team(Business) 促销码自动扫描工具 — 批量发现/验证/价格收集,支持 17 国 34 个码,最高折扣 71% | ChatGPT Business promo code scanner — batch discovery, validation, price collection, 34 codes across 17 countries, up to 71% off

A Python toolkit for brute-forcing ChatGPT Business promo codes by guessing company names, pairing them with country codes, and hammering OpenAI's checkout API via rotating proxies. It automates what is essentially enumeration of a private partner discount program that OpenAI never made public.

- The 'lessons learned' section is genuinely useful documentation — specific failure modes like Cloudflare rate-limiting at ~50 requests and the UK suffix inconsistency (uk vs gb) are hard-won and honestly recorded

- The token validation check before a bulk scan run is a sensible guard that prevents wasting a whole scan on an expired session

- open_stripe.py being self-contained and copyable without the rest of the toolchain is a practical design choice

- This is unauthorized scraping of a private partner API — OpenAI never published these codes or the eligibility endpoint, so this tool exists in clear ToS violation territory and could get accounts banned

- The 'discovery' mechanism is pure guessing: company name + country code, seeded from a list of 9 known base names. The hit rate will be low and will collapse as OpenAI rotates or invalidates the code format

- Requires Clash proxy infrastructure just to switch exit nodes — that's a significant operational dependency that excludes most users and adds a whole failure surface the tool doesn't fully control

- No persistence or deduplication across runs; known_codes.json is gitignored, so every user starts cold and re-scans the same codes everyone else already found

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →