This Cool Trick Lets You Add All Amex Offers at Once
Amex Offers are a great perk for American Express cardholders. They have lost some value since limitations were placed but you can still use the points version and statement credit version of the same offer.
We see new Amex Offers almost everyday, and we often write about some of the most popular ones here on the site. With all those offers it’s not rare to sometimes have more than 100 offers available on a specific card. That makes it difficult to see what new offers come out. I usually get around that by adding every useless offer I see to a card that I never use. However, offers still accumulate if I don’t check my account for a few days.
Adding multiple Amex Offers to a card is not an easy feat. You can to manually click “Add to Card” for every offer, and it takes a few seconds for every signal offer. So if you want to add all the offers to your card is a painfully long process. I guess American Express could just add an “Add All Offers” button, but that would be way to easy.
RELATED: Duh, Why Didn’t I Think Of This Amex Offers Search Trick Sooner?
Add All Amex Offers
Thankfully there’s a way to automate this process with a short script that redditor blamsonyo has created. This is how it works:
- Load https://global.americanexpress.com/offers/eligible (log in)
- Open JS Console (Press F12 on your keyboard)
- Paste code below into console and hit enter
- Wait a few minutes, until all “Add Offer” buttons are clicked.
- Reload the page and redo step 3 if necessary (if more offers are available)
This is 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: Some accounts have Amex Offers that have “Activate Offer” buttons instead of “Add to Card”. For those account you need to change up the code bit. It would be:
// 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));
}
Conclusion
This process is quick and easy. You can run the script in seconds, and then you just wait until all the offers are added. if you have more than 100 offers, not all of them will show up in the list, so you will need to run the script a second time.
Just makes sure to first add any specific offers that you might want on specific cards. For example a Delta Amex Offer, you might want to add it to a Delta card. Once you add an offer to one card, it usually disappears from your other Amex cards.
This was a great help to add all of the offers to get more to show up. Thanks!
I’ve used this for months, and not working today.
Correction, use the original code now again….it works.
Is there a way to get to offers without creating a online account with American Express? Are events only posted online now?
Not that I am aware of
Where do you paste the information? I can’t see a place where I can paste the text. In case it’s not obvious, I’m not a programmer. I assumed this was easy since the article says it is but maybe those of us who aren’t techies shouldn’t mess with it?
How can this trick work for other companies credit card offers like Bank of America? Appreciate any help
Hey Ryan, the script doesn’t appear to be working any more. I get an <- undefined error in the console.
Hey Chris, works for me (in Chrome at least).
Oh, I see what the issue might be. Some accounts now show “Activate Offer” buttons instead of “Add to Card”.
So in the third line you would need to replace “Add to Card” with “Activate Offer”, to match whatever the text on the buttons is.
Hopefully that helps.
Thanks, I’ll give it a try next time. Oops, I don’t know why I thought Ryan posted this one when you post like 50% of the content here. I’m looking at you Shawn ……
No worries! But I’m saving a screenshot of your comment for when I ask for a pay raise.
Update: I edited the script as suggested and it worked. So, thanks!
I might update the post, though. I’m not super-tech savvy, but comfortable at this level. However, if P2 was trying to do this she’d just give up after one try.
You could try to get that FM job and then ask Shawn for a counter offer 🙂
I did confirm it works on my Everyday card. Just not at this time on the Simply Cash Business variety. It did before, so a puzzler. Oh well, I will not expect anything other than some temporary glitch. Thanks!
Ah, this must be what I didn’t notice in the Business card. Many thanks.
Works!
The list is available whenever I log onto my my Amex account. Too many offers are items and services I find not useful. Currently, there are 3 clicks on my list.
The downside of this cool trick is that it wrecks Amex Offers for everyone else. A finite number of people can enrolling for any given Amex Offer. Say you enroll for all the Amex Offers, but only ever use a few. You’ve used up entitlement that someone else might have wanted to use. Gotten in the way of a customer that the company making the offer wanted to reach.
The problem is that AMEX only shows you 100 available offers, so if you don’t clip a bunch that you do not want, you will stop seeing offers that you potentially DO want. Most offers do not seem to have a finite number of activations, since I still see many available to clip on one of my AU’s cards a week or two before they’re expiring.
My issue with this is that I tend to split offers that I have no use for across multiple cards, that way I can still see what I have on the card, since AMEX also doesn’t show more than 100 offers that you have loaded to the card. So ideally I’d like to set a limit of how many offers get loaded at a time.
Personally, I find that hitting”load to card” every few seconds while leaving the mouse in the same spot works well and doesn’t take that long to load. The screen keeps moving, so the next offer to load is in the same spot as the previous one.
Couldn’t get the F12 key to work on my old MacBook Pro. Tried everything: Fn +F12, ctrl + F12 etc.
One of our FB mods shared this in our group – if on Mac / Safari you wanna go to Develop -> Show JavaScript Console to access this
Mae – use cmd-option-J
Doesn’t this just move the problem to your other pocket? I can see looking at a short list for good new offers but isn’t scrolling through all the added ones to remember the ones you wanted to use a pain? Or did I miss something? Making the ones you could care less about disappear forever would be great.
Amazing! Thanks!
good stuff ! would be nice to do the same to see all offers added to account. and also scan offer for specific text
but that’s just academic, if all added you dont have to worry about missing anything
This code is little broken as written, as is, the browser will think the await is part of the comment.
// 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 setTimeout(r, 2000));
}
That didn’t render correctly. Ignore that code, just add an new line before the `await`
Fixed it. Thanks for pointing it out!