def METHOD_NAME(self, response):
    data = response.json()
    branches = (data["branchInfo"] or {}).get("marker", [])
    if branches:
        if data["branchCount"] == 20:
            refs = {x["@attributes"]["id"] for x in branches}
            if refs.issubset(self.refs):
                return
            max_distance = branches[-1]["@attributes"]["distance"]
            # Make more requests around this location. These are angles:
            for b in [45.0, 135.0, 225.0, 315.0]:
                new_x, new_y = calculate_offset_point(
                    x=float(response.meta["request_x"]),
                    y=float(response.meta["request_y"]),
                    d=float(max_distance),
                    b=b,
                )
                yield scrapy.Request(
                    self.base_url.format(lat=new_y, lon=new_x),
                    meta={"request_x": new_x, "request_y": new_y},
                )
        for branch in branches:
            address = branch["address"]
            address1, city, state_postal, country = address.rsplit(", ", 3)
            state, postal = state_postal.rsplit(" ", 1)
            ref = branch["@attributes"]["id"]
            self.refs.add(ref)
            properties = {
                "name": branch["name"],
                "ref": ref,
                "addr_full": address1.strip(", "),
                "city": city.strip(),
                "state": state,
                "postcode": postal,
                "country": country,
                "phone": branch["phoneNo"],
                "lat": float(branch["@attributes"]["lat"]),
                "lon": float(branch["@attributes"]["lng"]),
            }
            hours = self.parse_hours(branch["hours"])
            if hours:
                properties["opening_hours"] = hours
            yield Feature(**properties)