Apple App Store · Google Play · ein Befehl

Der Montagmorgen-Report für alle Ihre Apps.

Downloads, Absturzraten, Bewertungen und Erlös aus App Store Connect und Google Play – verdichtet zu einer Ampel je App. Kein Dashboard-Login, kein manueller Export.

Kommt die App an? Wie stabil ist sie?

Alle Werte, die Apple und Google hergeben – verdichtet auf das, was die Geschäftsführung wissen will.

Management-Übersicht mit Ampel

Pro App ein Status – OK, Warnung, Kritisch – mit den Gründen dahinter. Für die Chefetage auf einen Blick.

  • Kommt die App an? Downloads & Updates
  • Wie stabil? Absturz- und ANR-Rate
  • Wie zufrieden? Bewertung & Negativ-Anteil
  • Als HTML, im Terminal und als Excel-CSV

Downloads & Installationen

Wie oft wurde die App geladen, aktualisiert und wieder gelöscht – für beide Stores.

  • Apple: Erst- und Wiederholungs-Downloads, Updates
  • Apple: Löschungen, Sessions, Downloads seit Start
  • Google: Installationen, Deinstallationen, Upgrades
  • Apple: Erlöse je Währung

Abstürze & Stabilität

Absturz- und ANR-Raten gegen Googles Schwellenwerte – ab denen Google die App im Store schlechter sichtbar macht.

  • Google: Crash Rate (Schwelle 1,09 %)
  • Google: ANR Rate (Schwelle 0,47 %)
  • Apple: Abstürze und Abstürze pro Session
  • Abstürze und ANRs pro Tag

Crash-Logs & Fehlergruppen

Crashanalysen zum Herunterladen: Stacktraces und Crash-Logs landen als Datei im Report und sind direkt verlinkt.

  • Google: Fehlergruppen mit Ursache und Code-Stelle
  • Google: Crash-Reports mit vollständigem Stacktrace
  • Apple: TestFlight-Absturzmeldungen mit Crash-Log
  • Apple: Diagnose-Signaturen des Live-Builds

Performance & Diagnose

Hänger, langsame Starts und Energieverbrauch – bevor Nutzer sich beschweren.

  • Apple: Hänger-Rate, Startzeit, Speicher, Akku
  • Apple: Hänger- und Start-Diagnosen mit Logs
  • Google: Slow Start & Slow Rendering
  • Google: Wakeups & hängende Wakelocks

Bewertungen & Platzierung

Offizielle Store-Bewertung je Land, alle Rezensionen und die Platzierung in den App-Store-Charts.

  • Apple: Store-Bewertung je Land (alle Sterne)
  • Apple: Chartplatz je Land und Kategorie (Top 100)
  • Google: vollständige Bewertungshistorie statt nur 7 Tage
  • Negative Bewertungen fließen in die Ampel ein

Mehrere Kunden & Apps

Kunden mit eigenem Apple-/Google-Zugang, darunter beliebig viele Apps. Zugang einmal pro Kunde, alle Kennzahlen standardmäßig aktiv.

  • reports/<Kunde>/<App>/<Zeitstempel>/
  • Kunden und Apps per enabled: false pausieren
  • --customer / --app / --platform filtern
  • Plattformübergreifende Gesamtübersicht

Absturzsicher & komfortabel

Eine Kennzahl ohne Berechtigung stoppt nicht den Lauf – sie wird markiert, alles andere läuft weiter.

  • Automatische Wiederholung bei Netzfehlern & Rate-Limits
  • --check prüft Konfiguration und Zugänge vorab
  • Strg+C speichert das bisher Gesammelte
  • --open öffnet den Report direkt im Browser

Was du konfigurieren musst.

Ein Zugang pro Plattform und Kunde – einmal eingetragen, gilt er für alle Apps dieses Kunden.

Apple

Apple: App Store Connect API

Apple verlangt einen Team API Key. Einmal in App Store Connect erzeugt, funktioniert er für jede App im selben Entwickler-Account — kein Key pro App nötig.

  • App Store Connect → Users and Access → Integrations → App Store Connect API
  • Team Key mit der nötigen Rolle erzeugen und den privaten Schlüssel als .p8-Datei herunterladen — nur einmal möglich
  • key_id und issuer_id neben dem Schlüssel notieren
  • Die .p8-Datei unter credentials/apple/ ablegen und als private_key_file eintragen
  • Für Sales & Trends zusätzlich vendor_number eintragen, zu finden unter Business → Payments and Financial Reports
config.yaml
apple:
  key_id: "ABC123DEFG"
  issuer_id: "00000000-...-000000000000"
  private_key_file: "./credentials/apple/AuthKey_ABC123DEFG.p8"
  vendor_number: "12345678"

Das Programm signiert für jede Anfrage kurzlebige JWTs (ES256) mit dem .p8-Schlüssel — der Schlüssel selbst wird nirgendwohin übertragen.

