App Store Version Localizations
Read a version localization
Read the store listing for an exact version and locale. Address the locale directly; Parsequerade resolves Apple’s localization ID.
/apps/{appId}/versions/{versionId}/localizations/{locale}Implemented · First release · Operator configuration and deployment required
Request
Routes are relative to your connection. Use a facade API key; the service manages Apple authentication.
BASE='https://asc.example.com/v1/connections/conn_example'
curl --fail-with-body "$BASE/apps/1234567890/versions/version_123/localizations/en-US" \
-H "Authorization: Bearer $ASC_FACADE_KEY"const base = "https://asc.example.com/v1/connections/conn_example";
const response = await fetch(`${base}/apps/1234567890/versions/version_123/localizations/en-US`, {
headers: { Authorization: `Bearer ${process.env.ASC_FACADE_KEY}` }
});
const body = await response.json();
if (!response.ok) {
throw new Error(body.error?.message ?? `HTTP ${response.status}`);
}
console.log(body);import json
import os
from urllib.request import Request, urlopen
from urllib.error import HTTPError
base = "https://asc.example.com/v1/connections/conn_example"
request = Request(
f"{base}/apps/1234567890/versions/version_123/localizations/en-US",
headers={"Authorization": f"Bearer {os.environ['ASC_FACADE_KEY']}"},
)
try:
with urlopen(request) as response:
print(json.load(response))
except HTTPError as error:
detail = json.load(error)
raise RuntimeError(detail["error"]["message"]) from errorasc.example.com is a placeholder for your deployment. Examples use fictional IDs.
Path parameters
| Name | Type | Description |
|---|---|---|
| appId | string | Apple’s app ID. Returned by List apps. |
| versionId | string | An explicit version ID belonging to this app. Select it from the version list. |
| locale | string | The exact locale to read. No fallback to a different locale. |
Query parameters
| Name | Type | Description |
|---|---|---|
| fields | string | Comma-separated attribute names to return. This selects read fields and does not expand relationships. Multiple values are comma-separated.Valuesdescription, locale, keywords, marketingUrl, promotionalText, supportUrl, whatsNew |
Response
One flat object for the selected resource.
{
"id": "localization_456",
"appId": "1234567890",
"versionId": "version_123",
"locale": "en-US",
"description": "Keep your notes organized.",
"keywords": "notes,productivity,writing",
"marketingUrl": null,
"supportUrl": "https://example.com/support",
"promotionalText": "A clearer place for your ideas.",
"whatsNew": "Faster search and improved offline editing."
}Illustrative response. Optional read fields may be absent or null; unknown enum values are preserved.
Response fields
| Name | Type | Description |
|---|---|---|
| id | string | Apple’s resource ID. Keep this string unchanged when addressing a resource. |
| appId | string | The app that owns this resource. |
| versionId | string | The selected App Store version. |
| description | string | null | The localized store description. |
| locale | string | null | The exact Apple locale identifier, such as en-US. |
| keywords | string | null | The localized keywords, returned as Apple’s comma-separated string. |
| marketingUrl | string · uri | null | The localized marketing website. Null remains null. |
| promotionalText | string | null | The localized promotional text shown on the product page. |
| supportUrl | string · uri | null | The localized support website. |
| whatsNew | string | null | The localized release notes for this version. |
Behavior
- Choose versionId from the app’s version list. The adapter checks that it belongs to appId and resolves locale against that version’s localizations.
- A missing locale returns 404 localization_not_found. The service does not substitute the primary locale or create a localization during a GET.
- App name, subtitle, and privacy URLs belong to app-info localizations. They are separate from the version listing shown here.
Errors
| HTTP | Type | Description |
|---|---|---|
| 400 | invalid_query | Unsupported filter, sort, limit, or cursor. |
| 401 | unauthorized | Missing or invalid facade API key. |
| 403 | forbidden / upstream_forbidden | The caller or configured Apple key cannot read this resource. |
| 404 | localization_not_found | The requested resource, parent, or exact locale is absent or outside the caller’s scope. |
| 409 | ambiguous_selection | More than one localization matches the selected parent and locale. |
| 429 | rate_limited | A facade or Apple rate limit was reached. Respect Retry-After when returned. |
| 502–504 | upstream error | Apple authentication, response parsing, availability, or timeout failure; this is not an empty result. |
Apple mapping
Upstream route and translation
The adapter calls GET /v1/appStoreVersionLocalizations/{id}. Read Apple’s original endpoint ↗
Resolve the parent’s localization collection using the exact locale, validate ownership, and then supply the resolved ID to this Apple endpoint.
Flatten Apple’s attributes into each resource object. Expose supplied singleton linkage as IDs, with no automatic relationship traversal. Read access does not make these fields writable.
| Facade parameter | Type | Description |
|---|---|---|
| fields | query | fields[appStoreVersionLocalizations] |
Reviewed 2026-10-14 · OpenAPI 4.5.1