* port v2 optimizations to v1.5 Updated dockerfile with v2 optimizations. Ported Login.ts no dialogs fix. * Update entrypoint.sh Fix playwright path in entrypoint as well
⚡ Microsoft Rewards Script v2 – Beta Release 
The v2 version is currently in Beta.
You can try it now, but expect bugs or unexpected behavior — your feedback helps stabilize the release.
Branch (v2) repository: V2 Here
To clone the v2 branch (recommended):
git clone -b v2 --single-branch https://github.com/TheNetsky/Microsoft-Rewards-Script.git
👉 Support & feedback (V2 only): Our Discord server is reserved for v2-related issues and contributions. Please use it only to report problems, request help, or discuss improvements for v2. The old stable branch (v1 / 1.5.3) is not supported on this server.
Join here: https://discord.gg/h6Z69ZPPCz
🚀 Quick Setup (Recommended) 
Easiest way to get started — download and run:
-
Clone the v2 branch (see command above) or download the zip.
-
Run the setup script:
-
Windows: double-click
setup/setup.bator run it from a command prompt -
Linux / macOS / WSL:
bash setup/setup.sh -
Alternative (any platform):
npm run setup
-
-
Follow the setup prompts. The script will:
- Rename
accounts.example.json→accounts.json - Ask for Microsoft account credentials
- Remind you to review
config.json - Install dependencies (
npm install) - Build the project (
npm run build) - Optionally start the script
- Rename
That's it — the setup script handles the rest.
⚙️ Advanced Setup Options 
Nix Users
- Install Nix from https://nixos.org/
- Run:
./run.sh
Manual Setup (if setup script fails)
- Copy
src/accounts.example.json→src/accounts.jsonand add accounts. - Edit
src/config.jsonas needed. - Install dependencies:
npm install
- Build:
npm run build
- Start:
npm run start
🐳 Docker Setup (Experimental) 
Before starting
- Remove local
/node_modulesand/distif you previously built. - Remove old Docker volumes when upgrading from v1.4 or earlier.
- You can reuse older
accounts.json.
Quick Docker (recommended for scheduling)
-
Clone v2 and configure
accounts.json. -
Ensure
config.jsonhas"headless": true. -
Edit
compose.yaml:- Set
TZ(timezone) - Set
CRON_SCHEDULE(use crontab.guru for help) - Optional:
RUN_ON_START=true
- Set
-
Start:
docker compose up -d
- Monitor:
docker logs microsoft-rewards-script
The container randomly delays scheduled runs by ~5–50 minutes to appear more natural.
📋 Usage Notes 
- Headless=false cleanup: If you stop the script without closing browser windows, use Task Manager /
npm run kill-chrome-winto close leftover instances. - Scheduling advice: Run at least twice daily. Use
"runOnZeroPoints": falsein config to skip runs with no points. - Multiple accounts: Use
clustersinconfig.jsonto run accounts in parallel.
⚙️ Configuration Reference 
Edit src/config.json to customize behavior.
Core Settings (examples)
| Setting | Description | Default |
|---|---|---|
baseURL |
Microsoft Rewards URL | https://rewards.bing.com |
sessionPath |
Session/fingerprint storage | sessions |
headless |
Run browser in background | false |
parallel |
Run mobile/desktop tasks at once | true |
runOnZeroPoints |
Run when no points available | false |
clusters |
Concurrent account instances | 1 |
Fingerprint Settings
| Setting | Description | Default |
|---|---|---|
saveFingerprint.mobile |
Reuse mobile fingerprint | false |
saveFingerprint.desktop |
Reuse desktop fingerprint | false |
Task Settings (important ones)
| Setting | Description | Default |
|---|---|---|
workers.doDailySet |
Do daily set | true |
workers.doMorePromotions |
Promotional offers | true |
workers.doPunchCards |
Punchcard tasks | true |
workers.doDesktopSearch |
Desktop searches | true |
workers.doMobileSearch |
Mobile searches | true |
workers.doDailyCheckIn |
Daily check-in | true |
workers.doReadToEarn |
Read-to-earn | true |
Search Settings
| Setting | Description | Default |
|---|---|---|
searchOnBingLocalQueries |
Use local queries | false |
searchSettings.useGeoLocaleQueries |
Geo-based queries | false |
searchSettings.scrollRandomResults |
Random scrolling | true |
searchSettings.clickRandomResults |
Random link clicks | true |
searchSettings.searchDelay |
Delay between searches | 3-5 minutes |
searchSettings.retryMobileSearchAmount |
Mobile retry attempts | 2 |
Advanced Settings
| Setting | Description | Default |
|---|---|---|
globalTimeout |
Action timeout | 30s |
logExcludeFunc |
Exclude functions from logs | SEARCH-CLOSE-TABS |
proxy.proxyGoogleTrends |
Proxy Google Trends | true |
proxy.proxyBingTerms |
Proxy Bing Terms | true |
Webhook Settings
| Setting | Description | Default |
|---|---|---|
webhook.enabled |
Enable Discord notifications | false |
webhook.url |
Discord webhook URL | null |
conclusionWebhook.enabled |
Summary-only webhook | false |
conclusionWebhook.url |
Summary webhook URL | null |
✨ Features 
Account & Session
- Multi-account support
- Persistent sessions & fingerprints
- 2FA support & passwordless options
Automation
- Headless operation & clustering
- Selectable task sets
- Proxy support & scheduling (Docker)
Search & Rewards
- Desktop & mobile searches
- Emulated browsing, scrolling, clicks
- Daily sets, promotions, punchcards, quizzes
Interactions
- Quiz solving (10 & 30–40 point variants)
- Polls, ABC quizzes, “This or That” answers
Notifications
- Discord webhooks and summary webhooks
- Extensive logs for debugging
⚠️ Disclaimer 
Use at your own risk. Automation may cause suspension or banning of Microsoft Rewards accounts. This project is provided for educational purposes only. The maintainers are not responsible for account actions taken by Microsoft.
🤝 Contributing
Contributions are welcome, but please keep changes compatible with the existing configuration system. This repository is primarily for v2 development — coordinate on Discord (v2 server) for feature work and bug reports.