FunnelHound / Guides / Export analytics
How to export App Store Connect analytics (CSV, TSV and API)
Short version: there are four doors out of App Store Connect. The export control on any App Analytics chart hands you a CSV of that one view. Sales and Trends gives you TSV reports. Payments and Financial Reports gives you the monthly numbers that match the bank. And the App Store Connect API pulls all of it on a schedule, including the App Analytics numbers that for years had no programmatic route at all. Choose by how often you'll need the file.
Route 1: the export control on an App Analytics chart
Open App Store Connect, go to Analytics, then Metrics. Pick a metric: Impressions, Product Page Views, Conversion Rate, Downloads, Sessions, Deletions, Proceeds, the list keeps going. Set the date range, apply a filter if you need one (source type, territory, device), and the export control at the top right of the chart downloads a CSV of exactly what the chart is showing.
That last part is the catch. One app, one metric, one view per file. Five metrics across three apps is fifteen clicks and fifteen files that know nothing about each other. Takeaway: ideal for answering a single question this afternoon, the wrong tool for anything you plan to repeat.
Route 2: Sales and Trends TSV reports
Sales and Trends → Reports. Daily, weekly, monthly and yearly reports in several flavours: Sales, Subscriptions, Subscription Events and more. They come down as tab-separated files, one row per SKU per territory, with units and proceeds. Your account needs Sales or Finance access to see this area at all.
Takeaway: this is the per-country, per-product view of units and money. It contains no impressions and no page views, so it cannot tell you why a number moved, only that it did.
Route 3: Payments and Financial Reports
Monthly financial reports per region, downloadable, and these are the figures that reconcile with the actual transfer: after Apple's commission, after currency conversion, per fiscal month. This page is also where your Vendor Number lives, which you will need the moment you touch the sales endpoint in route 4.
Takeaway: accounting, not growth. Export it for the bookkeeper, not for the roadmap.
Route 4: the API, two endpoints for two kinds of data
Both endpoints authenticate with the same credential set, an Issuer ID, a Key ID and a .p8 file. If you don't have one yet, the API key setup guide covers roles and the one-time download. For sales data the key needs Sales or Finance access.
Sales reports. GET /v1/salesReports with
filter[frequency]=DAILY, filter[reportDate]=YYYY-MM-DD,
filter[reportSubType]=SUMMARY, filter[reportType]=SALES and
filter[vendorNumber], sent with Accept: application/a-gzip.
You get a gzipped TSV back, byte for byte the same content as route 2.
The Analytics Reports API. Added in 2024, and it changed the answer to
this whole question: before it, App Analytics numbers were click-to-export or nothing. The
flow has five steps. POST /v1/analyticsReportRequests for the app, with
accessType set to ONE_TIME_SNAPSHOT for a historical backfill or
ONGOING for fresh data every day. Then
GET /v1/analyticsReportRequests/{id}/reports lists what's available, grouped by
category: APP_USAGE, APP_STORE_ENGAGEMENT, COMMERCE,
FRAMEWORK_USAGE, PERFORMANCE. Report names read like "App Store
Discovery and Engagement", "App Store Downloads", "App Store Installation and Deletion".
Each report has instances by granularity (DAILY, WEEKLY, MONTHLY), each
instance has segments, and each segment carries a download URL for a gzip
CSV.
Two warnings. The first ONGOING request takes 24 to 48 hours before Apple generates anything, so an empty reports list on day one is normal. And the chain is four lookups deep, so the fun part is not the auth, it's the loop; the Python walkthrough has a working version of that loop. FunnelHound is route four done for you: it makes the Analytics Reports API requests from your iPhone and turns the CSVs into a funnel, so nothing lands in your Downloads folder. Takeaway: route 4 is the only route that scales past one app and one month.
Route 5: Reporter, the legacy tool
Apple's Reporter is a Java command-line tool with two commands that matter,
Sales.getReport and Finance.getReport. It still works and some
finance teams still script it. It has never touched App Analytics and never will; it is
routes 2 and 3 in a terminal. Takeaway: if a tutorial tells you to use Reporter for
impressions or page views, close the tab.
Which numbers are complete, and which are a sample
This bites people after the export, when the spreadsheet is open and nothing adds up. Usage metrics in App Analytics (sessions, active devices, crashes, deletions) only count users who agreed to share data with developers. Impressions, product page views, downloads, and every sales report are complete. So a deletions column next to a downloads column is a sample next to a census, and the ratio between them is meaningless unless you correct for it. The mechanics of that correction are in the opt-in data gap guide. Takeaway: label the opt-in columns before you share the sheet, or someone will divide them.
Pick your route
| Route | What you get | Granularity | Effort |
|---|---|---|---|
| 1 · App Analytics export | One metric, one app, one view, CSV | Daily, as filtered | Clicks, repeated every time |
| 2 · Sales and Trends | Units and proceeds per SKU and territory, TSV | Daily to yearly | Clicks, Sales or Finance role |
| 3 · Financial reports | Bank-matching proceeds per region | Monthly | Clicks, once a month |
| 4 · API | Everything above, plus App Analytics on a schedule | Daily to monthly | Code once, or a tool that runs it |
| 5 · Reporter | Sales and finance only | Daily to yearly | Java, scripted |
The rule: twice is a routine
If you need a number once, the CSV control is the right answer and you'll have it in under a minute. If you find yourself exporting the same metric a second time, you have a routine, and routines belong in route 4, where the wait happens once and the pull happens every morning without you. Takeaway: count your exports; at two, automate.
Skip the export step entirely
FunnelHound requests the reports, unzips the CSVs and shows Impressions → Installs → Purchases on your iPhone, with the key staying in your Keychain and the data going only between you and Apple.
Get FunnelHoundData notes: UI paths, endpoint names, report categories and the 24 to 48 hour first-request window per Apple's App Store Connect API documentation and App Store Connect help pages as of 2026. Report names are examples; the full list depends on your app's capabilities. Apple moves the export control around occasionally, but it stays attached to the chart.