アプリカタログのエクスポートをダウンロードする

アプリストア用の Google Play Console を使用して、アプリカタログのエクスポートを有効にしてダウンロードできます。このためには、Google Play カタログ アクセス プログラムに登録していることが前提条件となります。このエクスポートでは、Google Play 上のアプリのうち、サードパーティのアプリストアのカタログへの掲載を許可した、対象となるアプリの毎日のスナップショットが提供されます。

アプリカタログのエクスポートを有効にする

アプリカタログのエクスポートを受け取るには、アプリストア用の Google Play Console から登録する必要があります。

  1. アプリストア用の Google Play Console を開きます。
  2. [詳細設定] ページに移動します。
  3. [カタログへのアクセス] セクションを探します。
  4. 画面上の手順に沿ってカタログ アクセスに登録します。

登録が完了すると、Google Play は Google Cloud Storage バケットでエクスポートの生成を開始します。

Google Cloud Storage でエクスポートにアクセスする

アプリカタログのエクスポートは、アプリストアのアカウントに関連付けられた非公開の Google Cloud Storage バケットで入手できます。新しいエクスポートは少なくとも 1 日 1 回提供されます。

エクスポートにアクセスするには、ブラウザで Google Cloud Storage を使用するか、プログラムで gsutil を使用します。他のツールを使って、Cloud Storage バケットにプログラムからアクセスすることもできます。

Google Cloud Storage URI を見つける

Google Cloud Storage URI をコピーするには、[詳細設定] の [カタログへのアクセス] ページにある [Google Cloud URI をコピー] ボタンをクリックします。このボタンは、アカウントがカタログ アクセスに登録されると利用できるようになります。

一般に、Cloud Storage URI は pubsite_prod_ で始まります。

コマンドライン ツールを使用してエクスポートをダウンロードする

  1. gsutil ツールをインストールします。
    • 必ず、Google Play Console にアクセスできるアカウントを使用して、お持ちのアカウントを認証してください。
    • セットアップ プロセス中に初めて gsutil を使用し、Google Cloud Storage で設定されたプロジェクトが他にない場合は、プロジェクト ID の入力を求められた際にアプリストアの名前を入力することができます。
  2. Google Cloud Storage バケット ID を見つけます。
  3. gsutil cp コマンドを使用してエクスポートをダウンロードします。
    • エクスポートへのアクセスに使用できるその他のコマンドについては、gsutil のドキュメントをご覧ください。

ファイル形式と構造

アプリカタログのエクスポート ファイルは、次の構造で保存されます。

gs://[your_bucket_id]/app_catalog_export_us/[your_app_store_package_name]/YYYY-MM-DD/[version_id]/data-[shard_number]-of-[total_shards]
  • YYYY-MM-DD: アプリカタログのエクスポート日
  • [version_id]: 毎日のエクスポートの一意の識別子。1 日に複数のエクスポートがある場合は、最も高い version_id に最新のデータが含まれます。
  • data-[shard_number]-of-[total_shards]: エクスポートは共有されています。1 日のカタログ全体を取得するには、特定の version_id のすべてのシャードをダウンロードする必要があります。

ファイルには、シリアル化されたプロトコル バッファ メッセージが含まれています。各シャードには CatalogAppViews メッセージが含まれ、そのメッセージには複数の CatalogAppView レコードが含まれています。データスキーマの定義については、次のセクションで説明します。

データスキーマ

CatalogAppView レコードには、アプリに関する情報が含まれています。

edition = "2024";

// From https://github.com/googleapis/googleapis
import "google/protobuf/timestamp.proto";
import "google/type/date.proto";
import "google/type/money.proto";

option features.enforce_naming_style = STYLE_LEGACY;

