> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appeeky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reviews & reports with appstore

> Summarize and answer App Store customer reviews, and download Sales and Trends, finance, and analytics reports as JSON.

## Customer reviews

Start with a summary:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore --app 1234567890 reviews summary --max 500
```

It returns the rating distribution, average, reviews per territory, how many are unanswered, and the latest 1- and 2-star reviews.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore --app 1234567890 reviews list --rating 1,2 --unanswered --limit 50
appstore --app 1234567890 reviews list --territory USA,GBR --sort -createdDate
appstore reviews get REVIEW_ID
```

| `reviews list` flag | Description |
| - | - |
| `--rating <ratings>` | Star ratings, comma-separated |
| `--territory <codes>` | Territory codes, e.g. `USA,DEU` |
| `--unanswered` | Only reviews without a response |
| `--sort <sort>` | `createdDate`, `-createdDate`, `rating`, `-rating` |

### Respond

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore reviews respond REVIEW_ID "Thanks for flagging this. Version 2.4.1 fixes the sync issue." --confirm
appstore reviews delete-response RESPONSE_ID --confirm
```

A new response replaces the previous one. Responses start as `PENDING_PUBLISH` and appear on the App Store after Apple processes them.

| Tool | Use |
| - | - |
| `appstore_reviews_summary` | Rating distribution, unanswered count, latest low ratings |
| `appstore_list_customer_reviews` | Filter by `rating`, `territory`, `hasResponse` (`false` for unanswered), `sort` |
| `appstore_get_customer_review`, `appstore_get_review_response` | One review and its response |
| `appstore_respond_to_review` | Publish a response (write) |
| `appstore_delete_review_response` | Delete a response (write) |

> [!TIP]
>
> Let the agent draft replies, and approve each one before it calls `appstore_respond_to_review`.

## Sales and finance reports

Reports need your **vendor number** (Payments and Financial Reports) and a key with the Finance, Sales, or Admin role. Save it on the account with `--vendor-number`, set `ASC_VENDOR_NUMBER`, or pass `--vendor`.

```bash Sales and Trends theme={"theme":{"light":"github-light","dark":"github-dark"}}
# Daily summary for one day
appstore reports sales --date 2026-10-18

# Monthly subscription report
appstore reports sales --type SUBSCRIPTION --sub-type SUMMARY --frequency MONTHLY --date 2026-09 --report-version 1_3

# Raw TSV file
appstore reports sales --date 2026-10-18 -o ./sales-2026-10-18.tsv
```

```bash Finance theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore reports finance --date 2026-09 --region ZZ --type FINANCE_DETAIL
appstore reports finance --date 2026-09 --region US --type FINANCIAL -o ./finance-us-2026-09.tsv
```

| `reports sales` flag | Default | Values |
| - | - | - |
| `--type` | `SALES` | `SALES`, `SUBSCRIPTION`, `SUBSCRIPTION_EVENT`, `SUBSCRIBER`, `INSTALLS`, … |
| `--sub-type` | `SUMMARY` | `SUMMARY`, `DETAILED`, … |
| `--frequency` | `DAILY` | `DAILY`, `WEEKLY`, `MONTHLY`, `YEARLY` |
| `--date` | | `YYYY-MM-DD`, `YYYY-MM`, or `YYYY` |
| `--report-version` | | e.g. `1_0` |
| `--rows` | 1000 | Max rows to return |

Reports arrive gzipped; `appstore` unzips and parses them into rows keyed by column name. JSON output also has `columns`, `totalRows`, and `truncated`. Total lines at the end of finance reports come back as `extraLines`.

## Analytics reports

Analytics reports are requested once, then generated by Apple on a schedule:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore --app 1234567890 analytics request --confirm            # ONGOING
appstore --app 1234567890 analytics request --snapshot --confirm # ONE_TIME_SNAPSHOT backfill
appstore --app 1234567890 analytics requests
appstore analytics reports REQUEST_ID --category APP_STORE_ENGAGEMENT
appstore analytics instances REPORT_ID --granularity DAILY
appstore analytics segments INSTANCE_ID
appstore analytics download SEGMENT_ID --rows 200
```

Report categories: `APP_USAGE`, `APP_STORE_ENGAGEMENT`, `COMMERCE`, `FRAMEWORK_USAGE`, `PERFORMANCE`.

| Tool | Use |
| - | - |
| `appstore_download_sales_report` | Sales and Trends rows as JSON |
| `appstore_download_finance_report` | Finance rows as JSON |
| `appstore_create_analytics_report_request`, `appstore_list_analytics_report_requests` | Request and list analytics reports |
| `appstore_list_analytics_reports`, `appstore_list_analytics_report_instances`, `appstore_list_analytics_report_segments` | Walk down to a segment |
| `appstore_download_analytics_segment` | Segment rows as JSON |

All report reads work on the hosted server without the write header. Creating an analytics request is a write.

> [!NOTE]
>
> For ready-made dashboards built from the same data, see [Sales Reports](/docs/app-store-connect-sales-reports.md) and [Analytics](/docs/app-store-connect-analytics.md) in Appeeky.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.