---
title: "Retrieve an App Store device or Arcade editorial landing page"
method: GET
path: "/appstore/editorial"
tags: ["AppStore"]
---

# Retrieve an App Store device or Arcade editorial landing page

`GET /appstore/editorial`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/appstore/editorial`
- Auth: API key in header `x-api-key`

Returns the curated editorial shelves from one of Apple's per-device App Store landing pages (the same content shown by apps.apple.com's device switcher). `device` enum: `iphone`, `ipad`, `mac`, `vision`, `watch`, `tv`. `section` enum: `main` (the device's Today/Discover/Apps & Games landing page), `arcade` (the device's Apple Arcade landing page). Watch has no Arcade page — `device=watch` with `section=arcade` returns `400`.

## Query parameters

- `device` 'iphone' | 'ipad' | 'mac' | 'vision' | 'watch' | 'tv', required
- `section` 'main' | 'arcade'
- `country` string
- `lang` string

## Headers

- `x-api-key` string, required

## Response `200`

OK

- AppstoreEditorialResponseDoc
  - `code` integer
  - `data` AppstoreEditorialPage
    - `device` string: Apple device catalog of the page: `iphone`, `ipad`, `mac`, `vision`, `watch` or `tv`.
    - `page_id` string: Apple's ID for the editorial page.
    - `section` string: main | arcade | category
    - `seo_title` string: Page title used for search results and browser tabs.
    - `shelves` AppstoreEditorialShelf[]: Content shelves on the page, in display order.
      - `content_type` string: Layout style Apple uses to show the shelf, for example `smallLockup`.
      - `id` string: Apple's ID for the shelf.
      - `items` AppstoreEditorialItem[]: Items shown in the shelf.
        - `age_rating` string: Age rating shown on the item, for example `4+`.
        - `bundle_id` string: Bundle ID of the app, when the item is a single app.
        - `destination_id` string: DestinationID is the item's clickAction.destination.id. For a "Browse by Category" shelf item this is the target category's editorial page ID — pass it as EditorialCategoryOption.CategoryID for the SAME device. Live-verified this is NOT unique to category links, though: a regular single-app item (e.g. Lockup) carries its own ID here too (a self-referential page link, duplicating ID/AdamID) — so callers looking for a category ID should scope to the shelf titled "Browse by Category" rather than taking the first non-empty DestinationID from any shelf.
        - `developer_name` string: Name of the developer shown on the item.
        - `icon_url` string: template URL with unresolved size tokens
        - `id` integer: App Store numeric track ID, when this item is a single app (same ID space as App.ID)
        - `kind` string: raw Apple "$kind"
        - `rating` number: Average rating shown on the item.
        - `rating_count` integer: Number of ratings shown on the item.
        - `subtitle` string: Subtitle shown on the item.
        - `title` string: Title shown on the item.
        - `url` string: the item's own apps.apple.com page, when it links to one
      - `title` string: absent for hero/quick-links shelves
    - `title` string: Title of the editorial page.
  - `msg` string

## Other responses

- `400`: Missing or invalid parameters
- `404`: Page not found
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/028417aa35bb?raw)
