Skip to content

Instantly share code, notes, and snippets.

@EvercyanRBX
Created December 4, 2025 06:21
Show Gist options
  • Select an option

  • Save EvercyanRBX/299dfce5c772b4b2b2dccfc399b9e4cd to your computer and use it in GitHub Desktop.

Select an option

Save EvercyanRBX/299dfce5c772b4b2b2dccfc399b9e4cd to your computer and use it in GitHub Desktop.
Used to clean up many of my old DataStores from INFINITY RPG that saved each player's data under a unique DataStore years ago
# Deletes all number-only (including negative) data store names for clean-up, but can be adapted for general mass data store deletion.
# Even though it should work OK, you should still double check your important data stores (e.g. active user data) before data stores are deleted in 30 days to make sure it didn't queue them for deletion.
import requests, os, pprint, re, time
universe_id = 142847746
next_page_token = ""
cookie = os.environ["EVCYROBLOSECURITY"]
session = requests.session()
session.cookies.set(".ROBLOSECURITY", cookie)
# Criteria for whether or not it should delete the data store (based off of its name).
def should_delete_yn(data_store: str):
match = re.search("-?(.+)", data_store)
isRedundantKey = match.group(1).isdigit()
print(isRedundantKey, data_store)
return isRedundantKey
def list_data_stores(page_token: str):
response = session.get(
f"https://apis.roblox.com/user/cloud/v2/universes/{universe_id}/data-stores?maxPageSize=100&pageToken={page_token}&filter=&showDeleted=false"
)
print(f"list_data_stores: {response.status_code} ({response.reason})")
time.sleep(0.8)
return response
def delete_data_store(data_store: str):
response = session.delete(
f"https://apis.roblox.com/user/cloud/v2/universes/{universe_id}/data-stores/{data_store}"
)
print(f"delete_data_store: {response.status_code} ({response.reason})")
time.sleep(0.2)
if response.status_code == 403:
print('delete_data_store: Token invalid. Retrying.')
session.headers["x-csrf-token"] = response.headers["x-csrf-token"]
delete_data_store(data_store)
while True:
response = list_data_stores(next_page_token)
json = response.json()
if "dataStores" in json:
for value in json["dataStores"]:
data_store = value["id"]
if should_delete_yn(data_store):
delete_data_store(data_store)
if "nextPageToken" in json:
next_page_token = json["nextPageToken"]
continue
break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment