I'm periodically (about every 30 minutes) collecting location for dozens of tags. I save the last found index of the key + date, and from there calculate key ranges for all tags and fetching all reports in one call.
This worked well for several months in the spring, until late May when it suddenly stopped and I got few, if any, reports.
I'm now investigating the issue, and it seems reports are gotten for a singular key.
To test this, I have isolated two keys that successfully return location reports individually.
I have an adapted script of examples/real_airtag.py, where the central part is:
logging.debug(f"1: Keys to fetch: {list(kdict.keys())}")
reports = acc.fetch_last_reports(list(kdict.keys()))
logging.debug(f"2: Actual reports: {reports} ")
First tag, fetch_last_reports for a single key:
DEBUG:root:1: Keys to fetch: [KeyPair(name="None", public_key="0y/hZ8LvS8i5z+xc6fYbO6Bdt1DuxIbheq70sA==", type=KeyType.SECONDARY)]
DEBUG:root:2: Actual reports: {KeyPair(name="None", public_key="0y/hZ8LvS8i5z+xc6fYbO6Bdt1DuxIbheq70sA==",
type=KeyType.SECONDARY): [KeyReport(hashed_adv_key=XXX, timestamp=2025
-08-23 07:25:21+02:00, lat=XXX.3754753, lon=XXX.4790295),
...
20 reports received
Second tag, only fetching for one key:
DEBUG:root:1: Keys to fetch: [KeyPair(name="None", public_key="njEfiCm9Cdth9jJPwDiPTvyzFskGt8ZPXng0nw==", type=KeyType.SECONDARY)]
DEBUG:root:2: Actual reports: {KeyPair(name="None", public_key="njEfiCm9Cdth9jJPwDiPTvyzFskGt8ZPXng0nw==",
type=KeyType.SECONDARY): [KeyReport(hashed_adv_key=YYY, timestamp=2025-08-23 03:09:38+02:00, lat=YY.3758003, lon=YY.4768694),
...
(again 20 reports received)
However when querying with both keys, one of them (0y...) has an empty set of reports:
DEBUG:root:1: Keys to fetch: [KeyPair(name="None", public_key="0y/hZ8LvS8i5z+xc6fYbO6Bdt1DuxIbheq70sA==", type=KeyType.SECONDARY), KeyPair(name="None", public_key="njEfiCm9Cdth9jJPwDiPTvyzFskGt8ZPXng0nw==", type=KeyType.SECONDARY)]
DEBUG:root:2: Actual reports: {KeyPair(name="None", public_key="0y/hZ8LvS8i5z+xc6fYbO6Bdt1DuxIbheq70sA==",
type=KeyType.SECONDARY): [],
KeyPair(name="None", public_key="njEfiCm9Cdth9jJPwDiPTvyzFskGt8ZPXng0nw==", type=KeyType.SECONDARY): [KeyReport(hashed_adv_key=YYY, timestamp=2025-08-23 02:46:39+02:00, lat=YY.3758003, lon=YY.4768694),
I can work around this by iterating fetch_last_reports for each tag, but it increases the number of connections and, perhaps, increase the risk of account ban.
Another observation, before May I also received old location reports, for up to a week. Now it seems limited to the last 20 reports.
Have you noticed the above? Can you successfully get reports for multiple tags in the same report-fetch?
I'm periodically (about every 30 minutes) collecting location for dozens of tags. I save the last found index of the key + date, and from there calculate key ranges for all tags and fetching all reports in one call.
This worked well for several months in the spring, until late May when it suddenly stopped and I got few, if any, reports.
I'm now investigating the issue, and it seems reports are gotten for a singular key.
To test this, I have isolated two keys that successfully return location reports individually.
I have an adapted script of examples/real_airtag.py, where the central part is:
First tag, fetch_last_reports for a single key:
Second tag, only fetching for one key:
However when querying with both keys, one of them (0y...) has an empty set of reports:
I can work around this by iterating fetch_last_reports for each tag, but it increases the number of connections and, perhaps, increase the risk of account ban.
Another observation, before May I also received old location reports, for up to a week. Now it seems limited to the last 20 reports.
Have you noticed the above? Can you successfully get reports for multiple tags in the same report-fetch?