Google

Google: Play Developer API

Google verlangt einen Service Account. In der Regel gibt es einen pro Kunde; er wird einmal beim Kunden eingetragen und gilt für alle Android-Apps dieses Kunden.

  • Projekt in Google Cloud anlegen und Play Developer Reporting API sowie Android Publisher API aktivieren
  • Service Account anlegen und dessen Schlüssel als JSON-Datei herunterladen
  • Die JSON-Datei unter credentials/google/ ablegen und als service_account_file eintragen
  • Die E-Mail-Adresse des Service Accounts in der Play Console unter Nutzer und Berechtigungen mit den nötigen App-Rechten einladen
  • Für Installationszahlen: den Cloud-Storage-Bucket der Play-Console-Berichte (pubsite_prod_rev_…) als reports_bucket eintragen
config.yaml
google:
  service_account_file: "./credentials/google/service-account.json"
  reports_bucket: "pubsite_prod_rev_01234567890123456789"

Die Cloud-Konfiguration allein reicht nicht — ohne die Einladung in der Play Console schlagen Anfragen mit 401/403 fehl.

Alle Kennzahlen sind standardmäßig aktiv. config.yaml enthält nur Kunden, Zugangsdaten und Apps – ein metrics:-Block ist nur nötig, um etwas abzuschalten oder Limits zu ändern:

config.yaml
customers:
  - name: "HKK"
    apple:
      key_id: "ABC123DEFG"
      issuer_id: "00000000-...-000000000000"
      private_key_file: "./credentials/apple/AuthKey_HKK.p8"
    apps:
      - name: "ScanBox"
        platform: "apple"
        app_id: "1540650069"
        # Optional – nur für Abweichungen vom Standard:
        apple:
          metrics:
            analytics_history: false
            reviews: { limit: 500, territories: ["DEU", "AUT", "CHE"] }
            testflight_crashes: { download_logs: 50 }

Für Agenturen und Multi-Mandanten-Betrieb: customers: gruppiert Apps nach Kunde/Anbieter. Jeder Kunde hinterlegt seinen eigenen Apple-Key bzw. Google-Service-Account einmal — er gilt account-weit für alle Apps dieses Kunden — plus eine eigene apps:-Liste.

config.yaml
customers:
  - name: "HKK"
    apple:
      key_id: "ABC123DEFG"
      issuer_id: "00000000-...-000000000000"
      private_key_file: "./credentials/apple/AuthKey_HKK.p8"
    apps:
      - name: "ScanBox"
        platform: "apple"
        app_id: "1540650069"
        bundle_id: "net.drapatz.scanbox"
        apple:
          metrics: { reviews: { enabled: true }, versions: { enabled: true } }

  - name: "BKK-Voralm"
    apple:
      key_id: "BVOR1234AB"
      issuer_id: "11111111-...-555555555555"
      private_key_file: "./credentials/apple/AuthKey_BKK.p8"
    google:
      service_account_file: "./credentials/google/bkk-service-account.json"
    apps:
      - name: "Bkk"
        platform: "apple"
        app_id: "0000000001"
        bundle_id: "com.bkk.app"
        apple:
          metrics: { reviews: { enabled: true }, versions: { enabled: true } }
      - name: "ServiceApp"
        platform: "google"
        package_name: "com.bkk.serviceapp"
        google:
          metrics: { reviews: { enabled: true }, crash_rate: true }
Ergebnis

Jede App landet unter reports/<Kunde>/<App>/<Zeitstempel>/ statt reports/<App>/<Zeitstempel>/. Im Terminal — beim Laden jeder Kennzahl und in der Zusammenfassung — steht immer "Kunde: App", damit klar ist, was gerade analysiert wird.

reports/
reports/
├── HKK/
│   └── ScanBox/
│       └── 20260923_124104/
│           ├── summary.html
│           ├── apple_reviews.json
│           └── apple_reviews.csv
└── BKK-Voralm/
    ├── Bkk/
    │   └── 20260923_124104/  ...
    └── ServiceApp/
        └── 20260923_124104/  ...

In Minuten einsatzbereit.

Klonen, konfigurieren, starten — drei Befehle plus die eigenen Zugangsdaten.

Repository klonen

git clone https://github.com/drapatzc/apireport.git
cd apireport/storereports-macos-arm64

Konfigurationsvorlage kopieren

cp config.example.yaml config.yaml

Apps & Zugangsdaten eintragen

# .p8 nach ./credentials/apple/ legen
# service-account.json nach ./credentials/google/ legen
# config.yaml öffnen: Kunden, Zugänge und Apps eintragen

Starten

./storereports --check
./storereports

Oder per Doppelklick auf „Store Reports starten.command“ – danach öffnet sich die Übersicht im Browser.

Aktualisieren

cd apireport
git pull

GitHub-Repository

