Skip to content

Instantly share code, notes, and snippets.

@elado
Last active October 25, 2025 11:06
Show Gist options
  • Save elado/69fa611d84305dea4b38801880743928 to your computer and use it in GitHub Desktop.
Save elado/69fa611d84305dea4b38801880743928 to your computer and use it in GitHub Desktop.
American Express / Amex - Add all offers to card at once (bookmarklet)

American Express - Add all offers to card at once

If you own an AMEX card, you can add a bunch of offers to the card in this link: https://global.americanexpress.com/offers/eligible

There are many offers, and they change all the time. Instead of clicking "Add to card" repeatedly, I created this bookmarklet.

In Chrome, add a new bookmark (right click on bookmarks bar -> "Add Page...") with the following URL:

javascript:btns=[...document.querySelectorAll('button')].filter(b => /add to list/i.test(b.title) || b.dataset.testid=="merchantOfferListAddButton");c=()=>{ b = btns.shift(); if (!b) return console.log('Added all!'); b.scrollIntoView(); b.click(); setTimeout(c, Math.random() * 300) };c();

Last updated: 10/11/25

Just run the bookmark while on the offers page, and watch the magic happens!

javascript:btns=[...document.querySelectorAll('button')].filter(b => /add to list/i.test(b.title) || b.dataset.testid=="merchantOfferListAddButton");c=()=>{ b = btns.shift(); if (!b) return console.log('Added all!'); b.scrollIntoView(); b.click(); setTimeout(c, Math.random() * 300) };c();
@feiyax
Copy link

feiyax commented Oct 1, 2025

As of today, the button's title is add to list card. it works for me after changing it to that:

const buttons = document.querySelectorAll('button[title="add to list card"]'); 
// Loop through each button 
buttons.forEach((button, index) => { 
  setTimeout(() => { button.click(); }, index * 3000); 
});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment