Skip to content

Instantly share code, notes, and snippets.

@elado
Last active May 10, 2026 04:46
Show Gist options
  • Select an option

  • Save elado/69fa611d84305dea4b38801880743928 to your computer and use it in GitHub Desktop.

Select an option

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();
@samwathegreat

samwathegreat commented Dec 2, 2025 via email

Copy link
Copy Markdown

@samwathegreat

samwathegreat commented Dec 4, 2025

Copy link
Copy Markdown

FYI, here is the one-liner for your bookmarks. Credit to @feiyax

javascript:btns=[...document.querySelectorAll('button[title="add to list card"]')];c = () => {b = btns.pop();if (!b) return console.log('added all!');b.click();setTimeout(c, Math.random() * 1500 + 300);};c();

Working as of today, 12/4/25

@quankhuc

quankhuc commented Apr 6, 2026

Copy link
Copy Markdown

Credit to the script above. I updated the script to their newest layout and easier to read for a dev :)

javascript:(() => {
  const clickNext = () => {
    const b = document.querySelector('button[data-testid="merchantOfferListAddButton"]');
    if (!b) return console.log("added all!");
    b.click();
    setTimeout(clickNext, 20);
  };
 
  clickNext();
})();

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