Steam has thousands of discounts. sift tells you which ones are worth it.
sift is a free terminal app for Steam deals. It reads two years of Steam prices for every discount, checks how often the game goes on sale, whether the base price was just raised, whether a big sale is days away and what your Steam Family already owns, and gives each deal one word.
Most "record lows" on Steam come back every five or six weeks. sift tells those apart from the prices that rarely show up, so you buy the right game at the right moment and skip the rest.
Verdicts
| HOT | A price that rarely comes back: a rare record, the lowest in two years, or a cheaper bundle. |
| GREAT | A record price, but it returns every few weeks. Buy it when you will play it. |
| OK | An ordinary discount for this game. |
| MEH | It has been 12–30% cheaper, or a big Steam sale is under three weeks away. |
| NOPE | It has been much cheaper, or the base price went up just before the sale. |
Prices are compared in what you pay, not in percent: $15 at −60% is not a record if the game once sold for $5.
Install
Download one file from the latest release:
sift-windows-x64.exe, sift-macos-arm64 or sift-linux-x64. Nothing else to install.
Or with Python 3.11+
uv tool install steamsift # or: pipx install steamsift
sift
First run
sift opens a three-minute setup. It can look on your computer for your Steam account and Steam Family (only Steam's
own files, nothing is sent anywhere). You paste two free keys, and sift picks them up from the clipboard as soon as you
copy them:
| where | ||
|---|---|---|
| Steam Web API key | steamcommunity.com/dev/apikey | domain: localhost · confirm in the Steam mobile app |
| IsThereAnyDeal API key | isthereanydeal.com/apps/my | Register app → copy the API key · optional, but it powers the verdicts |
Steam only issues API keys to accounts that have spent at least $5 and use Steam Guard Mobile.
Using it
The app has four tabs (Deals · Wishlist · Discover · DLC), a verdict on every row and the game's two-year sale history next to it. Everything works from the keyboard:
| key | key | ||
|---|---|---|---|
↑ ↓ j k |
move | / |
search |
enter |
open in Steam | f |
filters, saved filters, hidden games |
1–4 ← → |
tabs | s |
sort |
x |
hide: not for me | u |
undo |
i |
price history on IsThereAnyDeal | ? |
every key |
The same filters work as flags, so a search can be one line:
sift --hot -b 10 # only HOT deals under 10 in your store's currency
sift -g roguelike --deck # roguelikes that run on the Steam Deck
sift macro add cheap -b 2 --lowest && sift cheap
sift info "hollow knight" # price, history and verdict for one game
sift --print # a plain table for scripts; sift -J prints JSON
Alerts
sift notify setup telegram (or discord, ntfy, desktop, email) sends a few cards a day: HOT prices, your own
price targets and wishlist records that are about to end. Never the whole sale.
Run it on a schedule with sift notify enable, keep it running with sift watch, or run it in the cloud with
GitHub Actions or Docker while your PC is off.
What it knows
- Your store. Prices in the currency Steam charges you, in whichever Steam region your account is in.
- Your Steam Family. Shared games stay out of the list, or show with a blue mark if you want them.
- Your library. Owned and hidden games never show up; DLC is listed for the games you own.
- Your taste, second. Deals come first; your play history breaks ties and fills the Discover tab.
Everything stays on your computer: keys in the system keychain, settings in a local file. sift talks only to Steam and IsThereAnyDeal.
More
sift doctor checks keys, privacy settings, region and family. sift config help lists every setting.
sift calendar shows the Steam sales ahead. The app speaks English and Russian (sift config set lang ru).
MIT license · not affiliated with Valve · price history from IsThereAnyDeal
Metadata
Release files for steamsift 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| steamsift-0.1.0.tar.gz | 187.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| steamsift-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 349.1 kB
Release files / steamsift-0.1.0.tar.gz
| Download URL | steamsift-0.1.0.tar.gz |
|---|---|
| Size | 187.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9ba515ccf19bc8e3b9530159a5341314b9deb2bad728c5383f8667718021c1b1
|
|
BLAKE2b-256 checksum How to use checksums |
f5a05e44f4e329a298ecec54262c9f4146cd3d5461af4f489573a84de3e8f144
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / steamsift-0.1.0-py3-none-any.whl
| Download URL | steamsift-0.1.0-py3-none-any.whl |
|---|---|
| Size | 162.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2454e78e8a89338c8ed331341ddf60da17d3fbb71f6e2ec748f66e9d1e0cba6b
|
|
BLAKE2b-256 checksum How to use checksums |
81fcc7ff75ef3e1d7dc06b27e19973c29ec26977a33743666deb7a63e7ef8ada
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for steamsift 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.