Every record on this site, as plain JSON you can fetch with anything. Free to use, public domain, and please be kind to the server.
There is no query server. The records are published as static JSON files, one per year, and those files are the API: the browse page is a client of exactly the same URLs. No sign-up, no key for ordinary use.
| URL | What it returns |
|---|---|
/api/meta.json |
Counts, the list of years with their record counts and URLs, papers, top towns, acts and venues, and when it was built. Start here. |
/api/gigs/YYYY.json |
Every gig dated in that year, as an array of records. |
/api/gigs/undated.json |
Gigs the paper printed without a usable date (mostly reviews and tour notices). |
/api/bands.json |
Every named act, A to Z: gigs recorded, first and last year. The list behind the Bands page. |
/api/venues.json |
Every reviewed venue: town, name, locality, gigs, first and last year. The list behind the Venues page. |
/api/papers.json |
Per paper: gigs, listings, issues read and its span, with issues and listings year by year. The data behind the Papers page. |
# what's in the archive
curl -s https://ukgigarchive.co.uk/api/meta.json | jq '.counts'
# every gig from one year
curl -s https://ukgigarchive.co.uk/api/gigs/1979.json | jq 'length'
# every gig at one venue in a year, by its resolved name
curl -s https://ukgigarchive.co.uk/api/gigs/1986.json \
| jq '.[] | select(.vn == "Dingwalls")'
# one row per GIG rather than per listing: group by the gig id
curl -s https://ukgigarchive.co.uk/api/gigs/1986.json \
| jq 'map(select(.g)) | group_by(.g) | map({g: .[0].g, d: .[0].d, b: .[0].b, listings: length})'
# every date one act played, across all years
for y in $(curl -s https://ukgigarchive.co.uk/api/meta.json | jq -r '.years[].year'); do
curl -s https://ukgigarchive.co.uk/api/gigs/$y.json \
| jq -r --arg b "The Fall" '.[] | select(.b[]? == $b) | [.d, .t, .vn // .v] | @tsv'
done
Keys are short because at full size the key names alone would run to megabytes. A key is simply absent when it has no value.
| d | date, YYYY-MM-DD |
|---|---|
| dw | day of week, three letters |
| dc | how the date was known: absent means printed in full; otherwise how it was inferred |
| t | town, uppercase |
| tp | the town as the paper printed it, when the resolved venue puts the gig elsewhere |
| v | venue, cleaned |
| vr | venue exactly as printed, when it differs from v |
| vn | resolved venue name: the one identity behind all its printed spellings |
| vl | the resolved venue's locality, where a name alone is ambiguous (Red Lion, Kings Head) |
| vs | the resolved venue's stable slug, safe to link or join on |
| vc | how many gigs in the archive are at that venue |
| p | the venue's phone number as printed |
| b | the bill, an array, headliner first |
| br | the bill as printed, when it differs |
| nb | present when the bill includes a billing that isn't an artist (a disco, a DJ) |
| n | note: benefit gigs, support billing, how a garbled line was read, anything odd |
| ev | evidence grade: c corroborated, k consistent, v venue known, s single sighting (see About) |
| c | the reader's own confidence in the line: a note on how garbled it looked, not comparable between records |
| st | how it was printed: gig-guide, advert, tour-announcement, festival, live-review |
| pub | the paper: record-mirror, sounds, nme |
| g | gig id. Each record is one listing (one printed sighting); listings
that share a g are the same gig: the same act, town and night. Absent
when there's no date or no act to group on. Stable across rebuilds |
| gx | present when the same act is listed in another town that night: one of the dates is wrong |
| gv | present when the listings of one gig name different venues |
| si | the issue it was printed in, by cover date |
| sp | the page it was printed on |
If you want the whole archive, please take the bulk download rather than walking every year: it's one request instead of dozens, and it's always current.
The data is public domain, so this is about sharing the server, not about rights:
meta.json's
generated_at, and only re-fetch the years when it changes.
Years do change: older ones fill in as more pages are read.User-Agent for anything automated, so we can get in touch
rather than block you.Building something bigger (an app, a research project, a site that uses the data heavily)? Get in touch and we'll sort out access that suits both sides.
The records are released under
CC0.
They describe what the music papers printed, which isn't always what
happened; see About for how far to trust them.
The scanned pages themselves remain their publishers' copyright and are
not served here; each record's pub, si and
sp tell you where to find the original.