// A view of a Google Play app within the Catalog Export for app stores.
message CatalogAppView {
  // The package name of the app.
  string package_name = 1;

  // The developer details of the app.
  DeveloperDetails developer_details = 10;

  // Contact information for the app.
  AppContactInformation app_contact_information = 13;

  // The category of the app.
  enum AppCategory {
    // Unspecified category.
    APP_CATEGORY_UNSPECIFIED = 0;
    // Game app.
    GAME = 1;
    // General app.
    APP = 2;
  }

  // The category of the app.
  AppCategory app_category = 3;

  // The subcategory of the app e.g. "GAME_ACTION".
  string app_subcategory = 14;

  // Whether the app has in-app purchases through Google Play.
  bool has_in_app_purchases = 4;

  // The localized store listings of the app which are shown on Google Play.
  LocalizedStoreListings localized_store_listings = 5;

  // The app may specify multiple sets of device compatibility requirements, and
  // a device is considered compatible with the app if it satisfies at least one
  // of `DeviceCompatibilityRequirements`.
  repeated DeviceCompatibilityRequirements device_compatibility_requirements =
      7;

  // Required permissions declared by the app which apply for all Android SDK
  // versions.
  repeated Permission permissions = 15;

  // Required permissions declared by the app which apply for Android SDK
  // versions SDK 23 and above.
  repeated Permission permissions_sdk_23 = 16;

  // List of devices excluded from the app's distribution even if they are
  // otherwise compatible with the requirements from
  // device_compatibility_requirements. These are OR-ed, i.e. a device is
  // excluded if it matches any of the identifiers.
  repeated DeviceIdentifier excluded_devices_by_identifier = 9;

  // List of devices excluded from the app's distribution even if they are
  // otherwise compatible with the requirements from
  // device_compatibility_requirements. A device is excluded if it matches any
  // of given the selectors.
  repeated DeviceSelector excluded_devices_by_selector = 20;

  // Active versions of the app mapped from `android:versionName` manifest
  // attributes.
  repeated string active_version_names = 22;

  // The URL of the app's privacy policy.
  string privacy_policy_url = 11;

  // Whether the app has ads.
  bool has_in_app_ads = 12;

  // Whether the app is targeted to an adult-only (18+) audience.
  bool is_adult_only_audience = 17;

  // The IARC certificate ID for the app.
  string iarc_certificate_id = 18;

  // The date when the app was first released.
  google.type.Date first_release_date = 19;

  // The price of the app in the United States.
  // Empty if the app is free.
  google.type.Money price_in_the_united_states = 23;

  // The sale price of the app in the United States. Only populated for paid
  // apps with an active US sale.
  google.type.Money sale_price_in_the_united_states = 24;

  // The token used for delivery of the app with the Google Play Inline Install
  // API.
  string delivery_token = 8;

  // The timestamp when the app was last published.
  google.protobuf.Timestamp last_publish_time = 21;
}

// Defines a set of device compatibility requirements for the app. A device
// must satisfy all of the requirements in a set to be considered compatible
// with the app.
message DeviceCompatibilityRequirements {
  // Defines a range of SDK versions. A device is considered compatible if its
  // SDK version falls within the min_sdk_version and max_sdk_version range.
  message SdkVersion {
    // The minimum SDK version required for the app (inclusive).
    int64 min_sdk_version = 1;

    // The maximum SDK version required for the app (inclusive).
    int64 max_sdk_version = 2;

    // The target SDK version for the app.
    int64 target_sdk_version = 3;
  }
  // Defines a range of SDK versions that the app is compatible with.
  SdkVersion sdk_version = 1;

  // The system features that the app requires. A device must have all of the
  // system features to be considered compatible with the app.
  repeated string required_system_features = 2;

  // List of required libraries as declared in the `uses-library` manifest tag.
  repeated string required_software_libraries = 3;

  // Specifies if the app requires a screen.
  bool is_screen_required = 4;

  // Required version of OpenGL ES.
  int32 gl_es_version = 5;

  // Represents all configurations marked as required by use of the
  // uses-configuration manifest tag.
  message UsesConfiguration {
    // Whether or not the application requires a five-way navigation control.
    bool requires_five_way_navigation = 1;

    // Whether or not the application requires a hardware keyboard.
    bool requires_hardware_keyboard = 2;

    // The type of keyboard.
    enum KeyboardType {
      // Unspecified keyboard type.
      KEYBOARD_TYPE_UNSPECIFIED = 0;
      // Undefined keyboard type.
      KEYBOARD_TYPE_UNDEFINED = 1;
      // No keys keyboard.
      KEYBOARD_TYPE_NO_KEYS = 2;
      // Qwerty keyboard.
      KEYBOARD_TYPE_QWERTY = 3;
      // Twelve key keyboard.
      KEYBOARD_TYPE_TWELVE_KEY = 4;
    }
    // The type of keyboard required.
    KeyboardType required_keyboard_type = 3;

    // The type of navigation.
    enum NavigationType {
      // Unspecified navigation type.
      NAVIGATION_TYPE_UNSPECIFIED = 0;
      // Undefined navigation type.
      NAVIGATION_TYPE_UNDEFINED = 1;
      // No navigation.
      NAVIGATION_TYPE_NO_NAVIGATION = 2;
      // Dpad navigation.
      NAVIGATION_TYPE_DPAD = 3;
      // Trackball navigation.
      NAVIGATION_TYPE_TRACKBALL = 4;
      // Wheel navigation.
      NAVIGATION_TYPE_WHEEL = 5;
    }
    // The navigation device required.
    NavigationType required_navigation_type = 4;

    // The type of touchscreen.
    enum TouchScreenType {
      // Unspecified touchscreen type.
      TOUCHSCREEN_TYPE_UNSPECIFIED = 0;
      // Undefined touchscreen type.
      TOUCHSCREEN_TYPE_UNDEFINED = 1;
      // No touchscreen.
      TOUCHSCREEN_TYPE_NO_TOUCHSCREEN = 2;
      // Stylus touchscreen.
      TOUCHSCREEN_TYPE_STYLUS = 3;
      // Finger touchscreen.
      TOUCHSCREEN_TYPE_FINGER = 4;
    }
    // The type of touchscreen required.
    TouchScreenType required_touchscreen_type = 5;
  }
  // Lists all configurations marked as required by use of the
  // `uses-configuration` manifest tag. Each instance of this proto represents a
  // single `uses-configuration` entry. See
  // http://developer.android.com/guide/topics/manifest/uses-configuration-element.html
  repeated UsesConfiguration uses_configurations = 6;

  // The screen size.
  enum ScreenSize {
    // Unspecified screen size.
    SCREEN_SIZE_UNSPECIFIED = 0;
    // Small screen size.
    SCREEN_SIZE_SMALL = 1;
    // Normal screen size.
    SCREEN_SIZE_NORMAL = 2;
    // Large screen size.
    SCREEN_SIZE_LARGE = 3;
    // Extra large screen size.
    SCREEN_SIZE_EXTRA_LARGE = 4;
  }

  // Compatible screens as listed in the `compatible-screens` Manifest tag.
  message CompatibleScreen {
    // The screen size.
    ScreenSize screen_size = 1;

    // Screen density.
    enum Density {
      // Unspecified density.
      DENSITY_UNSPECIFIED = 0;
      // No density.
      DENSITY_NODPI = 1;
      // Low density.
      DENSITY_LDPI = 2;
      // Medium density.
      DENSITY_MDPI = 3;
      // TV density.
      DENSITY_TVDPI = 4;
      // High density.
      DENSITY_HDPI = 5;
      // 280 dpi.
      DENSITY_280 = 6;
      // Extra high density.
      DENSITY_XHDPI = 7;
      // 360 dpi.
      DENSITY_360 = 8;
      // 400 dpi.
      DENSITY_400 = 9;
      // 420 dpi.
      DENSITY_420 = 10;
      // Extra extra high density.
      DENSITY_XXHDPI = 11;
      // 560 dpi.
      DENSITY_560 = 12;
      // Extra extra extra high density.
      DENSITY_XXXHDPI = 13;
    }
    // Screen density.
    Density density = 2;
  }
  // Compatible screens as listed in the `compatible-screens` Manifest tag.
  repeated CompatibleScreen compatible_screens = 7;

  // Compatible screens as listed in the `supports-screens` Manifest tag.
  repeated ScreenSize supported_screens = 8;

  // Specifies the minimum smallest width required of the screen.
  int64 requires_smallest_width_dp = 9;

  // Supported gl textures as specified by the `supported-gl-texture` Manifest
  // tag.
  repeated string supported_gl_textures = 10;

  // List of required ABIs (Application Binary Interface), e.g. `armeabi` or
  // `x86`.
  repeated string native_platforms = 11;

  // Value of `android:use32BitAbi` flag retrieved from the Manifest.
  // https://developer.android.com/reference/android/R.attr#use32bitAbi.
  enum Use32BitAbi {
    // Unspecified 32-bit ABI usage.
    USE_32_BIT_ABI_UNSPECIFIED = 0;
    // Value of use32BitAbi is set to "true".
    USE_32_BIT_ABI_TRUE = 1;
    // Value of use32BitAbi is not set or set to something other than "true".
    USE_32_BIT_ABI_OTHER = 2;
  }
  // Value of `android:use32BitAbi` flag retrieved from the Manifest.
  Use32BitAbi use_32_bit_abi = 12;
}

