getProductsByPageUrl
Search all products in the selected category (by its URL), with pagination.
Description
Fetches the products of the catalog page with the given url, filtered by the conditions in body; userQuery sets pagination and sorting. Resolves to an IProductsResponse: the products are in items, the total count in total.
.getProductsByPageUrl(
,
,
,
);
Parameters schema
Schema
url(required): string
Page URL.
example: "catalog"
body: IFilterParams[]
Request body. Default: [].
example:
[
{
"attributeMarker": "price",
"conditionMarker": "mth",
"statusMarker": "waiting",
"conditionValue": 1,
"pageUrls": [
"23-laminat-floorwood-maxima"
],
"isNested": false,
"title": ""
},
{
"attributeMarker": "price",
"conditionMarker": "lth",
"conditionValue": 3,
"pageUrls": [
"23-laminat-floorwood-maxima"
],
"isNested": false,
"title": ""
}
]
body.attributeMarker: string
Marker of the indexed attribute to filter by. Optional: a filter entry can select by statusMarker, pageUrls or title alone, for example { statusMarker: "in_stock" }.
example: "color"
body.conditionMarker: string | null
Marker of the filter condition, such as eq. Default: null.
example: "eq"
body.conditionValue: number | string | null
Value to compare against. Required together with attributeMarker. Default: null.
example: "new"
body.pageUrl: string | null
Not supported by the API and ignored. Use pageUrls.
example: "23-laminat-floorwood-maxima"
body.pageUrls: string[] | null
URLs of the category pages.
example: ["23-laminat-floorwood-maxima"]
body.statusMarker: string | null
Marker of the product status. Not set by default.
example: "in_stock"
body.title: string | null
Product name.
example: "Laminatboden Maxima"
body.isNested: boolean
Whether to include products from the nested categories of the pages in pageUrls. Default: false.
example: true
langCode: string
Language code. Default: the langCode passed to defineOneEntry ("en_US" if none).
example: "en_US"
userQuery: IProductsQueryBase
Optional query parameters.
example:
{
"limit": 30,
"offset": 0,
"sortOrder": "DESC",
"sortKey": "id",
"signPrice": "orders"
}
userQuery.offset(required): number
Number of records to skip. Default: 0. offset + limit must not exceed 200; a larger window is rejected with 400.
userQuery.limit(required): number
Maximum number of records to return. Default: 30.
userQuery.sortOrder(required): string
Sort order: "DESC" or "ASC". Default: "DESC".
userQuery.sortKey(required): string
Field to sort by: "id", "position", "title", "date", "price" or "status". Default: "position".
userQuery.signPrice: string
Marker of the order storage to fix prices for. When set, each product comes with a signedPrice that holds the price for a limited time.
see: Fixing the price
Record limit. If the user group's permission for this method allows only restricted reading, the API returns at most the number of records set in the project settings (10 by default), whatever limit you pass. With full read access, limit works as usual. See Module permissions (opens in a new tab).
signPricelocks the returned price for a limited time. Set it to your order storage marker. See Fixing the price (signPrice).
Examples
Minimal example
const response = await Products.getProductsByPageUrl('catalog');
Example with body parameter
const body = [ { , , , , ], , }, { , , , ], , }];
const response = await Products.getProductsByPageUrl('catalog', body);
Use filters to find specific products:
attributeMarker: The text identifier of the indexed attribute by which values are filtered. conditionMarker: The type of condition to apply to the attribute value.
| Marker | Meaning | Example |
|---|---|---|
| eq | Equal | color = "red" |
| neq | Not equal | category ≠ "archived" |
| in | Contains (case-insensitive substring match) | brand contains "app" |
| nin | Does not contain (case-insensitive substring match) | brand does not contain "fake" |
| mth | Greater than | price > 100 |
| lth | Less than | price < 50 |
| exs | Exists (has value) | Has description |
| nexs | Does not exist | No image |
| pat | Matches a regular-expression pattern where each * stands for exactly one character and _ for a space. With search indexing on, the pattern must match the whole value | currency matches "s" (finds "usd") |
| same | Has the same value as at least one other product. conditionValue is ignored | products that share a price |
| same_part | Has the same value as another product once the last segments are cut off. conditionValue is delimiter|count (default -|2); a value with count or fewer segments is compared whole | SKUs "ABC-1-S" and "ABC-1-M" share "ABC" |
conditionValue: The value to compare against.
Example response
{
"items": [
{
"id": 2954,
"localizeInfos": {
"title": "Box"
},
"isVisible": true,
"isSync": false,
"sku": null,
"price": 51,
"additional": {
"prices": {
"min": 51,
"max": 180
}
},
"categories": [
"catalog"
],
"statusIdentifier": "sale",
"statusLocalizeInfos": {
"title": "Sale"
},
"templateIdentifier": null,
"shortDescTemplateIdentifier": "product_preview",
"attributeValues": {
"product-name": {
"type": "string",
"value": "product-name",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"price": {
"type": "integer",
"value": 51,
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"currency_products": {
"type": "string",
"value": "usd",
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": false
},
"img": {
"type": "image",
"value": {
"size": 742690,
"filename": "files/project/product/2954/image/48853cbf-4462-42c6-8b99-d14f721c21a2.jpeg",
"contentType": "image/jpeg",
"previewLink": {
"default": [
"data:image/webp;base64,UklGRmwAAABXRUJQVlA4IGAAAADQAQCdASoQABAABUB8JbACdACZZ3P8AAD+wGsUXBs/r069WpdrcuaTNfVxqWIetuaIdIvOMkSp9iJRxE+KhA2YHbrVehhMRj/j5+DUdjWn1v5YtZ7vw0IgPi9R5vkAAAA=",
"https://your-project.oneentry.cloud/cloud-static/files/project/product/2954/image/48853cbf-4462-42c6-8b99-d14f721c21a2.preview.default.jpeg"
]
},
"downloadLink": "https://your-project.oneentry.cloud/cloud-static/files/project/product/2954/image/48853cbf-4462-42c6-8b99-d14f721c21a2.jpeg",
"defaultPreview": "default"
},
"isIcon": false,
"position": 3,
"additionalFields": {},
"isProductPreview": true
}
},
"attributeSetIdentifier": "products",
"isPositionLocked": false,
"position": 1,
"rating": {},
"paymentStages": null,
"moduleFormConfigs": [
{
"id": 12,
"formIdentifier": "review",
"moduleIdentifier": "catalog",
"isGlobal": false,
"isClosed": false,
"isModerate": false,
"viewOnlyMyData": false,
"commentOnlyMyData": false,
"entityIdentifiers": [
{
"id": "catalog",
"isNested": true
}
],
"formDataCount": 823,
"ratingCalculation": "average",
"allowHalfRatings": null,
"maxRatingScale": null,
"isAnonymous": null,
"allowRerating": null,
"isRating": null,
"entityFormDataCount": {
"2954": 823
},
"nestedEntityIdentifiers": [
"catalog"
],
"exceptionIds": []
}
],
"discountConfig": {}
},
{
"id": 2955,
"localizeInfos": {
"title": "Product"
},
"isVisible": true,
"isSync": false,
"sku": null,
"price": 150,
"additional": {
"prices": {
"min": 51,
"max": 180
}
},
"categories": [
"catalog"
],
"statusIdentifier": "sale",
"statusLocalizeInfos": {
"title": "Sale"
},
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"attributeValues": {
"p": {
"type": "float",
"value": 150,
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"p1": {
"type": "float",
"value": 50,
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"p2": {
"type": "float",
"value": 50,
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": false
},
"p3": {
"type": "float",
"value": 50,
"isIcon": false,
"position": 3,
"additionalFields": {},
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 4,
"additionalFields": {},
"isProductPreview": false
}
},
"attributeSetIdentifier": "test",
"isPositionLocked": false,
"position": 2,
"rating": {},
"paymentStages": [
{
"title": "p1",
"value": 50,
"marker": "p1"
},
{
"title": "p2",
"value": 50,
"marker": "p2"
},
{
"title": "p3",
"value": 50,
"marker": "p3"
}
],
"moduleFormConfigs": [
{
"id": 12,
"formIdentifier": "review",
"moduleIdentifier": "catalog",
"isGlobal": false,
"isClosed": false,
"isModerate": false,
"viewOnlyMyData": false,
"commentOnlyMyData": false,
"entityIdentifiers": [
{
"id": "catalog",
"isNested": true
}
],
"formDataCount": 823,
"ratingCalculation": "average",
"allowHalfRatings": null,
"maxRatingScale": null,
"isAnonymous": null,
"allowRerating": null,
"isRating": null,
"entityFormDataCount": {
"2954": 823
},
"nestedEntityIdentifiers": [
"catalog"
],
"exceptionIds": []
}
],
"discountConfig": {}
},
{
"id": 2957,
"localizeInfos": {
"title": "Cosmo"
},
"isVisible": true,
"isSync": false,
"sku": null,
"price": 150,
"additional": {
"prices": {
"min": 51,
"max": 180
}
},
"categories": [
"catalog"
],
"statusIdentifier": "sale",
"statusLocalizeInfos": {
"title": "Sale"
},
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"attributeValues": {
"product-name": {
"type": "string",
"value": "Cosmo",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"price": {
"type": "integer",
"value": 150,
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"currency_products": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": false
},
"img": {
"type": "image",
"value": "",
"isIcon": false,
"position": 3,
"additionalFields": {},
"isProductPreview": true
}
},
"attributeSetIdentifier": "products",
"isPositionLocked": false,
"position": 3,
"rating": {},
"paymentStages": null,
"moduleFormConfigs": [
{
"id": 12,
"formIdentifier": "review",
"moduleIdentifier": "catalog",
"isGlobal": false,
"isClosed": false,
"isModerate": false,
"viewOnlyMyData": false,
"commentOnlyMyData": false,
"entityIdentifiers": [
{
"id": "catalog",
"isNested": true
}
],
"formDataCount": 823,
"ratingCalculation": "average",
"allowHalfRatings": null,
"maxRatingScale": null,
"isAnonymous": null,
"allowRerating": null,
"isRating": null,
"entityFormDataCount": {
"2954": 823
},
"nestedEntityIdentifiers": [
"catalog"
],
"exceptionIds": []
}
],
"discountConfig": {}
}
],
"total": 6
}
Response schema
Schema: IProductsResponse
total: number
Total number of products found.
example: 100
items: IProductsEntity[]
Products in this response.
example:
[
{
"id": 12345,
"title": "Product 1"
},
{
"id": 67890,
"title": "Product 2"
}
]
items.id: number
ID of the product.
example: 12345
items.localizeInfos: ILocalizeInfo
Localized product data, such as the title.
example:
{}
items.statusIdentifier: string | null
Marker of the product status, or null.
example: "in_stock"
items.statusLocalizeInfos: ILocalizeInfo
Localized status name for the product.
example:
{ "title": "Sale" }
items.attributeSetIdentifier: string | null
Marker of the attribute set, or null if none is assigned.
example: "set_12345"
items.position: number
Position used for sorting.
example: 1
items.price: number | null
Product price from the search index.
example: 150.00
items.additional: object
Extra values computed by the search index, such as the price range in prices.min and prices.max.
example:
{
"prices": {
"min": 5,
"max": 150
}
}
items.sku: string | null
Product SKU from the search index, or null.
example: "SKU_12345"
items.isSync: boolean
Whether the product's attribute index is up to date for the requested language. When false, an empty or partial attributeValues means the values are not published yet, not that there are none.
example: true
items.attributeValues: IAttributeValues
Attribute values keyed by attribute marker.
example:
{
"color": {
"type": "string",
"value": "red",
"isIcon": false,
"position": 0,
"additionalFields": {}
}
}
items.categories: string[]
URLs of the catalog pages the product belongs to.
example:
[
"catalog"
]
items.isVisible: boolean
Whether the product is visible.
example: true
items.moduleFormConfigs: Array<IFormConfig>
Form configurations of the module.
items.rating: IRating
Rating data: average value, likes and dislikes, and the calculation method.
items.isPositionLocked: boolean
Whether the sorting position is locked.
example: false
items.relatedIds: number[]
IDs of related products.
example:
[
12345,
67890
]
items.paymentStages: unknown
Payment stages of the product: an array of { title, value, marker } objects, or null when none are set.
example: null
items.distance: number
Relevance distance in vector (semantic) search. Present only in vector search results.
example: 0.42
items.discountConfig: Record<string, unknown>
Discount configuration.
example:
{}
items.templateIdentifier: string | null
Marker of the linked template.
example: "template_12345"
items.shortDescTemplateIdentifier: string | null
Marker of the template used for the short description.
example: "short_desc_template_12345"
items.signedPrice: string
Signed token (JWT) that fixes the product price for an order. Returned when signPrice is set.
see: Fixed product price
example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
items.productPages: IProductPageRef[]
Links between the product and the catalog pages it belongs to.
example:
[
{
"id": 16,
"pageId": 4,
"productId": 15,
"positionId": 244,
"categoryPath": "products"
}
]
items.blocks: string[]
Markers of the blocks attached to the product.
example:
[
"block_12345",
"block_67890"
]
totalFound: number
Number of products matched before limits are applied; returned by block product endpoints (similarProducts, cart/wishlist recommendations, frequently ordered). Optional.
example: 2
signedPriceis a signed token that carries the locked price. Pass it back when you create an order. See Fixed product price (signedPrice).
Usage examples
Step-by-step walkthrough in the documentation:
- Products by page: retrieve all products that belong to a specific catalog page.
Try it live
Run this method in the JS SDK sandbox. On your first visit, connect your Project URL and App Token, then open:
- Products by page: retrieve all products that belong to a specific catalog page.