An advanced, set-and-forget automation tool for Microsoft Rewards. AutoRewarder performs Bing searches and collects Daily Sets using 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 script-only version (CLI tool) for running without GUI. 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
- 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
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.
| Perform Searches | Driver Preparation |
|---|---|
![]() |
![]() |
| Daily Sets | Tab Switching |
|---|---|
![]() |
![]() |
Demo is sped up for viewing purposes. Actual execution includes randomized delays and pauses to mimic human behavior.
| Main Window | Settings & History |
|---|---|
![]() |
![]() |
![]() |
![]() |
| Layer | Technology |
|---|---|
| Backend | Python 3.12, selenium, pywebview |
| Frontend | HTML, CSS, JavaScript |
| Bridge | pywebview JS API (pywebview.api) |
| Build | PyInstaller, Inno Setup |
- OS: Windows 10 or later (can also work on Linux but it is not downloadable as an 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: ~50 MB
User Experience & Interface:
- First Setup flow with dedicated Edge profile for isolation
- Comprehensive settings section
- Optional hide-browser mode (headless automation toggle)
- Live terminal-like logs with real-time updates
- Script-only version (CLI tool) for running without GUI
- Update available notifications (GitHub Releases)
- Local history view with date, time, query, and execution status
- One-click start automation (1-99 searches per session)
- Safe recovery for corrupted settings/history files
Automation & Core Logic:
- Automatic start-up (launches the app silently in the background on system boot)
- Configurable run pacing (run duration, total searches, and queries-per-hour distribution during a session)
- Background WebDriver warmup at startup for faster execution
- Human-like search behavior (typing delays, random pauses, smooth scrolling)
- 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)
- Separate browser thread isolation
Developer & Code Quality:
- Advanced documentation (comprehensive docstrings and detailed guides)
- Strict code formatting and static type checking (Black, Flake8, MyPy)
You do not need Python to use release builds.
- Download
AutoRewarder-Setup.exefrom the latest release - Install and run the app
- Complete First Setup
- Start automation
For detailed guide, see USER_GUIDE.md
- 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.pyFor users who prefer the terminal or want to integrate the bot into custom scripts, a headless CLI version is available.
These arguments can be combined. If you run the script without any arguments (python AutoRewarder_CLI.py), it will automatically read your last saved settings from the GUI.
| Argument | Type | Description | Default / Fallback |
|---|---|---|---|
--once |
Flag | Runs the bot in a single immediate batch. It will perform all queries at once without scheduling. | Uses Advanced Scheduling if it is enabled in your settings. |
--count |
Integer | Number of search queries for a single run. (Only used if --once is provided). |
Reads totalQueries from settings (or defaults to 30). |
--duration |
Float | Run duration in hours for scheduled mode. The bot will distribute queries into small batches over this time. | Reads runDuration from settings (default is 3 hours). |
--total-queries |
Integer | Total number of queries to perform during the scheduled --duration. |
Reads totalQueries from settings. |
--queries-per-hour |
Integer | Target number of searches per hour. If provided, the script can calculate total queries automatically. | Reads queriesPerHour from settings. |
Note: The
headlessmode is forced permanently within this CLI script to ensure silent background execution.
# One-off run (execute immediately and exit)
python AutoRewarder_CLI.py --once --count 30
# Scheduled distribution: run 30 queries over 3 hours
python AutoRewarder_CLI.py --duration 3 --total-queries 30
# Use saved GUI settings (no args)
python AutoRewarder_CLI.pyBuild EXE (for installer creation):
.\.venv\Scripts\python.exe -m PyInstaller --noconfirm --clean AutoRewarder.specCreate Windows Installer:
"C:\Program Files (x86)\Inno Setup 6\iscc.exe" AutoRewarder.issOr use the Inno Setup IDE to open AutoRewarder.iss and compile it.
Output: dist/AutoRewarder-Setup.exe
AutoRewarder/
├── GUI/
│ ├── index.html # Main window UI
│ ├── history.html # History view UI
│ ├── history.css # History view styling
│ ├── script.js # Frontend logic and bridge calls
│ ├── styles.css # App styling
│ ├── settings.js # Settings page logic and bridge calls
│ ├── settings.css # Settings page 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
│ ├── daily_set.py # Rewards Daily Set collection logic
│ ├── driver_manager.py # WebDriver setup and management
│ ├── history.py # Manages search history storage and retrieval
│ ├── human_behavior.py # Human-like mouse movement/clicks/scrolling
│ ├── search_engine.py # Handles search logic and interactions
│ ├── settings_manager.py # Manages user settings storage and retrieval
│ └── utils.py # Utility functions(human-typing, update checks)
├── AutoRewarder.py # Python backend and webview window
├── AutoRewarder_CLI.py # Script-only version without GUI (for advanced users)
├── AutoRewarder.spec # PyInstaller build spec
├── AutoRewarder.iss # Inno Setup installer script
├── LICENSE
├── README.md
├── USER_GUIDE.md
└── requirements.txt
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:
EdgeProfile/ # Separate Edge profile for WebDriver
settings.json # User settings (first_setup_done, hide_browser)
history.json # Search history (date, time, query, status)
status.json # Daily Set completion status (per-day)
background_log.txt # Logs from the background performance (for debugging)
For common issues and solutions, see the Troubleshooting section in the USER GUIDE.
- Windows installer with dependency checking (Inno Setup)
- Action Chains Selenium/W3C Actions for more natural mouse movement and clicks
- Daily Set collector
- Refactor: split monolith to src modules
- Update checks (GitHub Releases API)
- Better randomized scrolling (unique speed/length per session)
- Advanced "coffee" breaks during long sessions
- Navigation flow: sometimes switch result tabs (Images/Videos/News)
- Script-only version (CLI tool without GUI)
- Automatic start-up
- Query pacing over a specified duration (rate-based scheduling)
- Statistics dashboard (points tracking, session summaries)
- Browser choice (Chrome, Firefox support in addition to Edge)
- Multi-account support (manage multiple Rewards accounts)
- Mobile support
- Daily "Claim" actions
- Keyboard shortcuts
- UI themes (dark/light mode)
Using automation against third-party services may violate their Terms of Service. You are responsible for your own usage.
Open an issue for bugs, ideas, or questions.
If you found this project helpful and would like to support my work, you can buy me a coffee here:







