There's probably no such database freely available, although as you noted some media organizations have gathered the updates... and e.g. 538 has produced timeline graphs such as these based on those data sets.

I don't know if e.g. ABC and/or Edison Research charge for access to such data. Your best bet is probably to contact them and inquire on the conditions under which they'd make the raw data available to you.
In principle, anyone interested and determined enough could have created such a data set since the updates themselves were public information; it's just that they were overwritten on the state/county boards' websites etc. every time there was new data. (I've checked a few such sites and they only have the final tallies now.)
A different q here actually provided the raw data that NYT pulled from Edison; it looks like the raw files are still available by state, e.g.
Beware however that you don't get absolute vote counts except for the total; for each candidate you only get a (three digit) approximation of their vote share:
{"vote_shares":{"trumpd":0.593,"bidenj":0.384},"votes":958809,"eevp":17,"eevp_source":"edison","timestamp":"2020-11-04T02:11:23Z"},
{"vote_shares":{"trumpd":0.593,"bidenj":0.383},"votes":959682,"eevp":17,"eevp_source":"edison","timestamp":"2020-11-04T02:13:39Z"}
(Amusingly, this three-digit approximation is apparently a good part of a conspiracy theory.)
Additional searching finds a github page that pulled all this NYT in into one giant results.json
file for all the states!
In the opposite direction, the NYT state data is actually obtained by them by "concatenating" precinct data (the state json files reference these)... and these precinct-level json files are also still available, e.g.
They contain actual vote counts for candidates (not approximations), but these seem to be totals and don't seem to have any timestamps, e.g.
{"precinct_id":"Bethlehem 11th Ward 1st District","locality_name":"Lehigh","results":{"bidenj":410,"trumpd":218,"jorgensenj":10},"vote_type":"total","is_complete":null,"geo_id":"42077-BETHLEHEM 11","precinct_name":"","locality_fips":"42077","is_geographic":true,"votes":638,"is_reporting":true},
{"precinct_id":"Bethlehem 12th Ward 1st District","locality_name":"Lehigh","results":{"bidenj":439,"trumpd":169,"jorgensenj":12},"vote_type":"total","is_complete":null,"geo_id":"42077-BETHLEHEM 12-1","precinct_name":"","locality_fips":"42077","is_geographic":true,"votes":620,"is_reporting":true},
Further investigation indicates that there probably are separate files for each such update, named with the exact timestamp of the update, e.g.
But the catch is that the state file misses the final portion of the timestamp (the decimal points after the seconds) in the update list it contains, so I don't know how to get all the precinct-level update files.