except: mb[ss_id][item['type_id']] = [item] #Retry with a few seconds pause until you get a proper answer. This is literally the approach I take on zKillboard. In a 5 minute time span I can have anywhere from 200-1000 CREST requests with about a 0.1% error rate. for region in regions: print "fetching region: " + str(region) fetch_by_region_s(region) fetch_by_region_b(region) search_paths = False if search_paths: for path in paths: print "New ship for path: " + str(path) s = Ship() s.capacity = cargo_capacity s.isk = isk s.starting_isk = isk count = 0 pbs = {} for ss in path[1:]: if ss in mb.keys(): #maybe nothing in ss for typeid in mb[ss].keys(): for item in mb[ss][typeid]: #print item try: pbs[typeid].append(item) except: pbs[typeid] = [item] for ss in path: count += 1