Donations above ₹20,000 reported by political parties to the Election Commission, 2022–2026
Every political party in India has to tell the Election Commission about each donation above ₹20,000, on a form called 24A. The Commission puts these reports on its website. Most of them are scans of printed pages, often stamped and signed, sometimes slightly crooked, and you cannot search them or add them up.
This release reads those scans and turns the donation rows into a table. The hard part was not reading them but knowing when the reading is right. A misread digit or a name that runs into the next line could put the wrong amount next to a real person's name, so every row had to earn its place.
Only two kinds of rows are published. Either the rows of a page add up exactly to the total the party printed, or the same donation, with the same amount and a similar name, also appears in the transcription that ADR / MyNeta made by hand. Of 38,560 rows read, 22,822 passed. The other 15,738 are left out.
Nothing personal beyond the name goes out. PAN numbers were used only to tell a person from a company and were never saved, and addresses were dropped.
Plain CSV files, UTF-8, with a header row.
Hugging Face dataset →
| File | Holds | Rows | Size | SHA-256 |
|---|---|---|---|---|
| form24a_donations.csv | One row per verified donation: year, party, donor name as read, amount, mode, date, how it was verified, source PDF and page | 22,822 | 4.5 MB | 4737b190aadb899c4ed6aeea02b38c9c0d178a07b7118d1f4e7a16762c169974 |
| form24a_documents.csv | One row per Form 24A report: rows read, their sum, the total the party printed, and whether they match | 151 | 18 KB | 52fa41bee8a90311328933ac390d6fd69e82ef963d9fb0044fb5f84d5c51a6a8 |
| electoral_trust_documents.csv | The same check for electoral trust reports | 53 | 6 KB | b2d1e8f98fe7cce2394d55da4961bd18ce32262f4166b1de4fdaac2810982e39 |
| party_expenditure_documents.csv | The same check for party election expenditure statements | 281 | 46 KB | 4066f3d73b4649d3fa33a06a4b049a53c5f50edf4035f8d1aca47d00a261b2a6 |
The full method, with every rule and every column, is in METHODOLOGY.md. The original PDFs are in the source documents release.
import duckdb
duckdb.sql("""
SELECT fy, party_from_filename, count(*) AS rows, sum(amount_rs) / 1e7 AS crore
FROM read_csv('hf://datasets/shreyamm/party-donations-form24a/data/form24a_donations.csv')
GROUP BY ALL ORDER BY crore DESC LIMIT 10
""").show()
| Count | |
|---|---|
| Verified donation rows | 22,822 |
| Their total | ₹5,539.7 crore |
| Form 24A reports they come from | 63 |
| Rows where the whole page adds up to the printed total | 746 |
| Rows that agree with the ADR / MyNeta transcription | 22,076 |
| Rows whose name text should be checked before quoting | 6,166 |
| Financial year | Rows | ₹ crore |
|---|---|---|
| 2022-23 | 8,975 | 863.8 |
| 2023-24 | 7,827 | 1,648.2 |
| 2024-25 | 5,918 | 2,701.1 |
| 2025-26 | 102 | 326.7 |
| Party | Rows | ₹ crore |
|---|---|---|
| Bharatiya Janata | 13,102 | 4,192.0 |
| Dravida Munnetra Kazhagam | 530 | 590.4 |
| Indian National Congress | 2,710 | 234.7 |
| All India Trinamool Congress | 554 | 189.9 |
| Telugu Desam | 267 | 86.9 |
| All India Anna Dravida Munnetra Kazhagam | 51 | 67.0 |
| Aam Aadmi | 3,803 | 63.7 |
| Biju Janata Dal | 4 | 60.0 |
| Yuvajana Sramika Rythu Congress | 4 | 16.0 |
| Janasena | 71 | 13.7 |
| Indian Union Muslim League | 1,177 | 7.8 |
| Jannayak Janta | 130 | 3.1 |
donor_text_needs_check marks 6,166 such rows. Please look at the source page before you name anyone.