- URL for human-readable application info page has format
https://www.rustore.ru/catalog/app/{packageName}. - Application info as a JSON object is available at URL
https://backapi.rustore.ru/applicationData/overallInfo/{packageName}. - APK reference URL is
https://backapi.rustore.ru/applicationData/download-link(version 1) orhttps://backapi.rustore.ru/applicationData/v2/download-link(version 2). It accepts onlyPOSTrequests (see below).
Typical workflow is:
- Retrieve application info. This is necessary to determine application ID (
appId). - Retrieve download URLs. As far as I can see, only the latest version can be retrieved.
- Use download URL to download the APK.
- Starting from July 2026, all requests fail unless non-standard request header
ruStoreVerCodeis specified. Expected value is a RuStore application version (number). Currently minimal number that works is247, however, it's possible that in future API will require higher numbers. Real version numbers are at the moment in the 11000-12000 range. - Some requests fail unless
Content-Typeheader is properly specified.
Application info JSON object has following fields:
code: contains stringOK(on success).message: contains stringOK(on success).timestamp: ISO-8601 timestamp (seems to be time of object retrieval).body: application info subobject, containing:appId: numeric application ID (required for APK retrieval).packageName: package name, as in the URL.appName: human-readable application name.category,categories: main application category and an array of all application categories.companyName: human-readable company name.shortDescription: human-readable short application description (one line).fullDescription: human-readable application description (may contain"\n").fileSize: expected APK size?versionName: human-readable version string.versionCode: numeric version number (sequential?).minSdkVersion,targetSdkVersion,maxSdkVersion: numeric Android SDK version limitations.whatsNew: human-readable "What's New?" section (may contain"\n").iconUrl: full URL to application icon (PNG?).fileUrls: an array of screenshots (and other references?). Each element is an object containing:fileUrl: full URL to screenshot (PNG?).ordinal: numeric ordinal number.type: resource type ("SCREENSHOT"for screenshots).orientation: image orientation ("PORTRAIT"for portrait).
appType: ??? (I've seen"MAIN").website: full URL to application home page.signature: ??? (some sort of hash).privacyDataCategories: ??? (an array).adaptedToTablets: boolean flag (?).companyLegalForm: ??? (I've seen"ENTITY").downloads: numeric ??? (seems to be an approximate number of downloads).price: numeric (?).purchased: ??? (I've seennull).appVerUpdatedAt: ISO-8601 timestamp.inAppUpdatePriority: numeric (?).banner: ??? (I've seennull).aggregatorInfo: ??? (I've seennull).video: ??? (I've seennull).publicCompanyId: ??? (string).createdAt: ISO-8601 timestamp (no timezone).updatedAt: ISO-8601 timestamp (no timezone).activeVerCode: numeric (seems to be the same asversionCode).migrationGuideLink: ??? (I've seennull).labelIds: ??? (array).ageRestriction: an object containing:category: string (I've seen"0+").name: human-readable string corresponding tocategory.description: human-readable string containing category description.imageUrl: full URL to category icon (SVG).
markings: ??? (array).seoTags: ??? (array).
- The request must use method
POSTto URLhttps://backapi.rustore.ru/applicationData/download-link. - The request must include header
Content-Type: application/json; charset=utf-8. - The request body is a JSON object containing:
appId: numeric application ID (see application info above).firstInstall: booleantrue.
- The response is a JSON object containing:
code: contains stringOK(on success).message: contains stringOK(on success).timestamp: ISO-8601 timestamp (seems to be time of object retrieval).body: APK reference subobject, containing:appId: numeric application ID.apkUrl: full URL to the APK.versionCode: numeric version number (see application info above).
The APK can be downloaded from the URL provided in body.apkUrl.
It seems that the main reason for version 2 is to allow split APKs.
- The request must use method
POSTto URLhttps://backapi.rustore.ru/applicationData/v2/download-link. - The request must include header
Content-Type: application/json; charset=utf-8. - The request body is a JSON object containing:
appId: numeric application ID (see application info above).firstInstall: booleantrue.screenDensity: integer (is it DPI?).sdkVersion: integer (is itandroid.os.Build.VERSION.SDK_INTorandroid.os.Build.VERSION.SDK_INT_FULL?).withoutSplits: boolean flag forbidding split APK. Iftrue, you get only plain APK, otherwise you can get a split APK if there's one.supportedAbis: array of supported ABIs (seeandroid.os.Build.SUPPORTED_ABIS).
- The response is a JSON object containing:
code: contains stringOK(on success).message: contains error string, or null on success.timestamp: ISO-8601 timestamp (seems to be time of object retrieval).body: APK reference subobject, containing:appId: numeric application ID.versionCode: numeric version number (see application info above).versionId: numeric version ID ???.downloadUrls: array containing URL subobjects:url: APK download URL.size: APK size in bytes.hash: hash of some kind, hexadecimal 8 bytes ???.
preApproveInfo: subobject:label: string ???locale: locale string ???
signature: string hash of some kind, hexadecimal 32 bytes ???.
The APK (or APKs in case of split APK) can be downloaded from URLs provided in body.downloadUrl[*].url. For split APK there may be more than one URL.
As far as I understand, this method allows only the latest version. Perhaps there is some other route, but this is not an official public API, so the only way to find is to experiment.