Skip to main content

A Python wrapper around Apple App Store Api

Project description

App Store Connect Api

This is a Python wrapper around the Apple App Store Api :

So far, it handles token generation / expiration, methods for listing resources and downloading reports.



The project is published on PyPI, install with:

pip install appstoreconnect


Please follow instructions on Apple documentation on how to generate an API key.

With your key ID, key file (you can either pass the path to the file or the content of it as a string) and issuer ID create a new API instance:

from appstoreconnect import Api, UserRole
api = Api(key_id, path_to_key_file, issuer_id)

Here are a few examples of API usage. For a complete list of available methods please see

# list all apps
apps = api.list_apps()
for app in apps:
    print(, app.sku)

# sort resources
apps = api.list_apps(sort='name')

# filter apps
apps = api.list_apps(filters={'sku': 'DINORUSH', 'name': 'Dino Rush'})
print("%d apps found" % len(apps))

# read app information
app = api.read_app_information('1308363336')
print(, app.sku, app.bundleId)

# get a related resource
for group in app.betaGroups():

# list bundle ids
for bundle_id in api.list_bundle_ids():

# list certificates
for certificate in api.list_certificates():

# modify a user
user = api.list_users(filters={'username': ''})[0]
api.modify_user_account(user, roles=[UserRole.FINANCE, UserRole.ACCESS_TO_REPORTS])
# download sales report
    filters={'vendorNumber': '123456789', 'frequency': 'WEEKLY', 'reportDate': '2019-06-09'}, save_to='report.csv')

# download finance report
api.download_finance_reports(filters={'vendorNumber': '123456789', 'reportDate': '2019-06'}, save_to='finance.csv')

Please note this is a work in progress, API is subject to change between versions.

Anonymous data collection

Starting with version 0.8.0 this library anonymously collects its usage to help better improve its development. What we collect is:

  • a SHA1 hash of the issuer_id
  • the OS and Python version used
  • which enpoints had been used

You can review the source code

If you feel uncomfortable with it you can completely opt-out by initliazing the API with:

api = Api(key_id, path_to_key_file, issuer_id, submit_stats=False)

The is also an open issue about this topic where we would love to here your feedback and best practices.


Project development happens on Github


  • <input type="checkbox" disabled="" /> Support App Store Connect API 1.2
  • <input type="checkbox" disabled="" /> Support the include parameter
  • <input type="checkbox" disabled="" /> handle POST, DELETE and PATCH requests
  • <input type="checkbox" disabled="" /> sales report
  • <input type="checkbox" disabled="" /> handle related resources
  • <input type="checkbox" disabled="" /> allow to sort resources
  • <input type="checkbox" disabled="" /> proper API documentation
  • <input type="checkbox" disabled="" /> add tests


This project is developed by Ponytech

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for appstoreconnect, version 0.9.1
Filename, size File type Python version Upload date Hashes
Filename, size appstoreconnect-0.9.1.tar.gz (13.7 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page