Bengaluru Road Contracts
Data & Sources
Everything on this site traces back to public records. This page lists where each piece comes from, links the original sources, and lets you download the compiled dataset. The underlying government records are already public; this project's job is to join them together and make them readable.
Data on this site is a one-time snapshot, not a live feed. The contract records were scraped on 30 June 2026 and cover contracts published 21 August 2023 – 1 April 2026; the works-bill records were captured on 6 July 2026. It is not updated as new contracts are awarded.
Where the data comes from
Contract records: Karnataka Public Procurement Portal (KPPP). The awarded road, drain, and asphalting works, as filed by BBMP. There is no public human-viewable per-tender page on KPPP to link to directly, but any contract on this site can be looked up by its tender number (free, captcha, no account), so the tender ID and number are the traceable key. The underlying data is served by KPPP's public, machine-readable API, which is how it was obtained.
- KPPP portal: kppp.karnataka.gov.in
Ward boundaries and the locality-to-ward schedule: BBMP, via
OpenCity (public domain). Both come from BBMP's 2023 final 225-ward
delimitation. The ward-boundary map (BBMP_225.geojson) is
converted from OpenCity's 225-ward KML; the area-to-ward lookup is parsed
from BBMP's final delimitation notification of 25 September 2023
(final_circular.pdf). Both files come from the same OpenCity
dataset page below.
- OpenCity, BBMP wards delimitation 2023: data.opencity.in
Ward-to-corporation mapping: BBMP wards over the GBA's 5
corporations, via OpenCity (public domain). Each ward card names
the City Corporation the ward now falls under. That mapping is computed by
overlaying the 225 BBMP wards on the Greater Bengaluru Authority's
five-corporation boundaries: the September 2025 final
corporations map (GBA_5corps_sept2025.kml), not the earlier
July draft.
- OpenCity, GBA corporations delimitation 2025: data.opencity.in
Works bills and contractor payments: BBMP Works Bill Public View. A separate BBMP system recording works bills per ward: the work, the contractor paid, and the amount. One-time snapshot taken 6 July 2026. It publishes no tender number, so it is never joined per-contract to the KPPP records; the two datasets meet only at ward level and by contractor name. It powers the Contract Details page.
- BBMP Works Bill Public View: account.bbmpgov.in/PublicView
Also consulted: BBMP draft delimitation gazette, 18 August
2023 (gazette_notification.pdf). An earlier draft,
superseded by the 25 September 2023 final notification above. Used only as a
cross-check while parsing the locality schedule; it is the source of no
figure on this site.
Download the data
The compiled dataset joins the KPPP contract records to wards and deduplicates them: the ward-joined, readable form you can't get from the raw sources. It is released into the public domain. A README documents every field, the row counts, and the known gaps; read it before drawing conclusions.
- dataset.csv: one row per ward-placement
- dataset.json: the same data, keyed by ward, structure preserved
- dataset_README.md: field documentation, counts, and caveats
- GBA_5corps_sept2025.kml : the corporation boundaries used for the ward-to-corporation mapping (public domain, via OpenCity; source linked above)
- bbmp_bills_raw.csv: the works-bill records, raw as exported from BBMP's PublicView (a separate dataset from the compiled one above; see Contract Details for how it is read)
Limits and caveats
The numbers on this site come with caveats: how many contracts name no winner, what "untagged" contracts are, and why a low bid isn't proof of anything. Those are answered in full on the FAQ (see questions 1 and 2 for where the data comes from and what's in scope) and quantified on the Key Findings page. Absence of a road or contract from this site means it was outside our scope or scrape window , not that no work happened.
Contractor-name merge list (Key Findings, Finding 05): the 932 distinct-winner count is exact-string as filed; merging the seven human-verified spelling variants below gives 925. The full list, so the calls are auditable:
- ANIL KUMAR R ≡ Anil Kumar R (case only)
- ANILKUMAR ≡ Anilkumar (case only)
- K C SREEDHARA ≡ K C Sreedhara (case only)
- SHANTHARAJU N R( TRANSFO ELECTRICALS ) ≡ Shantharaju N R( TRANSFO ELECTRICALS ) (case only)
- SHIVALILA( SPOORTHI ENTERPRISES ) ≡ Shivalila( SPOORTHI ENTERPRISES ) (case only)
- SIDDAPPA A ≡ Siddappa A (case only)
- CHALUVA RAJU D ≡ CHALUVARAJU D (whitespace; same division, verified)
Licence and reuse
The compiled dataset and this site's content are released into the public domain, with no permission or attribution needed, though a link back helps others find the originals. The source records are public by origin: the contract data is authored by the government via KPPP; the ward geometry and locality schedule are authored by BBMP and obtained via OpenCity (public domain). For the full reuse note, see the FAQ (question 16).