Filters, sorting and pages
Find the items you need with filters and facets, sort them and page through the results.
/items returns the items of your datasets, a page at a time. Filters narrow them down; /facets tells you which
filter values exist.
Filters
| Parameter | Example | Matches items … |
|---|---|---|
dataset | 12 | of one of your datasets |
site | 4 | of one website (ids from /facets) |
category | computers-laptops | in this category or below it |
q | thinkpad x1 | with all these words, in any order, in the title, brand, codes or other values (parts of words count) |
minPrice, maxPrice | 500, 1500 | within this price range (in the item's currency) |
currency | EUR | in this currency |
gtin | 0196802123456 | with this product code (the same product in every shop) |
status | active | active (listed now, the default), removed or all |
changedSince | 2026-10-01T00:00:00Z | that changed after this time |
Filters combine: every one given must match.
curl -H "Authorization: Bearer $PRICANA_KEY" \
"https://pricana.io/api/v1/items?category=computers-laptops&maxPrice=1000&sort=price"Facets
/facets lists the websites, categories and currencies of your datasets with the number of items listed now, for
filter menus:
curl -H "Authorization: Bearer $PRICANA_KEY" https://pricana.io/api/v1/facetsCategories are a tree (parentId); a parent's count includes its subcategories.
Sorting
sort takes price, -price (highest first), -lastChanged (the default: most recently changed first),
-lastSeen, -firstSeen (newest listings first) or title. Items with the same value keep a stable order (by id), so
paging never skips or repeats one while the data stays the same.
Pages
page counts from 0, size is 1 to 500 (default 50). The answer says how many there are in all:
{ "content": [ … ], "page": 0, "size": 50, "totalElements": 1804, "totalPages": 37 }Pages are computed when you ask: if items change between two requests, a later page can shift. To read everything at once use an export; to follow changes use the change feed.
Removed items
By default you get the items listed now. status=removed gives you the ones a shop no longer lists (with removedAt),
status=all both. Removed items stay readable as long as your plan's history reaches back.