DEV Community

Billie M
Billie M

Posted on Originally published at billiem.uk

Free datasets worth building something around

Cricsheet’s women’s Hundred download was 716 kB when checked. Extracting it produced 188 match files, totalling 13.39 MB of JSON. One inspected match was about 75 kB.

For a match replay, those are useful distinctions: the competition archive supplies the material, but one match can be the first thing someone opens. A small index could offer the choice without loading every delivery at once.

Other collections suggest different first versions. A railway explorer starts with a station row spread across financial years. A place-name finder needs to distinguish two Newports. A property-price browser needs to keep a sale record separate from the idea of a permanent property record.

Here are four downloadable sources with those decisions attached. Publisher documentation and representative files were checked on 20 October 2026. The projects are suggestions, not completed applications; file inspection establishes neither browser performance nor the correctness of an eventual chart or replay. All sizes below describe the checked files and use decimal kB and MB.

A cricket replay: load a match, then understand its deliveries

Cricsheet supplies match metadata, innings and deliveries. Its checked women’s Hundred JSON bundle contained 188 matches from 2021–2026. That gives a season archive a possible match list, and a replay a smaller first payload.

The interesting interface could step through an innings, showing the batter, bowler and changing score. Getting the file into memory is only the beginning of that work.

Read the JSON format documentation before deciding how to walk the nested delivery records. Keep the data version, use the supplied player IDs when connecting matches, and read balls_per_over from the file. This Hundred sample uses five-ball groups. Extras and delivery ordering matter to score calculations too: a JSON parser accepting a file says nothing about whether the replay has cricket scoring right.

There are two other boundaries worth keeping with the match selector. Cricsheet’s coverage pages describe gaps and withheld matches, so the downloaded collection is not a promise of complete coverage. Files can also be revised; keep their version and revision with the retrieval date.

For reuse, consult the licensing page for the format actually downloaded. The main JSON data uses Open Data Commons Attribution; the XML match data uses CC BY 4.0. Preserve the archive’s notices and give the required source and licence credit.

A station history: keep the year labels and the gaps

For a railway-station explorer, start with the Office of Rail and Road’s Table 1415 historical ODS workbook. The checked 1.52 MB file has 28 financial-year columns, from 1997/98 to 2024/25, for Great Britain. Entries/exits and interchanges occupy separate sheets.

That is a different starting point from Table 1410’s latest-year CSV. One station row from Table 1415 can supply a history view, with the financial-year labels doing visible work in the interface.

Keep the workbook’s Cover_sheet close during extraction. It explains station names, three-letter codes, National Location Codes and geographic fields. Codes need to remain text, and historical rows can have absent identifiers. A checked filter for the workbook’s current Wales region produced 223 rows in each sheet, but left out old records with unavailable region information. A regional filter is a slice with that limitation, not an assurance of a complete regional history.

The values also need more than a numeric conversion. [x] means unavailable; [z] means inapplicable. Preserve those as gaps. The collection estimates station use, mainly from ticketing data: repeated journeys count, and the figures do not deduplicate people. Methodology changes can break comparisons between years. Put the workbook notes and the quality report linked from the collection page within reach of any chart.

This is annual historical data, so display the covered year. ORR’s reuse terms apply OGL with exceptions for identified third-party material and logos; the checked workbook had no separate internal licence notice. Keep the credit and definitions with the extracted table.

A place-name finder: the label is not the key

GeoNames gives a place-search project coordinates, names, feature types and administrative codes. The smaller cities15000.zip is a useful first download: 3.36 MB compressed, containing 8.54 MB of headerless, tab-delimited UTF-8 text. The README supplies its 19-column order.

The filename needs a little explanation in a project's scope note. The extract includes capitals below its population threshold; it is a selected populated-place collection, not every village.

A checked GB filter, joined to region display names from admin1CodesASCII.txt, produced 866 records in 187 kB of JSON. There is more than one Newport and Bangor in the sample. Use geonameid for identity and display the region with the name, so a search result has enough context to be selectable.

Latitude, longitude and time zone can fill out a place card. Population can help select a quiz pool, with one important qualification: a record’s modification date does not establish when its population was measured. The basic alternate-names field is comma-separated; language-aware name handling needs a separate table if that field is insufficient.

The main gazetteer uses CC BY 4.0. Credit GeoNames, link the licence, describe the filtering or other changes, and preserve supplied source notices. Dumps regenerate daily. For a small static finder, replacing the chosen slice is one option before taking on the separate modification and deletion feeds.

A local sale browser: import the export you actually requested

HM Land Registry Price Paid Data covers recorded transactions in England and Wales, with standard-category history from 1995. A small interface could offer year and property-type filters, price sorting and address inspection.

The official report builder gives that project a convenient first slice. Choose a postcode prefix and completion-date range, request all results, and download CSV with headers. A checked PL20, calendar-2024 export contained 169 transactions in 44 kB.

Parse this file by its supplied headers, including price_paid, deed_date, property_type and address components. Its column order differs from the bulk CSV files. The bulk field guidance is useful when expanding the project, but a national annual split can still be tens of megabytes.

Keep the record’s meaning visible in the application. The transaction ID identifies a sale, not a permanent property key for connecting successive sales. Recent registrations are incomplete, records can be corrected, historical addresses can differ, and some transfers are excluded. A result list should remain a view of recorded transactions rather than a claim to show every sale.

The reuse decision affects the project too. HMLR uses OGL v3.0, with attribution specified on its download page, but embedded address fields have additional Royal Mail and Ordnance Survey conditions. The notice expressly permits display for residential property-price information services; other address uses may need separate permission.

One match, one station, a country-filtered place list or a postcode-and-year export gives each of these interfaces a manageable first subject. Keep the identifiers, gaps, source dates and credits alongside that slice when preparing it locally.

The full guide on billiem.uk also covers OurAirports and Natural Earth, including a small airport-record specimen and generalized map geometry. For wider collection browsing, Public Datasets, Awesome Public Datasets and 100 Datasets already offer substantial discovery routes.


Want to talk about something I’ve written or built? Get in touch.

This article was adapted with AI assistance from an original article on billiem.uk. The original article was reviewed before publication.

Top comments (0)