These Companies Raised Their Dividends Today – How to Automate with Python?

If you follow dividend-paying stocks, you know how valuable it is to spot when companies increase their payouts. But checking for these updates manually every day can be time-consuming. That’s why I decided to automate it.

In this post, I’ll show how I built a Python script that checks which companies increased their dividends today. It’s a small tool that makes tracking dividend hikes easier, and you can easily adapt it for your own use.


Why Automate Dividend Tracking?

Every day, companies publish new dividend announcements. If you’re a long-term investor or just someone who enjoys dividend income, this is valuable information.

With Python, we can automatically fetch this data and highlight only the companies that increased their dividends — no noise, just the important changes.


What the Script Does

The script scrapes data from the Dividend Stocks dividend announcements page. It then looks for companies where the new dividend is higher than the previous one. It organizes the results by announcement date so we can quickly see the latest updates.

The final output is a clean table, something like:

### 5/26/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| NDAQ | Nasdaq | $0.2400 | $0.2700 | 12.5% |

You can run this weekly, save the results by date, and automate decisions or store relevant dates (like the ex-date).


The Code

Here’s the full code that powers the script. It uses requests and BeautifulSoup to extract and process the data. You’ll need Python 3, the requests library, and the beautifulsoup4 library installed. We are also using defaultdict to help with the empty dict definition.

import requests
from bs4 import BeautifulSoup
from collections import defaultdict

def fetch_dividend_increases():
    url = 'https://www.marketbeat.com/dividends/increases/'
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')

    table = soup.find('table', class_='scroll-table')
    if not table:
        raise Exception("Table not found")

    rows = table.find('tbody').find_all('tr')

    increases_by_date = defaultdict(list)

    for row in rows:
        cols = row.find_all('td')
        if len(cols) < 5: # minimum size just to avoid noise
            continue

        try:
            ticker = cols[0].find('div', class_='ticker-area').text.strip()
            company = cols[0].find('div', class_='title-area').text.strip()
            announcement_date = cols[1].text.strip()
            new_div = float(cols[2].text.replace('$', '').strip())
            old_div = float(cols[3].text.replace('$', '').strip())
        except Exception:
            continue

        if new_div > old_div:
            change_pct = round(((new_div - old_div) / old_div) * 100, 2)
            increases_by_date[announcement_date].append({
                'ticker': ticker,
                'company': company,
                'old': old_div,
                'new': new_div,
                'change': change_pct
            })

    return increases_by_date

def print_markdown_report(data):
    for date in data:
        print(f"### 📅 {date}")
        print("| Ticker | Company | Old Dividend | New Dividend | Change |")
        print("|--------|---------|--------------|--------------|--------|")
        for stock in data[date]:
            print(f"| {stock['ticker']} | {stock['company']} | ${stock['old']:.4f} | ${stock['new']:.4f} | {stock['change']}% |")
        print("")

if __name__ == "__main__":
    data = fetch_dividend_increases()
    print_markdown_report(data)

Code results

Now, as promised, here are the results from executing this code on May 26th, 2025:

### 📅 5/26/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| NDAQ | Nasdaq | $0.2400 | $0.2700 | 12.5% |


### 📅 5/24/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| PRT | PermRock Royalty Trust | $0.0238 | $0.0305 | 28.15% |


### 📅 5/23/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| TD | Toronto-Dominion Bank | $0.7278 | $0.7568 | 3.98% |
| ATAT | Atour Lifestyle | $0.4000 | $0.4200 | 5.0% |
| LYB | LyondellBasell Industries | $1.3400 | $1.3700 | 2.24% |
| FER | Ferrovial | $0.0366 | $0.3029 | 727.6% |
| MAR | Marriott International | $0.6300 | $0.6700 | 6.35% |


### 📅 5/22/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| ALRS | Alerus Financial | $0.2000 | $0.2100 | 5.0% |
| LII | Lennox International | $1.1500 | $1.3000 | 13.04% |
| TY | Tri-Continental | $0.2766 | $0.2900 | 4.84% |
| ZGN | Ermenegildo Zegna | $0.1200 | $0.1361 | 13.42% |
| FLO | Flowers Foods | $0.2400 | $0.2475 | 3.13% |
| RL | Ralph Lauren | $0.8250 | $0.9125 | 10.61% |


### 📅 5/21/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| SDTY | YieldMax S&P 500 0DTE Covered Call Strategy ETF | $0.2448 | $0.2732 | 11.6% |
| QQQY | Defiance Nasdaq 100 Enhanced Options & 0DTE Income ETF | $0.1870 | $0.1927 | 3.05% |
| UVV | Universal | $0.8100 | $0.8200 | 1.23% |
| BCML | BayCom | $0.1500 | $0.2000 | 33.33% |
| EQH | Equitable | $0.2400 | $0.2700 | 12.5% |
| MDT | Medtronic | $0.7000 | $0.7100 | 1.43% |


### 📅 5/20/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| TUGN | STF Tactical Growth & Income ETF | $0.2005 | $0.2352 | 17.31% |
| QQQH | NEOS Nasdaq-100 Hedged Equity Income ETF | $0.3444 | $0.4112 | 19.4% |
| QQQI | NEOS Nasdaq 100 High Income ETF | $0.5309 | $0.6374 | 20.06% |
| HYBI | NEOS Enhanced Income Credit Select ETF | $0.3203 | $0.3503 | 9.37% |
| FMHI | First Trust Municipal High Income ETF | $0.1640 | $0.1650 | 0.61% |
| FMB | First Trust Managed Municipal ETF | $0.1410 | $0.1420 | 0.71% |
| NIC | Nicolet Bankshares | $0.2800 | $0.3200 | 14.29% |
| NOC | Northrop Grumman | $2.0600 | $2.3100 | 12.14% |
| LEO | BNY Mellon Strategic Municipals | $0.0190 | $0.0230 | 21.05% |
| PFO | Flaherty & Crumrine Preferred Income Opportunity Fund | $0.0483 | $0.0512 | 6.0% |
| HQH | Abrdn Healthcare Investors | $0.5000 | $0.5400 | 8.0% |


### 📅 5/19/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| DFGP | Dimensional Global Core Plus Fixed Income ETF | $0.0314 | $0.0358 | 14.01% |
| VRIG | Invesco Variable Rate Investment Grade ETF | $0.0928 | $0.1102 | 18.75% |
| KBWD | Invesco KBW High Dividend Yield Financial ETF | $0.1470 | $0.1478 | 0.54% |
| IHYF | Invesco High Yield Bond Factor ETF | $0.1261 | $0.1536 | 21.81% |
| BSMY | Invesco BulletShares 2034 Municipal Bond ETF | $0.0626 | $0.0779 | 24.44% |
| BSCY | Invesco BulletShares 2034 Corporate Bond ETF | $0.0865 | $0.0903 | 4.39% |
| BSCX | Invesco BulletShares 2033 Corporate Bond ETF | $0.0880 | $0.0924 | 5.0% |
| BSJW | Invesco BulletShares 2032 High Yield Corporate Bond ETF | $0.1100 | $0.1489 | 35.36% |
| BSCW | Invesco BulletShares 2032 Corporate Bond ETF | $0.0839 | $0.0885 | 5.48% |
| BSJV | Invesco BulletShares 2031 High Yield Corporate Bond ETF | $0.1470 | $0.1496 | 1.77% |
| BSCV | Invesco BulletShares 2031 Corporate Bond ETF | $0.0660 | $0.0693 | 5.0% |
| BSJU | Invesco BulletShares 2030 High Yield Corporate Bond ETF | $0.1426 | $0.1437 | 0.77% |
| BSCU | Invesco BulletShares 2030 Corporate Bond ETF | $0.0640 | $0.0671 | 4.84% |
| BSMT | Invesco BulletShares 2029 Municipal Bond ETF | $0.0550 | $0.0573 | 4.18% |
| BSJT | Invesco BulletShares 2029 High Yield Corporate Bond ETF | $0.1230 | $0.1267 | 3.01% |
| BSCT | Invesco BulletShares 2029 Corporate Bond ETF | $0.0690 | $0.0741 | 7.39% |
| BSCS | Invesco BulletShares 2028 Corporate Bond ETF | $0.0760 | $0.0788 | 3.68% |
| BSMR | Invesco BulletShares 2027 Municipal Bond ETF | $0.0560 | $0.0579 | 3.39% |
| BSJR | Invesco BulletShares 2027 High Yield Corporate Bond ETF | $0.1260 | $0.1271 | 0.87% |
| BSCR | Invesco BulletShares 2027 Corporate Bond ETF | $0.0700 | $0.0707 | 1.0% |
| BSMQ | Invesco BulletShares 2026 Municipal Bond ETF | $0.0550 | $0.0570 | 3.64% |
| BSJQ | Invesco BulletShares 2026 High Yield Corporate Bond ETF | $0.1240 | $0.1319 | 6.37% |
| BSCQ | Invesco BulletShares 2026 Corporate Bond ETF | $0.0680 | $0.0693 | 1.91% |
| BSMP | Invesco BulletShares 2025 Municipal Bond ETF | $0.0533 | $0.0554 | 3.94% |
| BSCP | Invesco BulletShares 2025 Corporate Bond ETF | $0.0708 | $0.0736 | 3.95% |
| PBR | Petróleo Brasileiro S.A. - Petrobras | $0.2403 | $0.2806 | 16.77% |
| PAC | Grupo Aeroportuario del Pacífico | $3.8657 | $4.3222 | 11.81% |
| CRT | Cross Timbers Royalty Trust | $0.0321 | $0.0808 | 151.71% |
| ACT | Enact | $0.1850 | $0.2100 | 13.51% |


