An advanced, set-and-forget automation tool for Microsoft Rewards. AutoRewarder performs Bing searches for PC and mobile point collection, collects Daily Sets, and uses mathematically driven, human-like input simulation (W3C Actions, Bezier curves, and smart scrolling). Packaged as an executable Windows app for a seamless, plug-and-play experience
AutoRewarder
An advanced, set-and-forget automation tool for Microsoft Rewards (supporting both the legacy and new dashboards). AutoRewarder performs Bing searches for PC and mobile point collection, completes Daily Sets and More Activities, and uses mathematically driven, human-like input simulation (W3C Actions, Bezier curves, and smart scrolling).
Built with a robust Python/Selenium backend, it offers two modes of operation: a sleek HTML/CSS/JS frontend wrapped in a native window via pywebview, and a headless runner (CLI) for scheduled background runs and automation scripts. Packaged as an executable Windows app (via Inno Setup) for a seamless, plug-and-play experience.
Ready to start? Check out the complete USER GUIDE
Table of Contents
- Installation
- Screenshots & Demo
- Tech Stack
- System Requirements
- Features
- Quick Start (For Users)
- Development Setup (For Developers)
- CLI Usage
- Build & Distribution
- Project Structure
- Runtime Data
- Troubleshooting
- Roadmap
- Disclaimer
- Contact
- Support
Installation
Easy Way (Recommended): Download AutoRewarder-Setup.exe from the latest release and run it. The installer will verify all dependencies and install the app for you.
Portable Way: Download AutoRewarder.zip from the latest release and extract it to any folder (e.g., a USB drive). Run the executable. All your settings and profiles will be saved locally inside the config folder.
Note: Because the portable version is a single-file build, it may take a few seconds longer to start up compared to the installed version while it unpacks core components. Once open, it works at full speed.
Manual Way (Source): Clone this repo, create virtual environment, and run python AutoRewarder.py.
Screenshots & Demo
| Perform Searches | App Demo | | :---: | :---: | |
|
|
| Daily Sets (New Dashboard) & Claim action | Tab Switching | | :---: | :---: | |
|
|
View Legacy Dashboard Demo (click to expand)
| Daily Sets (Legacy Dashboard) | | :---: | |
|
Demo is sped up for viewing purposes. Actual execution includes randomized delays and pauses to mimic human behavior.
| Main Window & Account Management | Settings | | :---: | :---: | |
|
| |
|
|
| History | Statistics Dashboard | | :---: | :---: | |
|
|
Tech Stack
| Layer | Technology | |-------|------------| | Backend | Python 3.12, selenium, pywebview, pystray, Pillow | | Frontend | HTML, CSS, JavaScript | | Bridge | pywebview JS API (pywebview.api) | | Build | PyInstaller, Inno Setup |
System Requirements
- OS: Windows 10 or later (installer), or Linux via source setup (no prebuilt executable)
- Browser: Microsoft Edge (driver managed by Selenium Manager)
- .NET Framework: 4.8 or higher (automatically checked by installer)
- RAM: Minimum 512 MB (1 GB recommended)
- Disk Space: ~100 MB
Features
User Experience & Interface:
- Multi-account management (add, rename, delete, per-account profiles)
- First Setup per account with a dedicated Edge profile
- PC and Mobile query controls (0-130 / 0-99)
- Optional hide-browser mode (headless UI toggle)
- Close-to-tray behavior with a tray menu (reopen or exit)
- Per-account scheduled runs (simple or advanced)
- Start with Windows/Linux toggle (autostart)
- Live terminal-like logs with update notifications (GitHub Releases)
- Local history view per account (date, time, query, status)
- Statistics dashboard: real scraped points balance, per-run earnings, lifetime activity counters, and a multi-account recap
- Safe recovery for corrupted settings/history files
- Detailed analytics window (lifetime counters, real balances, per-day activity charts)
- Compact stats UI (total points and last run earnings card on main window)
- OS-level daily autostart (launches headless runs at per-account scheduled times)
- Configurable run pacing (advanced scheduling with run duration and queries per hour)
- Background WebDriver warmup at startup for faster execution
- Human-like search behavior (typing delays, random pauses, smooth scrolling)
- Mobile emulation for Rewards credit (iPhone UA and touch)
- Uses real-world queries from assets/queries.json (8154 unique entries from google-trends dataset)
- Randomized delays to reduce repetitive patterns
- Optional tab switching between result categories (Images/Videos/News)
- Natural mouse movement/clicking (W3C Actions)
- Daily Set task collection (runs once per day, per account)
- Separate browser profile per account
- Smart dashboard selection (automatic detection and switching between legacy and new versions at runtime)
- Advanced documentation (comprehensive docstrings and detailed guides)
- Strict code formatting and static type checking (Black, Flake8, MyPy)
Quick Start (For Users)
You do not need Python to use release builds.
- Download
AutoRewarder-Setup.exefrom the latest release - Install and run the app
- Add your first account and complete setup
- Set PC/Mobile counts and start a run
Tip: Closing the main window sends AutoRewarder to the system tray. Use the tray icon to reopen the window or choose Exit to fully close the app.
For detailed guide, see USER_GUIDE.md
Development Setup (For Developers)
- Clone the repository.
- Create and activate a virtual environment.
- Install dependencies.
- Run the app.
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python AutoRewarder.py
CLI Usage
For users who prefer the terminal or want to integrate the bot into custom scripts, a headless runner is available. It is the same engine used by the Start with Windows setting. You can call AutoRewarder.py --headless or run AutoRewarder_CLI.py directly (arguments are the same).
Available CLI Arguments
These arguments can be combined. Without --account, it runs every enabled schedule sequentially.
| Argument | Type | Description | Default / Fallback | | :--- | :--- | :--- | :--- | | --account | String | Run only this account (by id or label). | Runs all enabled schedules. | | --pc | Integer | Override PC queries for this run (requires --account). | Uses the account schedule. | | --mobile | Integer | Override Mobile queries for this run (requires --account). | Uses the account schedule. | | --force | Flag | Run even if already triggered today. | Skips accounts already triggered today. |
Note: Headless mode is forced in the CLI and does not change the GUI Hide Browser preference.
Example CLI commands:
# Run every enabled schedule (same as autostart)
python AutoRewarder.py --headless
Run a single account once with overrides
python AutoRewarder.py --headless --account "Main" --pc 30 --mobile 20
Force a re-run the same day
python AutoRewarder.py --headless --account "Main" --pc 30 --force
Build & Distribution
Build EXE (for installer creation):
.\.venv\Scripts\python.exe -m PyInstaller --noconfirm --clean AutoRewarder.spec
Create Windows Installer:
"C:\Program Files (x86)\Inno Setup 6\iscc.exe" AutoRewarder.iss Or use the Inno Setup IDE to open AutoRewarder.iss and compile it. Output: dist/AutoRewarder-Setup.exe
Project Structure
AutoRewarder/
โโโ gui/
โ โโโ index.html # Main window UI
โ โโโ history.html # History view UI
โ โโโ history.css # History view styling
โ โโโ dashboard.html # Statistics dashboard UI
โ โโโ dashboard.css # Statistics dashboard styling
โ โโโ script.js # Frontend logic and bridge calls
โ โโโ settings.js # Settings page logic and bridge calls
โ โโโ styles.css # App styling
โ โโโ normalize.css # CSS reset
โโโ assets/
โ โโโ icon.ico # App icon
โ โโโ queries.json # Queries list (8154 unique queries)
โ โโโ screenshots/ # Screenshots and GIFs for documentation
โโโ src/
โ โโโ init.py # Python package initialization
โ โโโ api.py # Centralizes all main operations (bridge API exposed to JS)
โ โโโ config.py # Configuration constants/platform and file paths
โ โโโ utils.py # Utility functions (human typing, update checks)
โ โโโ accounts/ # Multi-account management
โ โ โโโ manager.py # Account CRUD + current account selection
โ โ โโโ meta.py # Per-account metadata (firstsetupdone, schedule)
โ โ โโโ settings.py # App-wide settings (hide_browser, autostart)
โ โโโ emulator/ # Selenium browser + human-like input
โ โ โโโ driver.py # Edge WebDriver setup
โ โ โโโ human.py # Human-like mouse / touch / scrolling
โ โ โโโ edge_policy.py # Windows-only Edge auto-signin opt-out
โ โโโ search/ # Bing query execution + history
โ โ โโโ engine.py # Search loop with human-like delays
โ โ โโโ history.py # Per-account search history JSON
โ โโโ dailytasks/ # Rewards daily-set + more-activities automation
โ โ โโโ runner.py # DailySet orchestrator + status persistence
โ โ โโโ new_dashboard.py # The New Dashboard support
โ โ โโโ card.py # RewardsCard: DOM checks + click + tab dance
โ โ โโโ card_js.py # JS heuristics + CardStatus enum
โ โโโ stats/ # Per-account statistics
โ โโโ manager.py # StatsManager + points-balance scraper
โโโ AutoRewarder.py # Python backend and webview window
โโโ AutoRewarder_CLI.py # Headless runner (multi-account aware)
โโโ AutoRewarder.spec # PyInstaller build spec
โโโ AutoRewarder.iss # Inno Setup installer script
โโโ .pre-commit-config.yaml # Pre-commit hooks configuration
โโโ requirements.txt # Production dependencies
โโโ requirements-dev.txt # Development & testing dependencies
โโโ LICENSE # MIT License
โโโ USER_GUIDE.md # End-user documentation
โโโ README.md # Project overview and developer setup
Runtime Data
The application stores its runtime files (profiles, history, logs, and settings) in a dedicated folder separate from your main browser.
On Windows:
%USERPROFILE%\AppData\Local\AutoRewarder
On Linux:
~/.local/share/AutoRewarder
Created files and folders:
settings.json # Global settings (hidebrowser, currentaccount_id, autoStartUp etc.) accounts.json # Account index accounts/ <account_id>/ EdgeProfile/ # Separate Edge profile for WebDriver history.json # Search history (date, time, query, status) status.json # Daily Set completion status (per-day) stats.json # Statistics: scraped points balance + activity counters meta.json # Per-account metadata (firstsetupdone, schedule) background_log.txt # Logs from the background runner (for debugging)
Troubleshooting
For common issues and solutions, see the Troubleshooting section in the USER GUIDE.
Roadmap
- [x] Windows installer with dependency checking (Inno Setup)
- [x] Action Chains Selenium/W3C Actions for more natural mouse movement and clicks
- [x] Daily Set collector
- [x] Refactor: split monolith to src modules
- [x] Update checks (GitHub Releases API)
- [x] Better randomized scrolling (unique speed/length per session)
- [x] Advanced "coffee" breaks during long sessions
- [x] Navigation flow: sometimes switch result tabs (Images/Videos/News)
- [x] Script-only version (CLI tool without GUI)
- [x] Automatic start-up
- [x] Query pacing over a specified duration (rate-based scheduling)
- [x] Multi-account support (manage multiple Rewards accounts)
- [x] Mobile support
- [x] Per-Account Scheduling
- [x] Brand New UI
- [x] System tray (close-to-tray)
- [x] Hide browser mode (headless UI)
- [x] Statistics dashboard (points tracking, session summaries)
- [x] Daily "Claim" actions
- [x] The New Dashboard Support
- [ ] Simulated human typos during search input
- [ ] Region-specific search query datasets (US, UK, CA, AU, IN, etc.)
- [ ] Browser choice (Chrome, Firefox support in addition to Edge)
- [ ] Keyboard shortcuts
Disclaimer
Using automation against third-party services may violate their Terms of Service. You are responsible for your own usage.
Contact
- Issues โ for bug reports and errors.
- Discussions โ for questions, ideas, and general help.
Support
If you found this project helpful and would like to support it, you can buy me a coffee here: