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.

APP STORE CONNECT 1 · App Analytics CSV 2 · Sales and Trends TSV 3 · Financial reports monthly 4 · API on a schedule Your spreadsheet or your tool
Four routes, one destination. Routes 1 to 3 are clicks; route 4 is code or a tool that runs the code for you.

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.

ANALYTICS REPORTS API Request POST, ONGOING Report by category Instance daily, weekly Segment one URL each Download gzip CSV First ONGOING request: 24 to 48 h before any report exists After that, Apple adds a new daily instance on its own.
The Analytics Reports API is a chain of four lookups ending in a file. The wait only happens once per app.

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

RouteWhat you getGranularityEffort
1 · App Analytics exportOne metric, one app, one view, CSVDaily, as filteredClicks, repeated every time
2 · Sales and TrendsUnits and proceeds per SKU and territory, TSVDaily to yearlyClicks, Sales or Finance role
3 · Financial reportsBank-matching proceeds per regionMonthlyClicks, once a month
4 · APIEverything above, plus App Analytics on a scheduleDaily to monthlyCode once, or a tool that runs it
5 · ReporterSales and finance onlyDaily to yearlyJava, 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 FunnelHound

Share this on X

Data 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.