// A permission declared by an app.
message Permission {
  // The `name` attribute indicating the permission name.
  string name = 1;

  // The `maxSdkVersion` attribute indicating up to which Android SDK version
  // the permission is requested.
  int32 max_sdk_version = 2;
}

// The developer details of a Google Play app.
message DeveloperDetails {
  // The developer name of the app.
  string developer_name = 1;

  // The contact email of the developer.
  string contact_email = 2;

  // The physical address of the developer.
  string address = 3;

  // The phone number of the developer.
  string phone_number = 4;

  // The website of the developer.
  string website = 5;
}

// Defines a device identifier for a device.
message DeviceIdentifier {
  // The brand of the device.
  string device_brand = 1;
  // The model of the device.
  string device_model = 2;
}

// Defines a device selector for a device.
// A device is considered matched if it matches any of given the selectors.
message DeviceSelector {
  // Defines a RAM selector for a device.
  message RamSelector {
    // This will match any device that has less than or equal
    // ram_mb_less_than_or_equal mb of RAM.
    int64 ram_mb_less_than_or_equal = 1;
  }
  // Defines a RAM selector for a device.
  RamSelector ram_selector = 1;

  // Defines a SOC selector for a device. This will match any device whose SoC
  // (System on Chip) matches all fields in the selector.
  message SocSelector {
    // The manufacturer of the SoC.
    string soc_make = 1;
    // The model of the SoC.
    string soc_model = 2;
  }
  // The SOC selectors. A device matches the device selector if it matches
  // any of the SOC selectors.
  repeated SocSelector soc_selectors = 2;

  // Selector for matching devices of a specific type.
  enum DeviceTypeSelector {
    // Unspecified device type selector.
    DEVICE_TYPE_SELECTOR_UNSPECIFIED = 0;
    // Android Go device type.
    ANDROID_GO = 1;
  }
  // The device type selector.
  DeviceTypeSelector device_type_selector = 3;
}

// Contact information for the app.
message AppContactInformation {
  // The contact email for this app.
  string contact_email = 1;

  // The contact phone for this app.
  string phone_number = 2;

  // The contact website url for this app.
  string website_url = 3;
}

// The localized store listings of an app.
message LocalizedStoreListings {
  // A localized store listings of the app.
  message LocalizedStoreListing {
    // The BCP-47 language code for this localization.
    string language_code = 1;

    // The name of the app in this localization.
    string app_name = 2;

    // A short description of the app in this localization.
    string short_description = 3;

    // A longer description of the app in this localization.
    string full_description = 4;

    // The icon of the app.
    ImageAsset icon = 5;

    // The feature graphic of the app.
    ImageAsset feature_graphic = 6;

    // The video of the app.
    VideoAsset video = 7;

    // The phone screenshots of the app.
    ScreenshotSet phone_screenshots = 8;

    // The small tablet screenshots of the app.
    ScreenshotSet tablet_small_screenshots = 9;

    // The regular tablet screenshots of the app.
    ScreenshotSet tablet_regular_screenshots = 10;
  }
  repeated LocalizedStoreListing localized_store_listings = 1;

  // The default language code of the app. If a localized store listing is not
  // available for a given language, assets from the default language are used
  // instead.
  string default_language_code = 2;


  // An image asset.
  message ImageAsset {
    // The URL of the image asset.
    string image_url = 1;
  }

  // A video asset.
  message VideoAsset {
    // The URL of the video asset.
    string video_url = 1;
  }

  // A set of screenshots.
  message ScreenshotSet {
    // The image assets of the screenshots.
    repeated ImageAsset screenshots = 1;
  }
}

// A collection of CatalogAppViews.
message CatalogAppViews {
  // The list of catalog app views.
  repeated CatalogAppView catalog_app_views = 1;
}

配信トークンを使用する

このトークンは、Google Play インライン インストールと統合する際に使用する必要があります。トークンは、Google Play アプリとサードパーティのアプリストアの組み合わせごとに一意であり、有効期間は 7 日間に制限されています。