Skip to content

Instantly share code, notes, and snippets.

@w3spi5
Created February 3, 2026 04:36
Show Gist options
  • Select an option

  • Save w3spi5/c397c76342f0b9e2b2a6e59fd68dd191 to your computer and use it in GitHub Desktop.

Select an option

Save w3spi5/c397c76342f0b9e2b2a6e59fd68dd191 to your computer and use it in GitHub Desktop.
Boursobank Bulk Statement Downloader (boursobank.com)

🏦 Boursobank Bulk Statement Downloader

📥 Bulk download all your PDF bank statements from Boursobank with a single script.

✨ Features

  • Downloads all available statements automatically
  • Configurable delay between downloads to avoid rate limiting
  • Multiple CSS selectors for better compatibility
  • Clear console feedback with progress tracking

🚀 Quick Start

  1. Log in to your Boursobank account
  2. Navigate to your statements page (Documents > Relevés)
  3. Open browser DevTools (F12 or Cmd+Option+I on Mac)
  4. Switch to the Console tab
  5. Paste the content of boursobank-bulk-statement-downloader.js
  6. Press Enter and watch the magic happen ✨
  7. Allow multiple downloads if prompted by your browser

⚙️ Configuration

Parameter Default Description
DOWNLOAD_DELAY_MS 1500 Delay (in ms) between each download

⚠️ Notes

  • Make sure pop-ups and multiple downloads are allowed in your browser settings
  • Tested on Chrome and Firefox
  • The script will notify you in the console if no download links are found

📄 License

MIT - Feel free to use and modify as needed.

🤝 Contributing

Found a bug or want to add support for another bank? Feel free to fork and submit a PR!


Made with ☕ and JavaScript

/**
* Bulk PDF Statement Downloader for Boursobank
*
* Usage: Open your bank statements page, then run this script in the browser console (F12)
*
* @author w3spi5
* @license MIT
*/
(async function bulkDownloadStatements() {
const DOWNLOAD_DELAY_MS = 1500;
const SELECTORS = [
'a.c-link--download-pdf',
'td.documents__action a[href*="statements-document"]'
];
// Find download links using multiple selectors
const findDownloadLinks = () => {
for (const selector of SELECTORS) {
const links = document.querySelectorAll(selector);
if (links.length > 0) return links;
}
return [];
};
const downloadLinks = findDownloadLinks();
if (downloadLinks.length === 0) {
console.error('❌ No download links found. Check if you are on the correct page.');
return;
}
console.log(`📄 Found ${downloadLinks.length} statement(s) to download`);
for (let i = 0; i < downloadLinks.length; i++) {
const link = downloadLinks[i];
const title = link.title || link.getAttribute('href')?.split('/').pop() || `Document ${i + 1}`;
console.log(`⬇️ Downloading ${i + 1}/${downloadLinks.length}: ${title}`);
link.click();
if (i < downloadLinks.length - 1) {
await new Promise(resolve => setTimeout(resolve, DOWNLOAD_DELAY_MS));
}
}
console.log('✅ All downloads initiated!');
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment