← back to Uspto Trtyrap
fetch_list.py
30 lines
from curl_cffi import requests
import json, sys
cookie = open('.cookie').read().strip()
H = {"Accept":"application/json","Referer":"https://data.uspto.gov/bulkdata/datasets/trtyrap?fileDataFromDate=1884-04-07&fileDataToDate=2025-12-31","Cookie":cookie}
url = "https://data.uspto.gov/ui/datasets/products/trtyrap?includeFiles=true&fileDataFromDate=1884-04-07&fileDataToDate=2025-12-31"
r = requests.get(url, headers=H, impersonate="chrome", timeout=60)
print("status", r.status_code, "ctype", r.headers.get("content-type"), "len", len(r.content))
ct = r.headers.get("content-type","")
if "json" not in ct:
print("HEAD:", r.text[:100]); sys.exit(1)
d = r.json()
def files(o):
a=[]
if isinstance(o,dict):
for k,v in o.items():
if k.lower().endswith("filename") and isinstance(v,str) and v.endswith(".zip"): a.append(v)
else: a+=files(v)
elif isinstance(o,list):
for x in o: a+=files(x)
return a
fns=sorted(set(files(d)))
open("filenames.txt","w").write("\n".join(fns))
print("SAVED", len(fns), "filenames")
print("first:", fns[:2], "last:", fns[-2:])
# also capture total size if present
s=json.dumps(d)
import re
sizes=re.findall(r'"fileSize"\s*:\s*(\d+)', s)
if sizes: print("total size GB:", round(sum(int(x) for x in sizes)/1e9,2))