### 📅 5/16/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| QRMI | Global X NASDAQ 100 Risk Managed Income ETF | $0.1607 | $0.1622 | 0.93% |
| EMD | Western Asset Emerging Markets Debt Fund | $0.0900 | $0.0950 | 5.56% |
| NC | NACCO Industries | $0.2275 | $0.2525 | 10.99% |
| FRME | First Merchants | $0.3500 | $0.3600 | 2.86% |
| PMM | Putnam Managed Municipal Income Trust | $0.0238 | $0.0265 | 11.34% |
| NRT | North European Oil Royalty Trust | $0.1600 | $0.2000 | 25.0% |


### 📅 5/15/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| GLPI | Gaming and Leisure Properties | $0.7600 | $0.7800 | 2.63% |
| STN | Stantec | $0.1574 | $0.1612 | 2.41% |
| NOA | North American Construction Group | $0.0840 | $0.0860 | 2.38% |
| ECF | Ellsworth Growth and Income Fund | $0.1300 | $0.1600 | 23.08% |
| IRT | Independence Realty Trust | $0.1600 | $0.1700 | 6.25% |
| CW | Curtiss-Wright | $0.2100 | $0.2400 | 14.29% |
| CB | Chubb | $0.9100 | $0.9700 | 6.59% |
| WMS | Advanced Drainage Systems | $0.1600 | $0.1800 | 12.5% |


### 📅 5/14/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| QQQY | Defiance Nasdaq 100 Enhanced Options & 0DTE Income ETF | $0.1866 | $0.1870 | 0.21% |
| ADC | Agree Realty | $0.2530 | $0.2560 | 1.19% |
| RLI | RLI | $0.1500 | $0.1600 | 6.67% |
| PAG | Penske Automotive Group | $1.2200 | $1.2600 | 3.28% |
| TOWN | TowneBank | $0.2500 | $0.2700 | 8.0% |


### 📅 5/13/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| HY | Hyster-Yale Materials Handling | $0.3500 | $0.3600 | 2.86% |
| BAP | Credicorp | $2.9084 | $10.9577 | 276.76% |
| SPMC | Sound Point Meridian Capital | $0.2400 | $0.2500 | 4.17% |


### 📅 5/12/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| LSTR | Landstar System | $0.3600 | $0.4000 | 11.11% |
| HNI | HNI | $0.3300 | $0.3400 | 3.03% |
| GSL | Global Ship Lease | $0.4500 | $0.5250 | 16.67% |
| TU | TELUS | $0.2829 | $0.2989 | 5.66% |
| OR | Osisko Gold Royalties | $0.0457 | $0.0550 | 20.35% |
| SUPV | Grupo Supervielle | $0.1550 | $0.1870 | 20.65% |
| BG | Bunge Global | $0.6800 | $0.7000 | 2.94% |
| HBB | Hamilton Beach Brands | $0.1150 | $0.1200 | 4.35% |


### 📅 5/9/2025
| Ticker | Company | Old Dividend | New Dividend | Change |
|--------|---------|--------------|--------------|--------|
| SLF | Sun Life Financial | $0.5876 | $0.6332 | 7.76% |
| PBA | Pembina Pipeline | $0.4783 | $0.5109 | 6.82% |
| HSHP | Himalaya Shipping | $0.0050 | $0.0250 | 400.0% |
| FMS | Fresenius Medical Care | $0.4370 | $0.7871 | 80.11% |
| CNQ | Canadian Natural Resources | $0.4117 | $0.4227 | 2.67% |
| GSBD | Goldman Sachs BDC | $0.1600 | $0.3200 | 100.0% |
| MNR | Mach Natural Resources | $0.5000 | $0.7900 | 58.0% |
| KRP | Kimbell Royalty Partners | $0.4000 | $0.4700 | 17.5% |
| ESAB | ESAB | $0.0800 | $0.1000 | 25.0% |

This is valuable information directly on your terminal, so you can use it as you want. Of course, you can update the print_markdown_report function and do it as you please, but that’s just one of the possible output configurations.

Further, you can ship this data directly into your local database (or Excel file), so you can plan your investments accordingly.

Considerations

This kind of small automation can save time and help you stay updated with key financial events. Over time, I plan to build other scripts like this for tracking dividend yield, price alerts, ETF performance, and insider activity.

This blog is all about combining programming and finance to create useful tools. If you’re building something similar or want to suggest improvements, feel free to reach out.

Don’t forget to follow us on Substack to be on top of our next scripts.

See you in the next one!

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top