oxcom / magento2-top-products
This is a module that extends Magento2 API to get list of TOP products.
Package info
github.com/OxCom/magento2-top-products
Type:magento2-module
pkg:composer/oxcom/magento2-top-products
Requires
- php: ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0
- magento/framework: ^103.0
- magento/module-backend: ^102.0
- magento/module-catalog: ^104.0
- magento/module-config: ^101.2
- magento/module-directory: ^100.4
- magento/module-review: ^100.4
- magento/module-sales: ^103.0
- magento/module-store: ^101.1
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^1.0
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.5 || ^11.0 || ^12.0
- slevomat/coding-standard: ^8.15
- squizlabs/php_codesniffer: ^3.13
This package is auto-updated.
Last update: 2026-07-15 11:42:18 UTC
README
This is a module that extends Magento2 API to get list of TOP products by next filters:
- TOP selling products
- TOP Free products
- TOP Rated products
Top selling and free products are fetching from Magento2 reports.
Top rated products are fetching from Rates module and results are based on aggregated data.
Requirements
- PHP 8.2, 8.3, 8.4 or 8.5
- Magento 2.4.6+ (magento/framework ^103.0)
Install
$ composer require oxcom/magento2-top-products $ bin/magento module:enable OxCom_MagentoTopProducts $ bin/magento setup:upgrade $ bin/magento setup:di:compile
API requests
GET /V1/products/top/{type} - Get list of top products by type.
Where type can be:
- selling - TOP selling products
- free - TOP Free products
- rated - TOP Rated products
Search criteria params
pageSize - Page size
currentPage - Current page
ratingCode - filter by rating type. This options is related ony for rated type. Possible values can be found in rating table.
period - filter by period. This options is related only for selling or free type. Possible values are:
- yearly - annual report (default)
- monthly - monthly report
- daily - daily report
filter_groups - As product search criteria this filter will allow you to process products collection with more requirements.
Search criteria examples:
Filter top selling products by:
- period: daily
- price > 10
- visibility = 4
- pageSize = 10
- currentPage = 2
$ curl -X GET \ 'https://example.com/rest/all/V1/products/top/selling?searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B0%5D%5Bfield%5D=visibility&searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B0%5D%5Bvalue%5D=4&searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B0%5D%5Bcondition_type%5D=eq&searchCriteria%5BpageSize%5D=10&searchCriteria%5BcurrentPage%5D=2&searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B1%5D%5Bfield%5D=price&searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B1%5D%5Bvalue%5D=10&searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B1%5D%5Bcondition_type%5D=gt&searchCriteria%5Bperiod%5D=daily' \ -H 'authorization: Bearer {api-token}' \ -H 'cache-control: no-cache'
Filter top rated products by:
- ratingCode: Rating
- status = 2
- visibility = 4
- pageSize = 10
- currentPage = 2
$ curl -X GET \ 'https://example.com/rest/all/V1/products/top/rated?searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B0%5D%5Bfield%5D=visibility&searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B0%5D%5Bvalue%5D=4&searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B0%5D%5Bcondition_type%5D=eq&searchCriteria%5BpageSize%5D=10&searchCriteria%5BcurrentPage%5D=2&searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B1%5D%5Bfield%5D=status&searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B1%5D%5Bvalue%5D=1&searchCriteria%5Bfilter_groups%5D%5B0%5D%5Bfilters%5D%5B1%5D%5Bcondition_type%5D=eq&searchCriteria%5BratingCode%5D=Rating' \ -H 'authorization: Bearer {api-token}' \ -H 'cache-control: no-cache'
Dependencies
This module is using exists functionality of next modules:
- magento/module-catalog
- magento/module-review
- magento/module-sales
Bugs and Issues
Please, if You found a bug or something, that is not working properly, contact me and tell what's wrong. It's nice to have an example how to reproduce a bug, or any idea how to fix it in Your request. I'll take care about it ASAP.