Why an App Store Connect Analytics Reports Request Returns No Reports
Diagnose an empty App Store Connect Analytics Reports API response by checking the request, reports, instances, and segments in order.

A successful Analytics Reports API request does not mean a file is ready. The request creates an export job. The data becomes available through the reports, instances, and downloadable segments underneath it. Check which of those levels is empty before changing the job.
Check the request and its age
Confirm that the request belongs to the intended app and note the access type. Apple describes ONGOING as a recurring feed and ONE_TIME_SNAPSHOT as an export of available historical data. The Analytics Reports API overview says an ongoing request typically receives its first report after about 24–48 hours. Do not treat this estimate as a guarantee for a historical snapshot.
Read the request again using its ID. If an ongoing request has been marked stoppedDueToInactivity, follow Apple's instructions to create a new request to resume collection. Avoid repeatedly creating jobs while a valid request is still awaiting its first report.
Find the level at which data is missing
| Where the response is empty | What to check next |
|---|---|
| The request's reports list | Verify the request ID, the app, and the request age |
| A report's instances | Check the report name, granularity, and processing-date filters; try listing available instances before narrowing the query |
| An instance's segments | Verify that you are requesting segments for the specific instance ID |
| The downloaded data | Check the report's date fields and privacy rules before interpreting missing rows as zero activity |
Use Apple's Analytics Reports documentation to check the fields and aggregation rules for the report you are pulling. Log the request, report, instance, and segment IDs separately. When the export arrives, compare aggregate App Store downloads with your acquisition report as a sanity check. The two sources may use different download and install definitions, so a difference is a reason to check scope rather than proof that one source is wrong.