Store Reports ist kostenlos. Das Repository enthält das fertige Programm, die Vorlage config.example.yaml und die Anleitung.

Auf GitHub ansehen

Voraussetzungen

macOS 26 (Apple Silicon) Fertiges Programm – keine Installation, kein Python nötig
Git (optional) Zum Klonen und Aktualisieren – alternativ als ZIP von GitHub laden

Was am Ende jedes Durchlaufs steht.

Sofort eine Terminal-Zusammenfassung, strukturierte Dateien unter reports/ für alles Weitere.

Terminal-Zusammenfassung

Am Ende jedes Durchlaufs erscheinen Kennzahlen je App — Bewertungsdurchschnitt, Verkaufssummen, Crash-Raten und mehr. Während des Laufs zeigt ein Spinner den Fortschritt je API-Aufruf.

Plattformübergreifende Übersicht

reports/overview.html listet alle aktiven Apps beider Plattformen an einem Ort.

Report je Plattform

reports/apple_report.html und reports/google_report.html bündeln alle Apps dieser Plattform.

Report je App

reports/<App>/<Zeitstempel>/summary.html — Identität, KPI-Kacheln und Rohdaten-Tabellen für genau diesen Lauf.

Rohdaten

Ein JSON-/CSV-Dateipaar je erfasster Kennzahl, dazu reports/store_reports.sqlite mit der Historie aller Läufe — jede .html-Datei lässt sich direkt im Browser öffnen, kein Server nötig.

reports/
reports/
├── overview.html              ← Ampel je App
├── management_summary.csv     ← für Excel
├── apple_report.html
├── google_report.html
├── store_reports.sqlite
└── HKK/
    └── ScanBox/
        └── 20260923_100000/
            ├── summary.html
            ├── apple_reviews.csv
            ├── crashlogs/     ← Crash-Logs
            └── diagnostics/

Nicht nur für iOS-Entwickler.

Store Reports macht die Store-Performance für das ganze Team sichtbar — ohne dass jeder einen eigenen Dashboard-Login braucht.

iOS- & Android-Entwickler

Bewertungen, Crash-/ANR-Raten und aktuelle Versionen mit einem Terminal-Befehl — kein Wechsel zwischen zwei getrennten Konsolen.

ASO & Marketing

Bewertungen, Rezensionstext und Länderdaten als CSV/JSON — direkt einsetzbar in Tabellenkalkulation, Trendanalyse oder Reporting-Tools.

Produkt & Management

Eine übersichtliche HTML-Gesamtansicht über alle Apps und Plattformen — kein App-Store-Connect- oder Play-Console-Zugang nötig, um den Status zu prüfen.

Agenturen & Multi-App-Teams

Eine config.yaml für Dutzende Apps über Kunden oder Marken hinweg — Apple und Google frei gemischt, eine gemeinsame Historie in SQLite.

Kostenlos. Transparent. Ohne versteckte Bedingungen.

Keine Abos, keine Feature-Gates, keine versteckten Klauseln.

Erlaubt

  • Private Nutzung
  • Kommerzielle Nutzung
  • Teamweiter Einsatz
  • Unbegrenzt viele Apps und Installationen
  • Keine Registrierung, kein Lizenzschlüssel

Nicht erlaubt

  • Software verkaufen oder weiterverkaufen
  • Als eigenständiges Produkt verbreiten
  • In kostenpflichtige Produkte einbinden (ohne Erlaubnis)
  • Reverse Engineering oder Dekompilieren der Software

Haftungsausschluss

Diese Software wird ohne jegliche Garantie bereitgestellt. Die Nutzung erfolgt auf eigenes Risiko. Der Autor haftet nicht für Schäden, die aus der Nutzung entstehen — auch nicht für Daten, die von der Apple- oder Google-API geliefert werden.

Der Entwickler

Ich baue Software für das Apple-Ökosystem — native iOS- und macOS-Apps, Entwickler-Werkzeuge und Games. Mein Fokus liegt auf Produkten, die technisch sauber, im Alltag praktisch und eigenständig nutzbar sind.

Christian Drapatz
christiandrapatz.de →

Portfolio

Persönliche Seite, Projekte, Kontakt und Hintergrund zu meiner Entwicklungsarbeit.

KI-Apps

KI-gestützte macOS-Tools für iOS- und macOS-Entwickler.

Games

Eigenständige iOS-Games — im Apple-Ökosystem entwickelt und veröffentlicht.

Apps

Praktische Apps für iOS und macOS — klare Konzepte, eigenständige Produkte.

Unterstütze die Entwicklung.

Wenn dieses Tool dir bei jedem Reporting-Zyklus Zeit spart und du die weitere Entwicklung unterstützen möchtest, freue ich mich über einen Kaffee. Jeder Beitrag hilft, das Projekt lebendig zu halten.

Buy Me a Coffee

Freiwillig — kein Einfluss auf Lizenz oder Funktionen.