How to Quickly Add All Amex Offers
American Express offers tons of Amex Offers for consumer and business credit cards. You can find a list of all the available offers here. But sometimes, if you haven’t added offers to a card in a while, you might get overwhelmed when you take a look at the account. You most likely will see 100 offers available, and that means that even more could be there since it is limited to showing just 100 at a time.
If you try adding these offers manually it will take forever, especially if you want to add all of them. Thankfully, you don’t have to site there for five minutes just clicking “Add Offer” over and over. Here are a few script that will help you automate the process.
Add All Amex Offers
Here’s how it works (HT: reddit):
- Load https://global.americanexpress.com/offers/eligible (need to log in)
- Open JS Console (Press F12 on your keyboard)
- Paste snippet below into console and hit enter
- Wait a minute or two, until all “Add Offer” buttons are clicked.
- Reload the page and redo step 3 if necessary (if more offers are available)
And here’s the code:
// Find all the "Add to Card" buttons on the page
var offerButtons = Array.from(document.getElementsByClassName("btn btn-sm btn-fluid offer-cta btn-secondary")).filter(btn => btn.title == "Add to Card");
var index;
for (index = 0; index < offerButtons.length; ++index) {
console.log("Clicking offer button");
offerButtons[index].click();
// Wait 2seconds to be nice to AMEX servers
await new Promise(r => setTimeout(r, 2000));
}
Update (Nov. 12, 2021): In some accounts now the button text on the Amex Offers says “Activate Offer” instead of “Add to Card”. So the code above would have to be changed if you have that in your Amex account.
The code would look like this:
// Find all the "Activate Offer" buttons on the page
var offerButtons = Array.from(document.getElementsByClassName("btn btn-sm btn-fluid offer-cta btn-secondary")).filter(btn => btn.title == "Activate Offer");
var index;
for (index = 0; index < offerButtons.length; ++index) {
console.log("Clicking offer button");
offerButtons[index].click();
// Wait 2seconds to be nice to AMEX servers
await new Promise(r => setTimeout(r, 2000));
}
It will take about a minute, more or less, depending on how many offers you have available.
Update (Jul. 19, 2022): There a new bookmarklet for Chrome in case the two strings of code above no longer work (HT: JJT):
- Right click on Bookmarks Bar, select “Add Page” and copy/past the following URL:
-
javascript:btns=[...document.querySelectorAll('.offer-cta')].filter(b => b.textContent === 'Add to Card');c=()=>{ b = btns.pop(); if (!b) return console.log('added all!'); b.click(); setTimeout(c, Math.random() * 1500 + 300) };c();
-
- Then, go to the Amex Offers page and click on the bookmark you just created.
Guru’s Wrap-up
This makes the process quicker and much easier. Just makes sure you first add any specific offers that you might want on specific cards. For example a Hilton Amex Offer, you might want to add it to a Hilton card. Once you add an offer to one card, it disappears from your other Amex cards.