Public Money Deserves
Public Scrutiny.
Every single rupee spent by the government passes through a public tender. This process is the natural check-and-balance of public finance, yet the data remains locked behind complex government interfaces, tedious pagination traps, and constant captchas.
This initiative is a step towards open transparency. We have crawled, parsed, and consolidated the entire Central Public Procurement Portal (CPPP) of India. The result is two flat, fully structured SQLite databases containing over 8.8 million contract awards and tender notices, including active listings and final award decisions.
1. Download the Databases
Get the raw SQLite databases directly. Each database represents a comprehensive chunk of procurement activity. Select a mirror below to start downloading.
tenders_vps.db
aoc_tenders.db
2. How to Verify Your Download
When downloading large datasets, network issues can occasionally corrupt the file. We provide a **SHA-256 fingerprint** for each database. Think of this fingerprint as a unique digital signature. Checking the file on your machine and matching it to our values guarantees your copy is safe and complete.
PowerShell, and press Enter to launch it.cd ~/Downloads in the window and hit Enter.3. Database Schema & Fields
Understand the layout of tables and JSON keys before launching your queries. Each database includes listing details and fully-parsed JSON elements.
-- Listing metadata for active/archived notices (~3.9M rows)
CREATE TABLE tenders (
internal_id TEXT PRIMARY KEY,
tender_id TEXT,
detail_url TEXT,
status TEXT,
organisation_name TEXT,
title TEXT,
reference_number TEXT,
portal_type TEXT,
serial_number TEXT,
e_published_date TEXT,
bid_submission_closing_date TEXT,
tender_opening_date TEXT,
corrigendum_url TEXT,
scraped_at TEXT,
partition_id INTEGER
);
-- Deep parsed JSON parameters mapping (~3.1M rows)
CREATE TABLE tender_details (
internal_id TEXT PRIMARY KEY, -- Maps to tenders.internal_id
tender_id TEXT,
details_json TEXT, -- Structured keys
scraped_at TEXT
); JSON structure inside details_json:4. Example Analytical Queries
Ready to analyze the data? Click on either of the SQL query code blocks below to copy the template code directly to your clipboard.
Identify agencies awarding contracts where only one bidder participated. A high frequency of single-bid awards can highlight reduced competition.
SELECT org_name, COUNT(*) as single_bid_count FROM aoc_tenders t JOIN aoc_details d ON t.internal_id = d.internal_id WHERE json_extract(d.details_json, '$.["Number of bids received"]') = '1' GROUP BY org_name ORDER BY single_bid_count DESC LIMIT 10;
Search for notices that closed in less than 5 days from publishing. Artificially short deadlines can restrict competitive responses.
SELECT organisation_name, title, e_published_date, bid_submission_closing_date FROM tenders WHERE status = 'archived' AND (julianday(bid_submission_closing_date) - julianday(e_published_date)) < 5 LIMIT 10;
Public Intent & Ethical Crawling Guidelines
Our initiative operates under principles of civic utility, transparency, and collaboration. Below we outline our database collection methodology, non-malicious intent, and data compliance practices.
1. Legislative Spirit of transparency
Under Section 4 of India's Right to Information (RTI) Act, 2005, public authorities are mandated to proactively organize and digitally publish public records. We believe that structured data formats (like SQLite databases) are essential to fulfilling this legislative intent. Our sole objective is to support public administration efficiency and open research.
2. Strict Compliance & Passive Crawling
This database was constructed using passive web crawling practices. We accessed only publicly-available, unauthenticated URLs. No security configurations were bypassed, no firewalls were scanned, and no automated session overrides occurred. The scraper operated at paced rate limits to avoid server degradation or network overhead on CPPP servers.
3. Absence of Malicious Intent
This project harbors no hostile, commercial, or malicious intent towards any government department, public official, contractor, or vendor. The datasets are provided strictly as an objective, unaltered mirror of the official government logs. We do not inject, edit, or selectively delete records, ensuring data integrity remains absolute for research studies.
4. Disclaimer & Redaction Protocol
All databases are provided "as-is" for educational and research analysis. Users must verify findings against the official website (eprocure.gov.in) before making assertions. If any authority, office, or individual identifies personal information or records requiring retraction, they may coordinate with us for immediate redaction.
Let's Collaborate
Public records only provide transparency when they are studied. We invite data analysts, researchers, journalists, and everyone interested in accountability to look at the numbers.