PSAStore API endpoint
Returns collections from the PSA Team Store (https://store.psacard.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.
/psastore/collectionsReturns collections from PSA Store.
This is a brand-pinned endpoint: the storefront URL (https://store.psacard.com) is fixed server-side, so unlike the generic /shopify/* family this wraps, there is no url request parameter. The same storefront is reachable through the generic family by passing url=https://store.psacard.com directly.
Query parameters:
page: optional integer. 1-based page number. Default: 1.limit: optional integer. Maximum collections to return. Default: 50; maximum: 250.Notable response behavior:
200 with an empty collections array.collections roots return upstream errors.transport_mode: "ssr_embedded", and title is a best-effort derivation from the handle -- not the storefront's real display name. products_count and other fields not available for these storefronts are omitted, never fabricated.handle is derived from the last path segment of the collection URL and is not guaranteed unique across nested sub-collections; use the item's own url to identify a specific one.transport_mode allowed values: ssr_embedded (only ever present, never any other value; omitted for the classic transport).
| Field | Filled in, of 27 checked | Values in the sample |
|---|---|---|
| id | 27 | |
| handle | 27 | |
| title | 27 | “10/10 Day 2025” and 26 other values |
| url | 27 | store.psacard.com |
| products_count | 26 | 1 to 115, median 6 |
| published_at | 27 | 2024-02-29 to 2026-10-08 |
| updated_at | 27 | 2026-09-09 to 2026-10-13 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| page | integer | No | 1 | 1-based page, defaults to 1 | 1 |
| limit | integer | No | 50 and supports up to 250 | Maximum collections, defaults to 50 and supports up to 250 | 50 |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/psastore/collections?page=1&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"store_url": "https://store.psacard.com",
"source_url": "https://store.psacard.com",
"page": 1,
"limit": 2,
"collections": [
{
"id": "278435758160",
"handle": "example-collection",
"title": "Example Collection",
"url": "https://store.psacard.com/collections/example-collection",
"products_count": 24
}
]
}
}Request schema
No body schema
Response schema
#/definitions/shopifybrands.collectionsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | shopify.CollectionsResponse | No | ||||
| data.collections | array | No | Collections on this page, one item per collection. | |||
| data.collections[].created_at | string | No | Time the record was created, as Shopify returns it. | |||
| data.collections[].description | string | No | Collection description as plain text. | |||
| data.collections[].handle | string | No | mens | URL slug of the collection, for example `mens`. | ||
| data.collections[].id | string | No | 278435758160 | Shopify collection id. | ||
| data.collections[].products_count | integer | No | 24 | Number of products in the collection. Omitted for headless storefronts. | ||
| data.collections[].published_at | string | No | Time the record was published, as Shopify returns it. | |||
| data.collections[].title | string | No | Men | Collection name as shown on the storefront. | ||
| data.collections[].updated_at | string | No | Time the record was last updated, as Shopify returns it. | |||
| data.collections[].url | string | No | https://www.allbirds.com/collections/mens | Storefront page URL of the collection. | ||
| data.limit | integer | No | 50 | Maximum number of collections returned per page. | ||
| data.page | integer | No | 1 | Page number returned. | ||
| data.source_url | string | No | https://www.allbirds.com | URL the data was read from. | ||
| data.store_url | string | No | https://www.allbirds.com | Base URL of the Shopify storefront that was queried. | ||
| data.transport_mode | string | No | ssr_embedded | ssr_embedded | Set only for headless storefronts that do not expose Shopify's standard catalogue; the value is `ssr_embedded`. Omitted otherwise. Titles are then derived from handles. | |
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/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/psastore/collections?page=1&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"