This is a Python toolkit for collecting and analyzing publicly available data from GiveSendGo, including individual campaign donations and the full site-wide campaign directory. Built for accountability journalism, civic research, and transparency.
Note: Everything collected is publicly visible on GiveSendGo without an account. No private data is accessed.
- Accountability journalism: Tracking who funds politically motivated campaigns
- Research: Analyzing donor networks, comment sentiment, and fundraising patterns over time
- Platform-wide analysis: Using the campaign directory scraper to identify trends across all of GiveSendGo
- As of March 4th, 2026, there are 6069 active campaigns on GiveSendGo.
- Out of campaigns raising USD, these campaigns have raised a total of $74,353,764.
- The most common campaign is Medical, followed by Mission, Emergency, Family, and Legal.
- The most common recipient states include Texas, Florida, and California.
Collects every donation record from a specific GiveSendGo campaign. For each donation, it captures the donor name, amount, timestamp, and any comment left by the donor.
Scrapes GiveSendGo's full campaign directory by paginating through the /api/v2/campaigns endpoint. Automatically detects the total number of pages on the first request and iterates through all of them, collecting metadata for every campaign on the site.
├── all_campaigns/ # Donation scraper for all campaign metadata
│ ├── results/
│ | └── all_campaigns.csv
| └── script.py
├── campaign_scraper/ # Donation scraper for a single campaign
│ ├── results/
│ │ └── all_donations.csv
│ ├── requirements.txt
│ └── script.py
└── README.md
