I tried to get all the snapshots data via the tzstats API. Here you find the documentation for the snapshots: https://tzstats.com/docs/api#snapshot-table
As far as I know there are 16 snapshots taken per cycle. A cycle has 4096 blocks and we have roughly 1.6 million blocks. Now we have roughly 400 cycles therefore we should have 400* 16 = 6400 snapshots. The problem is that with my request i get way more snapshots (in the range of 100'000). Why do I get too many snapshots? And how do I get only the 6400 snapshots that I want? Who creates this snapshot (the system itself or a "supernode"?) Note: For every cycle i get between 100 and 500 snapshots (multiplied by about 400 cycles we get about 40'000/50'000 snapshots in total for all cycles ), where an index occurs multiple times. The index is between 0 and 15 and indicates which snapshot it is and therefore for a single cycle each index should occur only once. Below you find my code for the request. One has to request the snapshots with the addresses. I got all the addresses which are about 394 baker addresses.
api_url_bakers = 'https://api.tzstats.com/explorer/bakers'
params = {'limit': 10000}
r = requests.get(api_url_bakers, params=params)
baker_response = r.json()
addresses = [r['address'] for r in baker_response]
snapshots= []
for address in addresses:
r = requests.get(snapshot_table_api_url + '?address=' + address + "&cycle=57", params=params)
snapshot_response = r.json()
snapshots.extend(snapshot_response)
Thanks for your help. Best regards, Anja