Automatically fetch and apply cover art, hero images, logos, and icons for your non-Steam game shortcuts — directly from SteamGridDB.
Built for Steam Deck and Windows. No fuss, no subscriptions — just bring your own free API key.
Go to Releases and download the binary for your platform:
- Linux / Steam Deck —
NonSteamScraper-linux - Windows —
NonSteamScraper-windows.exe
No Python installation required. Just download and run.
Windows note: On first launch Windows may show a SmartScreen warning ("Windows protected your PC"). This is expected for unsigned freeware — click More info → Run anyway to proceed.
- Detects all non-Steam game shortcuts in your Steam library
- Searches SteamGridDB for matching artwork
- Downloads and applies:
- Cover (portrait grid image)
- Wide Cover (landscape grid image, used in Big Picture and the old grid view)
- Hero (wide background banner)
- Logo (transparent game logo overlay)
- Icon (shortcut icon, written directly into Steam's shortcuts file)
- Shows a results screen after fetching so you can review and swap any art you don't like
- Lets you cycle through up to 5 alternatives per art type and apply whichever you prefer
Create a free account at steamgriddb.com, then go to:
Profile → Preferences → API and generate a key.
In Steam: Games → Add a Non-Steam Game to My Library
Add every shortcut you want artwork for before opening this app.
Open NonSteamScraper, click ⚙ Settings, paste your key, and hit Save. The app verifies the key against SteamGridDB before saving — you'll see a green ✓ confirmation.
Click Fetch Missing Artwork. The app searches and downloads art for every game that doesn't have it yet. When it finishes, the results screen opens automatically.
On the results screen each game shows its Cover, Wide Cover, Hero, Logo, and Icon rows. Use ◀ ▶ to cycle through alternatives and Apply this one to swap. Click the image to open the full-size version in your browser.
Art changes take effect after Steam restarts. The app will remind you.
| Feature | Details |
|---|---|
| Art types | Cover, Wide Cover, Hero, Logo, Icon |
| Alternatives | Up to 5 per art type, swappable after fetch |
| Icon support | Written into shortcuts.vdf so Steam actually reads it |
| Undo | Restores the previous fetch's artwork in one click |
| Re-fetch | Reset a single game's art and fetch fresh results |
| SGDB Search | Live search dialog with autocomplete — find the right match if auto-search misses it |
| Art Style Preferences | Per-type filters for animated art, NSFW, humor, style variants, and more |
| Skip list | Games not found on SGDB are hidden; reset individually or all at once |
| Multi-account | Detects multiple Steam accounts and lets you switch between them |
| Refresh | Reload the library mid-session after adding new shortcuts |
| Cache | Thumbnails cached locally; auto-cleared after 30 days |
| Themes | Dark (default) and light mode, plus four accent colors (blue / green / purple / teal) |
| Window persistence | Remembers window position between sessions |
| Resizable | All windows resize and scroll |
| Factory reset | One-click reset of settings to first-launch state (your fetched artwork is preserved) |
| Cross-platform | Linux (Steam Deck) and Windows are supported. macOS path code exists but is untested and unsupported — no macOS builds are shipped. |
Click the 🎨 button to open Art Style Preferences. Every filter — both content and visual style — uses the same three states:
| State | Meaning |
|---|---|
| Prefer | Try this first |
| Allow | Include normally (the neutral default) |
| Exclude | Never use this |
You won't get zero results: "Prefer" is a soft preference — the app tries your preferred content/styles first and automatically broadens the search if too few matches are found (only "Exclude" is a hard filter). Hover any row for a short explanation.
Content filters:
- Animated — animated artwork (note: animated covers are not auto-applied; pick one in the results screen and click Apply this one to convert it to APNG — the only animated format Steam renders — with a progress popup. Files are large and conversion takes a while.)
- NSFW — explicit adult content (confirmation required on first enable per session)
- Humor / Memes — meme-style artwork
Style filters (per art type):
- Cover: No logo overlay, Alternate style, Blurred, Material design
- Hero: Alternate art, Blurred
- Logo: Official, White style, Black style
- Icon: Official
| Setting | What it does |
|---|---|
| API Key | Paste and verify your SteamGridDB key |
| Art Style Preferences | Fine-tune what kinds of artwork are fetched |
| Appearance | Toggle dark / light mode |
| Steam Account | Switch between accounts if you have more than one |
| Cache | View cache size and clear thumbnails |
| Steam | See if Steam is running; restart it from the app |
| Clear All Artwork | Remove only art added by this app — manual art is untouched |
| Factory Reset | Reset settings to first-launch state (key, prefs, cache). Your fetched artwork is kept — use Clear All Artwork for that |
Steam reads non-Steam game icons from shortcuts.vdf, not from the grid folder. When NonSteamScraper applies an icon it writes the file path directly into that file. For this to stick:
Close Steam before fetching or applying icons. If Steam is running when the icon is applied, Steam may overwrite shortcuts.vdf on exit and lose the change.
A backup of your original shortcuts.vdf is saved to ~/.steamart_backup/shortcuts.vdf.bak before the first write.
All state is stored in your home directory:
| File | Purpose |
|---|---|
~/.steamart_apikey |
Your SteamGridDB API key |
~/.steamart_prefs |
Art style preferences |
~/.steamart_theme |
Dark or light mode preference |
~/.steamart_geometry |
Saved window position |
~/.steamart_skip |
Games permanently skipped (not found on SGDB) |
~/.steamart_names |
Custom search name overrides per game |
~/.steamart_managed |
Tracks which files this app created (for safe cleanup) |
~/.steamart_cache/ |
Thumbnail cache |
~/.steamart_backup/ |
Backup of previous artwork and shortcuts.vdf |
Requires Python 3.10+ and pip.
git clone https://github.com/Rhastago/NonSteamScraper.git
cd NonSteamScraper
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python3 app.pyLinux (run from a native terminal — not the VSCode integrated terminal):
pyinstaller --onefile --windowed --name NonSteamScraper \
--add-data "icon.png:." \
--add-data "assets:assets" \
--hidden-import PIL._tkinter_finder \
--hidden-import PIL.PngImagePlugin --hidden-import PIL.JpegImagePlugin \
--hidden-import PIL.WebPImagePlugin --hidden-import PIL.GifImagePlugin \
--hidden-import PIL.IcoImagePlugin --collect-all pillow app.pyWindows (run in Git Bash or PowerShell):
pyinstaller --onefile --windowed --name NonSteamScraper --icon icon.ico \
--add-data "icon.png;." \
--add-data "assets;assets" \
--hidden-import PIL._tkinter_finder \
--hidden-import PIL.PngImagePlugin --hidden-import PIL.JpegImagePlugin \
--hidden-import PIL.WebPImagePlugin --hidden-import PIL.GifImagePlugin \
--hidden-import PIL.IcoImagePlugin --hidden-import requests \
--hidden-import vdf --hidden-import psutil \
--hidden-import _socket --hidden-import socket \
--collect-all pillow --collect-all multiprocessing app.pyThe executable will be in the dist/ folder.
You can also run the helper scripts directly: ./build_linux.sh or ./build_windows.sh.
Pushing a version tag (e.g. git push origin v1.1.0) triggers the
release workflow, which builds the Linux and Windows
binaries in a clean environment and attaches them to the matching GitHub Release.
(Requires the repo's Settings → Actions → Workflow permissions to allow read/write.)
See CHANGELOG.md for release history. Latest: v1.4.3 — bug-fix release: in-app links (results-screen thumbnails, the API-key link, the Releases link) now reliably open your browser from the packaged Steam Deck / Linux build.
MIT
UI icons are from Microsoft Fluent Emoji, also MIT licensed.
Built with Python, tkinter, and the SteamGridDB API.