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 using a massive dataset of realistic queries (with optional, bring-your-own-key AI generation), completes Daily Sets and More Activities, includes Bing Visual Search tasks, and uses mathematically driven, human-like input simulation (W3C Actions, Bezier curves, smart scrolling and realistic keyboard typos).
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 a standalone application for Windows (installer and portable) and Linux, ensuring a seamless, cross-platform, plug-and-play experience.
Ready to start? Check out the complete USER GUIDE
Windows (Installer):
Download AutoRewarder-Setup.exe from the latest release and run it. The installer will verify all dependencies and install the app for you.
Windows & Linux (Portable): Download the archive for your platform from the latest release:
-
Windows:
AutoRewarder-windows.zip(includes theconfigfolder for portable use) -
Linux:
AutoRewarder-linux.tar.gz -
On Windows: Extract the archive to any folder and run the executable. All settings and profiles will be saved locally inside the included
configfolder. -
On Linux: Extract the archive and run the executable. By default, settings and profiles are saved to the standard Linux directory (
~/.local/share/AutoRewarder). If you prefer a portable setup, simply create aconfigfolder next to the executable.
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): See the Development Setup section.
| App Demo |
|---|
![]() |
| Perform Searches | Visual Search |
|---|---|
![]() |
![]() |
| Daily Sets (New Dashboard) & Claim action | Tab Switching |
|---|---|
![]() |
![]() |
Demo is sped up for viewing purposes. Actual execution includes randomized delays and pauses to mimic human behavior.
| Main Window | General Settings |
|---|---|
![]() |
![]() |
| Daily Tasks Settings | Search Terms Settings |
|---|---|
![]() |
![]() |
| Settings: Accounts | Account Management |
|---|---|
![]() |
![]() |
| About | Background Logs |
|---|---|
![]() |
![]() |
| History | Statistics Dashboard |
|---|---|
![]() |
![]() |
| Layer | Technology |
|---|---|
| Backend | Python 3.12, selenium, pywebview, pystray, Pillow, nlpaug, PySide6 (Linux GUI), PyGObject (Linux Tray) |
| Frontend | HTML, CSS, JavaScript |
| Bridge | pywebview JS API (pywebview.api) |
| Build | PyInstaller, Inno Setup |
- OS: Windows 10 or later (installer or portable), or Linux (standalone executable build)
- Browser: Microsoft Edge (driver managed by Selenium Manager)
- .NET Framework: 4.8 or higher (automatically checked by installer) for Windows builds
- RAM: Minimum 512 MB (1 GB recommended)
- Disk Space: ~50 MB for Windows, ~300 MB for Linux (due to PySide6 dependencies)
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)
- Background log viewer for scheduled and headless runs
- Redesigned Settings with side navigation and per-account pages
- About page (app details, update checks, data-folder access)
- Unsaved-change indicators in Settings
- LLM Model Picker (provider-based selection, custom models, API key visibility)
- Customizable delays between manual searches (min/max pause range)
Automation & Core Logic:
- 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)
- Visual Search integration for Bing tasks in both daily-task and standard workflows
- Hash-bypass architecture that generates a large pool of image variants to avoid file-hash checks
- Drag-and-drop image uploads for Visual Search with fallback to input
- Mobile emulation for Rewards credit (iPhone UA and touch)
- Uses real-world queries from assets/queries.json (+10k unique entries from google-trends dataset)
- AI-generated search queries in your language (bring-your-own-key LLM: Gemini, Anthropic, OpenAI, OpenAI-compatible)
- Custom OpenAI-compatible endpoint support (bring-your-own base URL)
- Randomized delays to reduce repetitive patterns
- Optional tab switching between result categories (Images/Videos/News)
- Natural mouse movement/clicking (W3C Actions/randomized Bezier trajectories)
- Daily Set task collection (runs once per day, per account)
- Separate browser profile per account
- Localization detection (language, region)
- Simulated human typos in search queries (via nlpaug)
- Smart dashboard selection (automatic detection and switching between legacy and new versions at runtime)
Developer & Code Quality:
- Advanced documentation (comprehensive docstrings and detailed guides)
- Strict code formatting and static type checking (Black, Flake8, MyPy)
Everything is bundled — no Python, no libraries, no manual setup required.
- Download the build for your platform from the latest release:
- Windows:
AutoRewarder-Setup.exe(installer) orAutoRewarder-windows.zip(portable) - Linux:
AutoRewarder-linux.tar.gz(standalone executable)
- Windows:
- 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
- Clone the repository.
- Create a virtual environment:
- Windows:
python -m venv .venv .\.venv\Scripts\Activate.ps1
- Linux:
python3 -m venv .venv source .venv/bin/activate
- Install dependencies:
pip install -r requirements.txt
- Run the app:
python AutoRewarder.py
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).
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.
# 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
Note
Ensure you have installed the development dependencies, including PyInstaller (pip install -r requirements-dev.txt).
Build EXE (for installer creation):
pyinstaller --noconfirm --clean AutoRewarder.spec
Build Portable EXE (Standalone Onefile):
pyinstaller --noconfirm --clean AutoRewarder_Portable.spec
Create 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 (Installer) and dist/AutoRewarder.exe (Portable)
Build Standalone Executable (onedirectory):
pyinstaller --noconfirm --clean AutoRewarder.spec
Output: dist/AutoRewarder/ (directory with executable)
Build Standalone Executable (onefile):
pyinstaller --noconfirm --clean AutoRewarder_Portable.spec
Output: dist/AutoRewarder (single executable file)
Warning
onedirectory and onefile builds output to the same dist/AutoRewarder path. Since Linux binaries have no extension, running both with --noconfirm will overwrite the previous artifact. Clean the dist/ folder between builds.
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
│ ├── background_logs.html # Background logs viewer UI
│ ├── background_logs.css # Background logs viewer 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 (for Windows)
│ ├── icon.png # App icon (for Linux)
│ ├── queries.json # Search query dataset
│ ├── visual_search_assets/ # Visual search assets
│ └── 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 (first_setup_done, 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/Visual Search
│ │ ├── history.py # Per-account search history JSON
│ │ ├── llm.py # LLM-based query generation
│ │ └── locale.py # Localization detection (language, region)
│ ├── 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_Portable.spec # Portable PyInstaller build spec
├── AutoRewarder.iss # Inno Setup installer script
├── update_badges.py # README badge data updater
├── .flake8 # Flake8 linting configuration
├── .pre-commit-config.yaml # Pre-commit hooks configuration
├── mypy.ini # MyPy static type checking configuration
├── requirements.txt # Production dependencies
├── requirements-dev.txt # Development & testing dependencies
├── CODE_OF_CONDUCT.md # Community guidelines
├── CONTRIBUTING.md # Contribution guidelines
├── LICENSE # MIT License
├── USER_GUIDE.md # End-user documentation
└── README.md # Project overview and developer setup
The application stores its runtime files (profiles, history, logs, and settings) in a dedicated folder separate from your main browser.
If a config folder exists in the same directory as the executable, all data is stored inside it. Otherwise, it is stored in in the following directories:
On Windows:
%USERPROFILE%\AppData\Local\AutoRewarder
On Linux:
~/.local/share/AutoRewarder
Created files and folders:
settings.json # Global settings (hide_browser, current_account_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/Visual Search completion status (per-day)
stats.json # Statistics: scraped points balance + activity counters
meta.json # Per-account metadata (first_setup_done, schedule)
background_log.txt # Logs from the background runner (for debugging)
For common issues and solutions, see the Troubleshooting section in the USER GUIDE.
- Human typos simulation for different keyboard/language layouts (AZERTY, QWERTZ, etc.)
- Human-like typing with random spaces/backspaces
- Independent toggle for Visual Search task (for unsupported regions)
- Explore on Bing support
- Region-specific search query datasets (US, UK, CA, AU, IN, etc.)
- Keyboard shortcuts
- Per-account proxy support
Completed features (Click to expand)
- 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)
- Multi-account support (manage multiple Rewards accounts)
- Mobile support
- Per-Account Scheduling
- Brand New UI
- System tray (close-to-tray)
- Hide browser mode (headless UI)
- Statistics dashboard (points tracking, session summaries)
- Daily "Claim" actions
- The New Dashboard Support
- AI-generated search queries in your language (bring-your-own-key LLM)
- Simulated human typos in search queries (via nlpaug)
- Visual search integration
- View background logs directly in the UI
- Custom OpenAI compatible endpoints
- Standalone Linux build (PySide6 GUI + PyGObject tray)
Using automation against third-party services may violate their Terms of Service. You are responsible for your own usage.
- Issues — for bug reports, feature requests, and errors.
- Discussions — for questions, ideas, and general help.
If you found this project helpful and would like to support it, you can buy me a coffee here:
















