bing-rewards-auto: a script for auto-farming Microsoft Rewards (abandoned)
bing-rewards-auto is a script that uses Playwright to automate Microsoft Rewards tasks, sweeping through the searches, quizzes, and puzzles still claimable on rewards.bing.com and turning them into points. Up front: I don’t maintain this project anymore, the code stays around as an archive. Microsoft Rewards’ official terms list bots, macros, and automation among the prohibited items, so running it puts your account at risk. What follows is just how I did it at the time, not a recommendation for anyone to run it.
There are three browser paths, all workable: Edge, Chrome, and Playwright’s bundled Chromium as a fallback. Each keeps its own independent login state in auth_msedge.json / auth_chrome.json / auth_chromium.json, with no interference between them. If your local Edge is blocked by enterprise policy, switch to Chromium; login state is imported from the existing profile first, and only if that fails does it log in interactively once.
The design is deliberately conservative. The easiest way to crash and burn at this kind of farming is getting worked up and hammering clicks regardless of whether points actually landed. By default it only clicks cards that are genuinely shown on the dashboard and haven’t expired, one action at a time, and it reads the point balance back immediately after each action. If the action didn’t buy any growth, it logs a Safety stop and skips the rest of that round; failed cards get written to .rewards_failures.json and are skipped outright in the remaining rounds that day.
Task dispatch classifies by URL and aria-label patterns, with a handler each for searches, quizzes, Explore on Bing, puzzles (clicking Skip puzzle earns the points), and Image Creator. To add a new task, add a pattern in classify() and hook up a function in HANDLERS. Locked punch cards, app installs, and sweepstakes are all actively skipped; PC / Mobile search quotas and the daily 100-point bonus don’t run by default and require explicitly adding --search-quota / --search-bonus. Logs land in logs/ with timestamps, and a before/after point delta is printed at the end so you can see at a glance how much a round earned; add --show to disable headless if you want to watch, and --dump-rewards for task diagnostics.
Hit a few pitfalls along the way. The daily-activity collapsed section on the new dashboard has to be expanded first, or the scan misses items; rnoreward=1 was meant to be a filter condition, but testing showed some visible dailies carrying it still credit points, so a blanket rule had to be dropped; pure buttons with no navigation, like the daily streak check-in, I didn’t dare blind-click, so I traced out the protocol first and wrote it down in docs/earn-protocol-notes.md.
auth_*.json is effectively the login state for your entire MS account, so don’t share it and don’t put it on cloud drives. The script doesn’t place orders, redeem, or change settings; it only does the same clicking, searching, and image generation you’d do by hand. But no amount of restraint makes the risk zero, and that’s why I stopped.