PlayStation API endpoint
Reads any PlayStation Store merchandising page by alias (e.g. collections, subscriptions, or a promotional alias) and returns its shelves (sections) plus the curated collection links found on the page. Each collection link carries a category_id (UUID) you can pass to /playstation/category to fetch that collection's full, paginated title grid. Known aliases: collections, subscriptions, deals, latest. cc selects the store region (and price currency); l accepts a language code or locale such as en or en-US, with the locale's primary language used for text.
/playstation/pageEach collection link carries a category_id (UUID) you can pass to /api/v1/playstation/category to fetch that collection's full, paginated title grid. This is how to browse themed/curated selections (e.g. "Free to play", "PlayStation Indies", "Demos"): per-request facet filters on the browse grid are not available, but the store models those themes as distinct categories that this endpoint helps you discover.
Query parameters:
alias (required) — merchandising page alias. Known aliases: collections, subscriptions, deals, latest (any promotional page alias also works).cc (optional, default us) — store country code (ISO); selects the store region and price currency.l (optional, default en) — language code such as en or ja; locale-shaped values such as en-US are normalized to en.Returns sections[] (each shelf: id, name, count, items[]), count (flattened total), items[] (flattened, de-duplicated titles across shelves), collections[] (each: name, category_id, link_type), and source_url.
| Field | Filled in, of 80 checked | Values in the sample |
|---|---|---|
| kind | 80 | concept (60), product (20) |
| id | 80 | |
| name | 80 | “TOEM 2” and 79 other values |
| price | 60 | |
| media | 80 | median 15 entries |
| np_title_id | 20 | |
| classification | 20 | DEMO (18), GAME_BUNDLE (1), FULL_GAME (1) |
| platforms | 20 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| alias | string | Yes | Merchandising page alias | collections | |
| cc | string | No | Store country code (ISO, selects currency) | ||
| l | string | No | Language code | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/playstation/page?alias=collections" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"sections": [
{
"id": "...",
"name": "New this week",
"count": 12,
"items": []
}
],
"count": 24,
"items": [],
"collections": [
{
"name": "Free to play",
"category_id": "4dfd67ab-4ed7-40b0-a937-a549aece13d0",
"link_type": "EMS_CATEGORY"
},
{
"name": "PlayStation Indies",
"category_id": "71516e4f-f209-458e-a2fb-fecd213f4198",
"link_type": "EMS_CATEGORY"
}
],
"source_url": "https://store.playstation.com/en-us/pages/collections"
}
}Request schema
No body schema
Response schema
#/definitions/playstation.merchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | playstation.MerchResponse | No | ||||
| data.collections | array | No | ||||
| data.collections[].category_id | string | No | ||||
| data.collections[].link_type | string | No | ||||
| data.collections[].name | string | No | ||||
| data.count | integer | No | ||||
| data.items | array | No | ||||
| data.items[].classification | string | No | Store classification of the item, for example `FULL_GAME`. | |||
| data.items[].id | string | No | PlayStation Store id of the item. Use it with the concept endpoint when `kind` is `concept`, or with the product endpoint when it is `product`. | |||
| data.items[].kind | string | No | Type of store entry: `concept` or `product`. | |||
| data.items[].media | array | No | Images and videos for the item. | |||
| data.items[].media[].role | string | No | Role of the asset on the store page, as the store labels it. | |||
| data.items[].media[].type | string | No | Kind of asset, such as an image or a video. | |||
| data.items[].media[].url | string | No | URL of the image or video. | |||
| data.items[].name | string | No | Item name as shown on the PlayStation Store. | |||
| data.items[].np_title_id | string | No | PlayStation title id of the item, for example `CUSA07408_00`. | |||
| data.items[].platforms | array | No | PlayStation platforms the item is available on. | |||
| data.items[].price | object | No | Price of the item. | |||
| data.items[].price.base_price | string | No | Regular price as a formatted string, for example `$19.99`. | |||
| data.items[].price.discount_text | string | No | Discount label shown on the store, for example `-50%`. | |||
| data.items[].price.discounted_price | string | No | Current price after discount as a formatted string. | |||
| data.items[].price.is_exclusive | boolean | No | Whether the store marks the price as exclusive to a membership. | |||
| data.items[].price.is_free | boolean | No | Whether the item is free. | |||
| data.items[].price.is_tied_to_subscription | boolean | No | Whether the store marks the price as tied to a subscription. | |||
| data.items[].price.service_branding | array | No | Names of the PlayStation services the price is tied to. | |||
| data.items[].price.upsell_service_branding | array | No | Names of the PlayStation services the upsell offer refers to. | |||
| data.items[].price.upsell_text | string | No | Promotional text the store shows next to the price. | |||
| data.sections | array | No | ||||
| data.sections[].count | integer | No | ||||
| data.sections[].id | string | No | ||||
| data.sections[].items | array | No | ||||
| data.sections[].items[].classification | string | No | Store classification of the item, for example `FULL_GAME`. | |||
| data.sections[].items[].id | string | No | PlayStation Store id of the item. Use it with the concept endpoint when `kind` is `concept`, or with the product endpoint when it is `product`. | |||
| data.sections[].items[].kind | string | No | Type of store entry: `concept` or `product`. | |||
| data.sections[].items[].media | array | No | Images and videos for the item. | |||
| data.sections[].items[].media[].role | string | No | Role of the asset on the store page, as the store labels it. | |||
| data.sections[].items[].media[].type | string | No | Kind of asset, such as an image or a video. | |||
| data.sections[].items[].media[].url | string | No | URL of the image or video. | |||
| data.sections[].items[].name | string | No | Item name as shown on the PlayStation Store. | |||
| data.sections[].items[].np_title_id | string | No | PlayStation title id of the item, for example `CUSA07408_00`. | |||
| data.sections[].items[].platforms | array | No | PlayStation platforms the item is available on. | |||
| data.sections[].items[].price | object | No | Price of the item. | |||
| data.sections[].items[].price.base_price | string | No | Regular price as a formatted string, for example `$19.99`. | |||
| data.sections[].items[].price.discount_text | string | No | Discount label shown on the store, for example `-50%`. | |||
| data.sections[].items[].price.discounted_price | string | No | Current price after discount as a formatted string. | |||
| data.sections[].items[].price.is_exclusive | boolean | No | Whether the store marks the price as exclusive to a membership. | |||
| data.sections[].items[].price.is_free | boolean | No | Whether the item is free. | |||
| data.sections[].items[].price.is_tied_to_subscription | boolean | No | Whether the store marks the price as tied to a subscription. | |||
| data.sections[].items[].price.service_branding | array | No | Names of the PlayStation services the price is tied to. | |||
| data.sections[].items[].price.upsell_service_branding | array | No | Names of the PlayStation services the upsell offer refers to. | |||
| data.sections[].items[].price.upsell_text | string | No | Promotional text the store shows next to the price. | |||
| data.sections[].name | string | No | ||||
| data.source_url | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/playstation/page?alias=collections" \
-H "x-api-key: $CRAWLORA_API_KEY"