Analytics and Data (analytics)
Data on seller analytics.
Methods for getting statistics for:
Listings Statistics per Period{{ /api/analytics/v3/sales-funnel/products }}
The method generates a report on items by comparing key metrics for the current period with a similar past one.
The report data is updated once an hour.
Most of the data appears within an hour of the event:
- orders
- click-throughs
- adds-to-Cart
A small part of this data may appear within a few days.
Purchases, cancellations, and returns are displayed in report for the day an item was ordered. For example, if an order was placed on January 1, and the customer returned the item on January 10, data about this return will appear in the report for January 1.
You can track the final sales results using details for the realization reports.
The brandNames, subjectIds, tagIds, and nmIds parameters can be empty [], in which case the response will return all of the seller listings.
If you specify multiple parameters, the response will include listings that match all of these parameters simultaneously. If no listings match the request parameters, an empty response [] will be returned.
You can get a report for a maximum of the last 365 days.
In the previous period's data:
- The data in
pastPeriodcovers the same duration as inselectedPeriod - If the
pastPeriodstart date is more than a year before the current date, it will be adjusted to:pastPeriod.start = current date - 365 days
Pagination can be used.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 2 requests | 30 min | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
required | object Requested period |
object Period for comparison | |
| nmIds | Array of integers <uint64> [ 0 .. 1000 ] items [ items <uint64 > ] WB item numbers to include in the report. Leave empty to get a report for all items |
| brandNames | Array of strings List of brands for filtering |
| subjectIds | Array of integers <uint64> [ items <uint64 > ] List of subcategory IDs for filtering |
| tagIds | Array of integers <uint64> [ items <uint64 > ] List of label IDs for filtering |
| skipDeletedNm | boolean Skip deleted items |
object Sorting parameters | |
| limit | integer <uint32> <= 1000 Default: 50 Number of listings in the response |
| offset | integer <uint32> Default: 0 How many results to skip. For example, with value |
Responses
Request samples
- Payload
{- "selectedPeriod": {
- "start": "2023-06-01",
- "end": "2024-03-01"
}, - "pastPeriod": {
- "start": "2023-06-01",
- "end": "2024-03-01"
}, - "nmIds": [
- 1234567
], - "brandNames": [
- "nike",
- "adidas"
], - "subjectIds": [
- 64,
- 334
], - "tagIds": [
- 32,
- 53
], - "skipDeletedNm": false,
- "orderBy": {
- "field": "openCard",
- "mode": "asc"
}, - "limit": 231,
- "offset": 10
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": {
- "products": [
- {
- "product": {
- "nmId": 268913787,
- "title": "Кроссовки для бега",
- "vendorCode": "12345456",
- "brandName": "Demix",
- "subjectId": 105,
- "subjectName": "Кроссовки",
- "tags": [
- {
- "id": 1,
- "name": "Обувь"
}
], - "productRating": 4.5,
- "feedbackRating": 4,
- "stocks": {
- "wb": 0,
- "mp": 0,
- "balanceSum": 0
}
}, - "statistic": {
- "selected": {
- "period": {
- "start": "2023-06-01",
- "end": "2024-03-01"
}, - "openCount": 45,
- "cartCount": 34,
- "orderCount": 19,
- "orderSum": 1262,
- "buyoutCount": 19,
- "buyoutSum": 1262,
- "cancelCount": 0,
- "cancelSum": 0,
- "avgPrice": 1262,
- "avgOrdersCountPerDay": 0.04,
- "shareOrderPercent": 3,
- "addToWishlist": 455,
- "timeToReady": {
- "days": 1,
- "hours": 8,
- "mins": 34
}, - "localizationPercent": 100,
- "wbClub": {
- "orderCount": 19,
- "orderSum": 1262,
- "buyoutSum": 1262,
- "buyoutCount": 19,
- "cancelSum": 0,
- "cancelCount": 0,
- "avgPrice": 1262,
- "buyoutPercent": 43,
- "avgOrderCountPerDay": 0.04
}, - "conversions": {
- "addToCartPercent": 19,
- "cartToOrderPercent": 65,
- "buyoutPercent": 0
}
}, - "past": {
- "period": {
- "start": "2023-06-01",
- "end": "2024-03-01"
}, - "openCount": 45,
- "cartCount": 34,
- "orderCount": 19,
- "orderSum": 1262,
- "buyoutCount": 19,
- "buyoutSum": 1262,
- "cancelCount": 0,
- "cancelSum": 0,
- "avgPrice": 1262,
- "avgOrdersCountPerDay": 0.04,
- "shareOrderPercent": 3,
- "addToWishlist": 455,
- "timeToReady": {
- "days": 1,
- "hours": 8,
- "mins": 34
}, - "localizationPercent": 100,
- "wbClub": {
- "orderCount": 19,
- "orderSum": 1262,
- "buyoutSum": 1262,
- "buyoutCount": 19,
- "cancelSum": 0,
- "cancelCount": 0,
- "avgPrice": 1262,
- "buyoutPercent": 43,
- "avgOrderCountPerDay": 0.04
}, - "conversions": {
- "addToCartPercent": 19,
- "cartToOrderPercent": 65,
- "buyoutPercent": 0
}
}, - "comparison": {
- "openCountDynamic": 10,
- "cartCountDynamic": 30,
- "orderCountDynamic": -100,
- "orderSumDynamic": -100,
- "buyoutCountDynamic": -100,
- "buyoutSumDynamic": -100,
- "cancelCountDynamic": 0,
- "cancelSumDynamic": 0,
- "avgOrdersCountPerDayDynamic": 0,
- "avgPriceDynamic": -100,
- "shareOrderPercentDynamic": -80,
- "addToWishlistDynamic": 60,
- "timeToReadyDynamic": {
- "days": 1,
- "hours": 8,
- "mins": 34
}, - "localizationPercentDynamic": 0,
- "wbClubDynamic": {
- "orderCount": -100,
- "orderSum": -100,
- "buyoutSum": -100,
- "buyoutCount": -100,
- "cancelSum": 0,
- "cancelCount": 0,
- "avgPrice": -100,
- "buyoutPercent": 43,
- "avgOrderCountPerDay": 0.04
}, - "conversions": {
- "addToCartPercent": 19,
- "cartToOrderPercent": 65,
- "buyoutPercent": 0
}
}
}
}
], - "currency": "RUB"
}
}Listings Statistics per Days{{ /api/analytics/v3/sales-funnel/products/history }}
The method returns statistics for listings by day or by week.
You can get data for a maximum of the last week.
The report data is updated once an hour.
Most of the data appears within an hour of the event:
- orders
- click-throughs
- adds-to-Cart
A small part of this data may appear within a few days.
Purchases, cancellations, and returns are displayed in report for the day an item was ordered. For example, if an order was placed on January 1, and the customer returned the item on January 10, data about this return will appear in the report for January 1.
You can track the final sales results using details for the realization reports.
DETAIL_HISTORY_REPORT type. Reports of this type are available only with Jam subscription
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 2 requests | 30 min | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
required | object Requested period |
| nmIds required | Array of integers <uint64> [ 1 .. 20 ] items [ items <uint64 > ] WB item numbers to include in the report |
| skipDeletedNm | boolean Skip deleted items |
| aggregationLevel | string Default: "day" Enum: "day" "week" Aggregation Type. If not specified, the default is aggregation
by days. |
Responses
Request samples
- Payload
{- "selectedPeriod": {
- "start": "2023-06-01",
- "end": "2024-03-01"
}, - "nmIds": [
- 0
], - "skipDeletedNm": true,
- "aggregationLevel": "day"
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
[- {
- "product": {
- "nmId": 268913787,
- "title": "Кроссовки для бега",
- "vendorCode": "12345456",
- "brandName": "Demix",
- "subjectId": 105,
- "subjectName": "Кроссовки"
}, - "history": [
- {
- "date": "2024-10-23",
- "openCount": 45,
- "cartCount": 34,
- "orderCount": 19,
- "orderSum": 1262,
- "buyoutCount": 19,
- "buyoutSum": 1262,
- "buyoutPercent": 35,
- "addToCartConversion": 43,
- "cartToOrderConversion": 0,
- "addToWishlistCount": 0
}
], - "currency": "RUB"
}
]Grouped Listings Statistics per Days{{ /api/analytics/v3/sales-funnel/grouped/history }}
The method returns statistics for listings by day or by week.
Listings are grouped by subcategories, brands and labels.
You can get data for a maximum of the last week.
The report data is updated once an hour.
Most of the data appears within an hour of the event:
- orders
- click-throughs
- adds-to-Cart
A small part of this data may appear within a few days.
Purchases, cancellations, and returns are displayed in report for the day an item was ordered. For example, if an order was placed on January 1, and the customer returned the item on January 10, data about this return will appear in the report for January 1.
You can track the final sales results using details for the realization reports.
The brandNames, subjectIDs, tagIds, and nmIds parameters can be empty [], in which case the response will return all of the seller listings.
The item of the number of subcategories, brands, and labels in the request cannot be more than 16. For example, 4 brands and 4 subcategories or 2 subcategories, 2 labels, and 4 brands.
GROUPED_HISTORY_REPORT type. Reports of this type are available only with Jam subscription
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 2 requests | 30 min | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
required | object Requested period |
| brandNames | Array of strings List of brands for filtering |
| subjectIds | Array of integers <uint64> [ items <uint64 > ] List of subcategory IDs for filtering |
| tagIds | Array of integers <uint64> [ items <uint64 > ] List of label IDs for filtering |
| skipDeletedNm | boolean Skip deleted items |
| aggregationLevel | string Default: "day" Enum: "day" "week" Aggregation Type. If not specified, the default is aggregation
by days. |
Responses
Request samples
- Payload
{- "selectedPeriod": {
- "start": "2023-06-01",
- "end": "2024-03-01"
}, - "brandNames": [
- "nike",
- "adidas"
], - "subjectIds": [
- 64,
- 334
], - "tagIds": [
- 32,
- 53
], - "skipDeletedNm": false,
- "aggregationLevel": "day"
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": [
- {
- "product": {
- "nmId": 268913787,
- "title": "Кроссовки для бега",
- "vendorCode": "12345456",
- "brandName": "Demix",
- "subjectId": 105,
- "subjectName": "Кроссовки"
}, - "history": [
- {
- "date": "2024-10-23",
- "openCount": 45,
- "cartCount": 34,
- "orderCount": 19,
- "orderSum": 1262,
- "buyoutCount": 19,
- "buyoutSum": 1262,
- "buyoutPercent": 35,
- "addToCartConversion": 43,
- "cartToOrderConversion": 0,
- "addToWishlistCount": 0
}
], - "currency": "RUB"
}
]
}Method for getting the Order Feed report
Get Report{{ /api/analytics/v1/order-feed }}
The method forms a dataset for orders and sales.
The report data is updated in real time.
1 order means 1 assembly order and means 1 item
The brandNames, subjectIds, tagIds, and nmIds parameters can be empty [], in which case the response will return all of the seller orders.
If you specify multiple parameters, the response will include orders that match all of these parameters simultaneously. If no orders match the request parameters, an empty array [] will be returned.
You can get a report for a maximum of the last 31 days.
Orders are sorted by current status time, from the newest to the earliest.
Pagination can be used.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 1 request | 1 min | 1 request |
| Service | 1 min | 1 request | 1 min | 1 request |
| Base with secret | 1 min | 1 request | 1 min | 1 request |
| Base | 3 h | 1 request | 3 h | 1 request |
Authorizations:
Request Body schema: application/json
required | object Requested period. By date of the current order status |
| nmIds | Array of integers <uint64> <= 1000 items [ items <uint64 > ] List of WB item numbers for filtering |
| subjectIds | Array of integers <uint64> <= 50 items [ items <uint64 > ] List of subcategory IDs for filtering |
| brandNames | Array of strings <= 50 items List of brands for filtering |
| tagIds | Array of integers <uint64> <= 50 items [ items <uint64 > ] List of label IDs for filtering |
object Pagination |
Responses
Request samples
- Payload
{- "selectedPeriod": {
- "start": "2026-07-23T00:00:00.00000+03:00",
- "end": "2026-07-31T00:00:00.00000+03:00"
}, - "nmIds": [
- 162579635,
- 166699779
], - "subjectIds": [
- 232,
- 1364
], - "brandNames": [
- "Abikas",
- "Tike"
], - "tagIds": [
- 3,
- 5,
- 6
], - "pagination": {
- "snapshotTime": "2026-07-28T15:04:05Z",
- "offset": 211,
- "limit": 4030
}
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": {
- "snapshotTime": "2026-07-03T15:04:05Z",
- "currency": "RUB",
- "orders": [
- {
- "nmId": 47254354,
- "chrtId": 91663228,
- "srid": "7513432034713632943.1.0",
- "createdAt": "2026-06-24T12:57:26+03:00",
- "updatedAt": "2026-06-26T19:19:38+03:00",
- "status": "cancel",
- "cancelType": "app",
- "warehouseName": "Склад WB",
- "warehouseRegion": "",
- "isMp": true,
- "destinationCity": "Санкт-Петербург",
- "destinationDistrict": "Северо-Западный",
- "sellerPrice": 4328,
- "isB2b": false
}
]
}
}These methods can be used to get a report on search queries for your items.
Main Page{{ /api/v2/search-report/report }}
Forms a dataset for the main report page with:
- General information
- Item positions
- Data on visibility and transitions to the listing
- Data for the table by groups
To get additional data in the table, use a separate request for:
- Pagination by groups
- Retrieval of items within a group
Additional parameters for selecting the list of items in the table:
positionCluster— average position in search
The parameters includeSubstitutedSKUs and includeSearchTexts cannot both be set to false.
The report data is updated once an hour.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 1 request | 1 h | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
required | object Current period |
object Previous period for comparison. Number of days — less than or equal to | |
| nmIds | Array of integers <int32> [ items <int32 > ] List of WB item numbers for filtering |
| subjectIds | Array of integers <int32> [ items <int32 > ] List of subcategory IDs for filtering |
| brandNames | Array of strings List of brands for filtering |
| tagIds | Array of integers <int64> [ items <int64 > ] List of label IDs for filtering |
| positionCluster required | string Enum: "all" "firstHundred" "secondHundred" "below" Which average search position of items to display in the report:
|
required | object Sorting parameters |
| includeSubstitutedSKUs | |
| includeSearchTexts | boolean Default: true Show data for search queries without promo items |
| limit required | integer <uint32> <= 1000 Number of item groups in the response |
| offset required | integer <uint32> From which element to start outputting data |
Responses
Request samples
- Payload
{- "currentPeriod": {
- "start": "2024-02-10",
- "end": "2024-02-10"
}, - "pastPeriod": {
- "start": "2024-02-08",
- "end": "2024-02-08"
}, - "nmIds": [
- 162579635,
- 166699779
], - "subjectIds": [
- 32,
- 64
], - "brandNames": [
- "Adidas",
- "Nike"
], - "tagIds": [
- 3,
- 5,
- 6
], - "positionCluster": "all",
- "orderBy": {
- "field": "avgPosition",
- "mode": "asc"
}, - "includeSubstitutedSKUs": true,
- "includeSearchTexts": false,
- "limit": 130,
- "offset": 50
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": {
- "commonInfo": {
- "supplierRating": {
- "current": 5.3,
- "dynamics": 5.4
}, - "advertisedProducts": {
- "current": 5,
- "dynamics": 50
}, - "totalProducts": 150
}, - "positionInfo": {
- "average": {
- "current": 5,
- "dynamics": 50
}, - "median": {
- "current": 5,
- "dynamics": 50
}, - "chartItems": [
- {
- "dt": "2024-10-19",
- "average": 1,
- "median": 1
}
], - "clusters": {
- "firstHundred": {
- "current": 5,
- "dynamics": 50
}, - "secondHundred": {
- "current": 5,
- "dynamics": 50
}, - "below": {
- "current": 5,
- "dynamics": 50
}
}
}, - "visibilityInfo": {
- "visibility": {
- "current": 5,
- "dynamics": 50
}, - "openCard": {
- "current": 5,
- "dynamics": 50
}, - "byDay": [
- {
- "dt": "2024-02-10",
- "visibility": 100,
- "open": 124
}
], - "byWeek": [
- {
- "dt": "2024-02-10",
- "visibility": 100,
- "open": 124
}
], - "byMonth": [
- {
- "dt": "2024-02-10",
- "visibility": 100,
- "open": 124
}
]
}, - "groups": [
- {
- "subjectName": "Phones",
- "subjectId": 50,
- "brandName": "Apple",
- "tagName": "phones",
- "tagId": 65,
- "metrics": {
- "avgPosition": {
- "current": 5,
- "dynamics": 50
}, - "openCard": {
- "current": 5,
- "dynamics": 50
}, - "addToCart": {
- "current": 5,
- "dynamics": 50
}, - "openToCart": {
- "current": 5,
- "dynamics": 50
}, - "orders": {
- "current": 5,
- "dynamics": 50
}, - "cartToOrder": {
- "current": 5,
- "dynamics": 50
}, - "visibility": {
- "current": 5,
- "dynamics": 50
}
}, - "items": [
- {
- "nmId": 268913787,
- "name": "iPhone 13 256 ГБ Серебристый",
- "vendorCode": "wb3ha2668w",
- "subjectName": "Смартфоны",
- "brandName": "Apple",
- "isAdvertised": false,
- "isSubstitutedSKU": true,
- "isCardRated": true,
- "rating": 6,
- "feedbackRating": 1,
- "price": {
- "minPrice": 150,
- "maxPrice": 300
}, - "avgPosition": {
- "current": 5,
- "dynamics": 50
}, - "openCard": {
- "current": 5,
- "dynamics": 50
}, - "addToCart": {
- "current": 5,
- "dynamics": 50
}, - "openToCart": {
- "current": 5,
- "dynamics": 50
}, - "orders": {
- "current": 5,
- "dynamics": 50
}, - "cartToOrder": {
- "current": 5,
- "dynamics": 50
}, - "visibility": {
- "current": 5,
- "dynamics": 50
}
}
]
}
], - "currency": "RUB"
}
}Pagination by Groups{{ /api/v2/search-report/table/groups }}
Pagination by groups in the report. It is possible only if there is a filter by brand, subcategory, or label.
Additional parameters for selecting the list of items in the table:
positionCluster— average position in search
The parameters includeSubstitutedSKUs and includeSearchTexts cannot both be set to false.
The report data is updated once an hour.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 1 request | 1 h | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
required | object Current period |
object Previous period for comparison. Number of days — less than or equal to | |
| nmIds | Array of integers <int32> [ items <int32 > ] List of WB item numbers for filtering |
| subjectIds | Array of integers <int32> [ items <int32 > ] List of subcategory IDs for filtering |
| brandNames | Array of strings List of brands for filtering |
| tagIds | Array of integers <int64> [ items <int64 > ] List of label IDs for filtering |
required | object Sorting parameters |
| positionCluster required | string Enum: "all" "firstHundred" "secondHundred" "below" Which average search position of items to display in the report:
|
| includeSubstitutedSKUs | |
| includeSearchTexts | boolean Default: true Show data for search queries without promo items |
| limit required | integer <uint32> <= 1000 Number of item groups in the response |
| offset required | integer <uint32> From which element to start outputting data |
Responses
Request samples
- Payload
{- "currentPeriod": {
- "start": "2024-02-10",
- "end": "2024-02-10"
}, - "pastPeriod": {
- "start": "2024-02-08",
- "end": "2024-02-08"
}, - "nmIds": [
- 162579635,
- 166699779
], - "subjectIds": [
- 64,
- 334
], - "brandNames": [
- "nikkle",
- "abikas"
], - "tagIds": [
- 32,
- 53
], - "orderBy": {
- "field": "avgPosition",
- "mode": "asc"
}, - "positionCluster": "all",
- "includeSubstitutedSKUs": true,
- "includeSearchTexts": false,
- "limit": 130,
- "offset": 50
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": {
- "groups": [
- {
- "subjectName": "Phones",
- "subjectId": 50,
- "brandName": "Apple",
- "tagName": "phones",
- "tagId": 65,
- "metrics": {
- "avgPosition": {
- "current": 5,
- "dynamics": 50
}, - "openCard": {
- "current": 5,
- "dynamics": 50
}, - "addToCart": {
- "current": 5,
- "dynamics": 50
}, - "openToCart": {
- "current": 5,
- "dynamics": 50
}, - "orders": {
- "current": 5,
- "dynamics": 50
}, - "cartToOrder": {
- "current": 5,
- "dynamics": 50
}, - "visibility": {
- "current": 5,
- "dynamics": 50
}
}, - "items": [
- {
- "nmId": 268913787,
- "name": "iPhone 13 256 ГБ Серебристый",
- "vendorCode": "wb3ha2668w",
- "subjectName": "Смартфоны",
- "brandName": "Apple",
- "isAdvertised": false,
- "isSubstitutedSKU": true,
- "isCardRated": true,
- "rating": 6,
- "feedbackRating": 1,
- "price": {
- "minPrice": 150,
- "maxPrice": 300
}, - "avgPosition": {
- "current": 5,
- "dynamics": 50
}, - "openCard": {
- "current": 5,
- "dynamics": 50
}, - "addToCart": {
- "current": 5,
- "dynamics": 50
}, - "openToCart": {
- "current": 5,
- "dynamics": 50
}, - "orders": {
- "current": 5,
- "dynamics": 50
}, - "cartToOrder": {
- "current": 5,
- "dynamics": 50
}, - "visibility": {
- "current": 5,
- "dynamics": 50
}
}
]
}
], - "currency": "RUB"
}
}Pagination by Items Within a Group{{ /api/v2/search-report/table/details }}
Pagination by items within a group. It is possible regardless of the presence of filters.
Filters for pagination by items within a group or without filters:
- tuple
subjectId,brandName,tagId— filter for the group nmIds— filter by listings
Additional parameters for selecting the list of items in the table:
positionCluster— average position in search
The parameters includeSubstitutedSKUs and includeSearchTexts cannot both be set to false.
The report data is updated once an hour.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 1 request | 1 h | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
required | object Current period |
object Previous period for comparison. Number of days — less than or equal to | |
| subjectId | integer <int32> Subcategory ID |
| brandName | string Item name |
| tagId | integer <int64> Label ID |
| nmIds | Array of integers <uint64> <= 50 items [ items <uint64 > ] WB item numbers list |
required | object Sorting parameters |
| positionCluster required | string Enum: "all" "firstHundred" "secondHundred" "below" Which average search position of items to display in the report:
|
| includeSubstitutedSKUs | |
| includeSearchTexts | boolean Default: true Show data for search queries without promo items |
| limit required | integer <uint32> <= 1000 Number of items in the response |
| offset required | integer <uint32> From which element to start outputting data |
Responses
Request samples
- Payload
{- "currentPeriod": {
- "start": "2024-02-10",
- "end": "2024-02-10"
}, - "pastPeriod": {
- "start": "2024-02-08",
- "end": "2024-02-08"
}, - "subjectId": 123,
- "brandName": "Apple",
- "tagId": 45,
- "nmIds": [
- 162579635,
- 166699779
], - "orderBy": {
- "field": "avgPosition",
- "mode": "asc"
}, - "positionCluster": "all",
- "includeSubstitutedSKUs": true,
- "includeSearchTexts": false,
- "limit": 150,
- "offset": 100
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": {
- "products": [
- {
- "nmId": 268913787,
- "name": "iPhone 13 256 ГБ Серебристый",
- "vendorCode": "wb3ha2668w",
- "subjectName": "Смартфоны",
- "brandName": "Apple",
- "isAdvertised": false,
- "isSubstitutedSKU": true,
- "isCardRated": true,
- "rating": 6,
- "feedbackRating": 1,
- "price": {
- "minPrice": 150,
- "maxPrice": 300
}, - "avgPosition": {
- "current": 5,
- "dynamics": 50
}, - "openCard": {
- "current": 5,
- "dynamics": 50
}, - "addToCart": {
- "current": 5,
- "dynamics": 50
}, - "openToCart": {
- "current": 5,
- "dynamics": 50
}, - "orders": {
- "current": 5,
- "dynamics": 50
}, - "cartToOrder": {
- "current": 5,
- "dynamics": 50
}, - "visibility": {
- "current": 5,
- "dynamics": 50
}
}
], - "currency": "RUB"
}
}Search Texts by Item{{ /api/v2/search-report/product/search-texts }}
Forms the top search texts by item.
Search text selection parameters:
limit— number of queries, maximum 30. For the Advanced and Premium Jam rates, the maximum is 100.topOrderBy— method for selecting the top queries
The parameters includeSubstitutedSKUs and includeSearchTexts cannot both be set to false.
The report data is updated once an hour.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 1 request | 1 h | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
required | object Current period |
object Previous period for comparison. Number of days — less than or equal to | |
| nmIds required | Array of integers <uint64> <= 50 items [ items <uint64 > ] WB item numbers list |
| topOrderBy required | string Enum: "openCard" "addToCart" "openToCart" "orders" "cartToOrder" Filtering by the search queries that brought the most:
|
| includeSubstitutedSKUs | |
| includeSearchTexts | boolean Default: true Show data for search queries without promo items |
required | object Sorting parameters |
required | StandardTariff (integer) or AdvancedTariff (integer) |
Responses
Request samples
- Payload
{- "currentPeriod": {
- "start": "2024-02-10",
- "end": "2024-02-10"
}, - "pastPeriod": {
- "start": "2024-02-08",
- "end": "2024-02-08"
}, - "nmIds": [
- 162579635,
- 166699779
], - "topOrderBy": "openToCart",
- "includeSubstitutedSKUs": true,
- "includeSearchTexts": false,
- "orderBy": {
- "field": "avgPosition",
- "mode": "asc"
}, - "limit": 20
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": {
- "items": [
- {
- "text": "костюм",
- "nmId": 211131895,
- "subjectName": "Phones",
- "brandName": "Apple",
- "vendorCode": "wb3ha2668w",
- "name": "iPhone 13 256 ГБ Серебристый",
- "isCardRated": true,
- "rating": 6,
- "feedbackRating": 1,
- "price": {
- "minPrice": 150,
- "maxPrice": 300
}, - "frequency": {
- "current": 5,
- "dynamics": 50
}, - "weekFrequency": 140,
- "medianPosition": {
- "current": 5,
- "dynamics": 50
}, - "avgPosition": {
- "current": 5,
- "dynamics": 50
}, - "openCard": {
- "current": 5,
- "dynamics": 50,
- "percentile": 50
}, - "addToCart": {
- "current": 5,
- "dynamics": 50,
- "percentile": 50
}, - "openToCart": {
- "current": 5,
- "dynamics": 50,
- "percentile": 50
}, - "orders": {
- "current": 5,
- "dynamics": 50,
- "percentile": 50
}, - "cartToOrder": {
- "current": 5,
- "dynamics": 50,
- "percentile": 50
}, - "visibility": {
- "current": 5,
- "dynamics": 50
}
}
], - "currency": "RUB"
}
}Orders and Positions by Item Search Texts{{ /api/v2/search-report/product/orders }}
The method forms data for the table:
- about orders for each search query for a specific item
- about item positions in search results for each query
The data is provided within the period for the requested item and grouped by day. The maximum period is 7 days.
The report data is updated once per hour.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 1 request | 1 h | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
required | object Current period. Maximum of 7 days |
| nmId required | integer <uint64> WB item number |
| searchTexts required | Array of strings [ 1 .. 30 ] items Search texts. For the Advanced and Premium Jam rates, the maximum is 100 |
Responses
Request samples
- Payload
{- "period": {
- "start": "2024-02-10",
- "end": "2024-02-10"
}, - "nmId": 211131895,
- "searchTexts": [
- "костюм",
- "пиджак"
]
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": {
- "total": [
- {
- "dt": "2024-02-10",
- "avgPosition": 10,
- "orders": 20
}
], - "items": [
- {
- "text": "string",
- "frequency": 0,
- "dateItems": [
- {
- "dt": "2024-02-10",
- "avgPosition": 10,
- "orders": 20
}
]
}
]
}
}These methods can be used to get a report on inventory metrics.
This is information from the detailed item table and the region and warehouse detail widget.
Inventory in responses of these methods is displayed for the current day.
STOCK_HISTORY_DAILY_CSV report type
WB Warehouses Inventory{{ /api/analytics/v1/stocks-report/wb-warehouses }}
The method returns current WB warehouses inventory.
The data is updated once every 30 minutes.
1 response row means data on 1 item size in 1 WB warehouse.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 min | 3 requests | 20 s | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
| nmIds | Array of integers <int64> [ 0 .. 1000 ] items [ items <int64 > ] WB item numbers |
| chrtIds | Array of integers <int64> [ items <int64 > ] Size IDs. It is used only for the item numbers specified in the |
| limit | integer <uint32> <= 250000 Default: 250000 Number of rows in the response |
| offset | integer <uint32> Default: 0 How many results to skip. For example, with value |
Responses
Request samples
- Payload
{- "nmIds": [
- 111222333,
- 47254354
], - "chrtIds": [
- 111222333,
- 91663228
], - "limit": 250000,
- "offset": 500000
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": {
- "items": [
- {
- "nmId": 47254354,
- "chrtId": 91663228,
- "warehouseId": -999999,
- "warehouseName": "Склад WB",
- "regionName": "Склад WB",
- "quantity": 43,
- "inWayToClient": 14,
- "inWayFromClient": 11
}
]
}
}Seller Warehouses Inventory{{ /api/analytics/v1/stocks-report/seller-warehouses }}
The method returns current seller warehouses inventory.
The data is updated once every 30 minutes.
1 response row means data on 1 item size in 1 seller warehouse.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 min | 3 requests | 20 s | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
| nmIds | Array of integers <int64> [ 0 .. 1000 ] items [ items <int64 > ] WB item numbers |
| chrtIds | Array of integers <int64> [ items <int64 > ] Size IDs. It is used only for the item numbers specified in the |
| limit | integer <uint32> <= 250000 Default: 250000 Number of rows in the response |
| offset | integer <uint32> Default: 0 How many results to skip. For example, with value |
Responses
Request samples
- Payload
{- "nmIds": [
- 111222333,
- 47254354
], - "chrtIds": [
- 111222333,
- 91663228
], - "limit": 250000,
- "offset": 500000
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": {
- "items": [
- {
- "nmId": 47254354,
- "chrtId": 91663228,
- "warehouseId": 123456,
- "warehouseName": "склад продавца Иркутск",
- "regionName": "Дальневосточный и Сибирский",
- "quantity": 43
}
]
}
}Group Data{{ /api/v2/stocks-report/products/groups }}
Forms a dataset for inventory by item group.
The item group is described by a tuple of subjectID, brandName, tagID.
The report data is updated once an hour.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 2 requests | 30 min | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
| nmIDs | Array of integers <int64> [ items <int64 > ] List of WB item numbers for filtering |
| subjectIDs | Array of integers <int32> [ items <int32 > ] List of subcategory IDs for filtering |
| brandNames | Array of strings List of brands for filtering |
| tagIDs | Array of integers <int64> [ items <int64 > ] List of label IDs for filtering |
required | object Period |
| stockType required | string Enum: "" "wb" "mp" Type of items storage warehouse:
|
| skipDeletedNm required | boolean Skip deleted items |
| availabilityFilters required | Array of strings Items Enum: "deficient" "actual" "balanced" "nonActual" "nonLiquid" "invalidData" Item availability:
|
required | object Sorting parameters |
| limit | integer <uint32> <= 1000 Default: 100 Number of groups in the response |
| offset required | integer <uint32> From which element to start outputting data |
Responses
Request samples
- Payload
{- "nmIDs": [
- 111222333,
- 444555666
], - "subjectIDs": [
- 123,
- 456
], - "brandNames": [
- "Эрк",
- "Дент"
], - "tagIDs": [
- 3,
- 4,
- 5
], - "currentPeriod": {
- "start": "2024-02-10",
- "end": "2024-02-10"
}, - "stockType": "mp",
- "skipDeletedNm": true,
- "availabilityFilters": [
- "deficient",
- "balanced"
], - "orderBy": {
- "field": "avgOrders",
- "mode": "asc"
}, - "limit": 150,
- "offset": 100
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": {
- "groups": [
- {
- "subjectID": 123456789,
- "subjectName": "Кружка",
- "brandName": "Крутая посуда",
- "tagID": 12345,
- "tagName": "Человек-Паук",
- "metrics": {
- "ordersCount": 100,
- "ordersSum": 100000,
- "avgOrders": 200,
- "avgOrdersByMonth": [
- {
- "start": "2025-01-01",
- "end": "2025-01-31",
- "value": 25.55
}
], - "buyoutCount": 150,
- "buyoutSum": 150000,
- "buyoutPercent": 5,
- "stockCount": 50,
- "stockSum": 50000,
- "saleRate": {
- "days": 5,
- "hours": 15
}, - "avgStockTurnover": {
- "days": 5,
- "hours": 15
}, - "toClientCount": 20,
- "fromClientCount": 30,
- "officeMissingTime": {
- "days": 5,
- "hours": 15
}, - "lostOrdersCount": 1550.52,
- "lostOrdersSum": 155000.25,
- "lostBuyoutsCount": 123.55,
- "lostBuyoutsSum": 225555.15
}, - "items": [
- {
- "nmID": 123456789,
- "isDeleted": false,
- "subjectName": "Принтеры",
- "name": "Печатник 3000",
- "vendorCode": "pechatnik3000",
- "brandName": "Компик",
- "hasSizes": true,
- "metrics": {
- "ordersCount": 100,
- "ordersSum": 100000,
- "avgOrders": 200,
- "avgOrdersByMonth": [
- {
- "start": "2025-01-01",
- "end": "2025-01-31",
- "value": 25.55
}
], - "buyoutCount": 150,
- "buyoutSum": 150000,
- "buyoutPercent": 5,
- "stockCount": 50,
- "stockSum": 50000,
- "saleRate": {
- "days": 5,
- "hours": 15
}, - "avgStockTurnover": {
- "days": 5,
- "hours": 15
}, - "toClientCount": 20,
- "fromClientCount": 30,
- "officeMissingTime": {
- "days": 5,
- "hours": 15
}, - "lostOrdersCount": 1550.52,
- "lostOrdersSum": 155000.25,
- "lostBuyoutsCount": 123.55,
- "lostBuyoutsSum": 225555.15,
- "currentPrice": {
- "minPrice": 50,
- "maxPrice": 100
}, - "availability": "deficient"
}
}
]
}
], - "currency": "RUB"
}
}Item Data{{ /api/v2/stocks-report/products/products }}
Forms a dataset for inventory by items.
You can get data for individual items as well as for the entire report if there are no filters in the query: nmIDs, subjectID, brandName, tagID.
The report data is updated once an hour.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 2 requests | 30 min | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
| nmIDs | Array of integers <int64> [ items <int64 > ] List of WB item numbers for filtering |
| subjectID | integer <int32> Subcategory ID |
| brandName | string Brand |
| tagID | integer <int64> Label ID |
required | object Period |
| stockType required | string Enum: "" "wb" "mp" Type of items storage warehouse:
|
| skipDeletedNm required | boolean Skip deleted items |
required | object Sorting parameters |
| availabilityFilters required | Array of strings Items Enum: "deficient" "actual" "balanced" "nonActual" "nonLiquid" "invalidData" Item availability:
|
| limit | integer <uint32> <= 1000 Default: 100 Number of groups in the response |
| offset required | integer <uint32> From which element to start outputting data |
Responses
Request samples
- Payload
{- "nmIDs": [
- 111222333,
- 444555666
], - "subjectID": 123456,
- "brandName": "Спортик",
- "tagID": 25345,
- "currentPeriod": {
- "start": "2024-02-10",
- "end": "2024-02-10"
}, - "stockType": "mp",
- "skipDeletedNm": true,
- "orderBy": {
- "field": "avgOrders",
- "mode": "asc"
}, - "availabilityFilters": [
- "deficient",
- "balanced"
], - "limit": 150,
- "offset": 100
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": {
- "items": [
- {
- "nmID": 123456789,
- "isDeleted": false,
- "subjectName": "Принтеры",
- "name": "Печатник 3000",
- "vendorCode": "pechatnik3000",
- "brandName": "Компик",
- "hasSizes": true,
- "metrics": {
- "ordersCount": 100,
- "ordersSum": 100000,
- "avgOrders": 200,
- "avgOrdersByMonth": [
- {
- "start": "2025-01-01",
- "end": "2025-01-31",
- "value": 25.55
}
], - "buyoutCount": 150,
- "buyoutSum": 150000,
- "buyoutPercent": 5,
- "stockCount": 50,
- "stockSum": 50000,
- "saleRate": {
- "days": 5,
- "hours": 15
}, - "avgStockTurnover": {
- "days": 5,
- "hours": 15
}, - "toClientCount": 20,
- "fromClientCount": 30,
- "officeMissingTime": {
- "days": 5,
- "hours": 15
}, - "lostOrdersCount": 1550.52,
- "lostOrdersSum": 155000.25,
- "lostBuyoutsCount": 123.55,
- "lostBuyoutsSum": 225555.15,
- "currentPrice": {
- "minPrice": 50,
- "maxPrice": 100
}, - "availability": "deficient"
}
}
], - "currency": "RUB"
}
}Size Data{{ /api/v2/stocks-report/products/sizes }}
Forms a dataset for inventory by the size of the item.
Possible cases:
- The item has dimensions and
"includeOffice":true, then the response body will contain data on the inventory for each of the sizes with nested details by warehouse. - The item has dimensions and
"includeOffice":false, then the response body will contain data on the inventory for each of the sizes without nested details by warehouse. - The item has no size and
"include Office":true, then the response body will contain details by warehouse without data on the inventory for each of the sizes. - The item has no size and
"include Office":false, then the response body will be empty.
The item has no sizemeans the size of the item is the same and has"techSize":"0". In responses of the method for getting data on items, such items havehasSizes':false.
The data on the seller warehouses are in an aggregated form — for all of them together without detailing specific warehouses — and responses contain"regionName":"Свой склад"and"officeName":""in such cases.
The report data is updated once an hour.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 2 requests | 30 min | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
| nmID required | integer <int64> WB item number |
required | object Period |
| stockType required | string Enum: "" "wb" "mp" Type of items storage warehouse:
|
required | object Sorting parameters |
| includeOffice required | boolean Include warehouse details |
Responses
Request samples
- Payload
{- "nmID": 123456789,
- "currentPeriod": {
- "start": "2024-02-10",
- "end": "2024-02-10"
}, - "stockType": "mp",
- "orderBy": {
- "field": "avgOrders",
- "mode": "asc"
}, - "includeOffice": true
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": {
- "offices": [
- {
- "regionName": "Склад WB",
- "officeID": -999999,
- "officeName": "",
- "metrics": {
- "ordersCount": 100,
- "ordersSum": 100000,
- "avgOrders": 200,
- "avgOrdersByMonth": [
- {
- "start": "2025-01-01",
- "end": "2025-01-31",
- "value": 25.55
}
], - "buyoutCount": 150,
- "buyoutSum": 150000,
- "buyoutPercent": 5,
- "stockCount": 50,
- "stockSum": 50000,
- "saleRate": {
- "days": 5,
- "hours": 15
}, - "avgStockTurnover": {
- "days": 5,
- "hours": 15
}, - "toClientCount": 20,
- "fromClientCount": 30,
- "officeMissingTime": {
- "days": 5,
- "hours": 15
}, - "lostOrdersCount": 1550.52,
- "lostOrdersSum": 155000.25,
- "lostBuyoutsCount": 123.55,
- "lostBuyoutsSum": 225555.15
}
}
], - "sizes": [
- {
- "name": "50",
- "chrtID": 123321,
- "offices": [
- {
- "regionName": "Склад WB",
- "officeID": -999999,
- "officeName": "",
- "metrics": {
- "ordersCount": 100,
- "ordersSum": 100000,
- "avgOrders": 200,
- "avgOrdersByMonth": [
- {
- "start": "2025-01-01",
- "end": "2025-01-31",
- "value": 25.55
}
], - "buyoutCount": 150,
- "buyoutSum": 150000,
- "buyoutPercent": 5,
- "stockCount": 50,
- "stockSum": 50000,
- "saleRate": {
- "days": 5,
- "hours": 15
}, - "avgStockTurnover": {
- "days": 5,
- "hours": 15
}, - "toClientCount": 20,
- "fromClientCount": 30,
- "officeMissingTime": {
- "days": 5,
- "hours": 15
}, - "lostOrdersCount": 1550.52,
- "lostOrdersSum": 155000.25,
- "lostBuyoutsCount": 123.55,
- "lostBuyoutsSum": 225555.15
}
}
], - "metrics": {
- "ordersCount": 100,
- "ordersSum": 100000,
- "avgOrders": 200,
- "avgOrdersByMonth": [
- {
- "start": "2025-01-01",
- "end": "2025-01-31",
- "value": 25.55
}
], - "buyoutCount": 150,
- "buyoutSum": 150000,
- "buyoutPercent": 5,
- "stockCount": 50,
- "stockSum": 50000,
- "saleRate": {
- "days": 5,
- "hours": 15
}, - "avgStockTurnover": {
- "days": 5,
- "hours": 15
}, - "toClientCount": 20,
- "fromClientCount": 30,
- "officeMissingTime": {
- "days": 5,
- "hours": 15
}, - "lostOrdersCount": 1550.52,
- "lostOrdersSum": 155000.25,
- "lostBuyoutsCount": 123.55,
- "lostBuyoutsSum": 225555.15,
- "currentPrice": {
- "minPrice": 50,
- "maxPrice": 100
}
}
}
], - "currency": "RUB"
}
}Warehouse Data{{ /api/v2/stocks-report/offices }}
Forms a dataset for inventory by warehouses.
The data on the seller warehouses are in an aggregated form — for all of them together without detailing specific warehouses — and responses contain "regionName":"Свой склад" and "offices":[].
The report data is updated once an hour.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 2 requests | 30 min | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
| nmIDs | Array of integers <int64> [ items <int64 > ] List of WB item numbers for filtering |
| subjectIDs | Array of integers <int32> [ items <int32 > ] List of subcategory IDs for filtering |
| brandNames | Array of strings List of brands for filtering |
| tagIDs | Array of integers <int64> [ items <int64 > ] List of label IDs for filtering |
required | object Period |
| stockType required | string Enum: "" "wb" "mp" Type of items storage warehouse:
|
| skipDeletedNm required | boolean Skip deleted items |
Responses
Request samples
- Payload
{- "nmIDs": [
- 111222333,
- 444555666
], - "subjectIDs": [
- 123,
- 456
], - "brandNames": [
- "Эшк",
- "ЗлатА",
- "ОТК",
- "арк"
], - "tagIDs": [
- 123,
- 456,
- 789
], - "currentPeriod": {
- "start": "2024-02-10",
- "end": "2024-02-10"
}, - "stockType": "mp",
- "skipDeletedNm": false
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": {
- "regions": [
- {
- "regionName": "Склад WB",
- "metrics": {
- "stockCount": 20,
- "stockSum": 20000,
- "saleRate": {
- "days": 5,
- "hours": 15
}, - "toClientCount": 30,
- "fromClientCount": 40
}, - "offices": [ ]
}
], - "currency": "RUB"
}
}Method for getting the Item Rating report
Get Report{{ /api/analytics/v2/item-rating }}
The method forms a dataset for item rating.
The report data is updated once an hour.
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 min | 3 requests | 20 s | 3 requests |
Authorizations:
Request Body schema: application/jsonrequired
required | object Current period |
object Previous period for comparison. Number of days — less than or equal to | |
| nmIds | Array of integers <int32> <= 50 items [ items <int32 > ] List of WB item numbers for filtering |
| subjectIds | Array of integers <int32> <= 50 items [ items <int32 > ] List of subcategory IDs for filtering |
| brandNames | Array of strings <= 50 items List of brands for filtering |
| tagIds | Array of integers <int64> <= 50 items [ items <int64 > ] List of label IDs for filtering |
| isNotIncludeNmsWithoutSales | boolean Default: false Are items with no sales returned:
|
| onlyShadowedNms | boolean Default: false Are only hidden items returned in the response:
|
required | object Sorting parameters |
| limit | integer <uint32> <= 1000 Default: 100 Number of items in the response |
| offset required | integer <uint32> How many results to skip. For example, with value |
Responses
Request samples
- Payload
{- "currentPeriod": {
- "start": "2026-02-10",
- "end": "2026-02-10"
}, - "pastPeriod": {
- "start": "2026-02-08",
- "end": "2026-02-08"
}, - "nmIds": [
- 162579635,
- 166699779
], - "subjectIds": [
- 232,
- 1364
], - "brandNames": [
- "Abikas",
- "Tike"
], - "tagIds": [
- 3,
- 5,
- 6
], - "isNotIncludeNmsWithoutSales": true,
- "onlyShadowedNms": true,
- "orderBy": {
- "field": "feedbackCount",
- "mode": "desc"
}, - "limit": 130,
- "offset": 50
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": {
- "sellerRating": {
- "current": 3.56,
- "dynamics": 0.03
}, - "feedbackIncrease": {
- "current": 26,
- "total": 116,
- "dynamics": 23,
- "fiveStar": {
- "current": 19,
- "dynamics": 17,
- "total": 51
}, - "fourStar": {
- "current": 2,
- "dynamics": 1,
- "total": 13
}, - "threeStar": {
- "current": 1,
- "dynamics": 1,
- "total": 11
}, - "twoStar": {
- "current": 5,
- "dynamics": 5,
- "total": 34
}, - "oneStar": {
- "current": -1,
- "dynamics": -1,
- "total": 7
}
}, - "items": [
- {
- "nmId": 123456789,
- "title": "iPh 17 512 ГБ Серебристый",
- "vendorCode": "wb3ha2668w",
- "subjectId": 50,
- "subjectName": "Phones",
- "brandName": "Attlee",
- "tagName": "Phones",
- "tagId": 65,
- "pinnedFeedback": true,
- "rating": 10,
- "feedbackRating": {
- "current": 3.87,
- "dynamics": 0.31,
- "percentile": 1.7
}, - "feedbackCount": {
- "current": 12,
- "dynamics": 9
}, - "fiveStar": {
- "current": 9,
- "dynamics": 7
}, - "fourStar": {
- "current": 0,
- "dynamics": -1
}, - "threeStar": {
- "current": 1,
- "dynamics": 1
}, - "twoStar": {
- "current": 2,
- "dynamics": 2
}, - "oneStar": {
- "current": 0,
- "dynamics": 0
}, - "disqualified": 7,
- "isShadowed": true
}
]
}
}To get a report:
- Generate it using the method Create the report.
- Wait until the report is ready. You can check the status with the method Get the reports list. The report is stored for 48 hours after it is ready, and it cannot be retrieved after.
If you receive a status of FAILED, regenerate the report. - Download the report.
You can get a report for a maximum of one year. Inventory reports can be gotten for a maximum of 3 months
The maximum number of reports that can be generated per day is 20
Create the Report{{ /api/v2/nm-report/downloads }}
The method creates a task for generating a report with advanced seller analytics.
You can create a CSV-version of sales funnel or search parameters report with grouping:
- by WB item numbers
- by categories, brands, and labels
In each of reports on sales funnel, you can group data by days, weeks, or months.
Also you can create a CSV-version of search texts or inventory report.
Each new report must have a unique ID.
The set of parameters in the params object depends on the report type. To get a description of the parameters, select the report type from the dropdown list in the description of the reportType parameter.
The parameters includeSubstitutedSKUs and includeSearchTexts cannot both be set to false
If it was not possible to get report, you can create a repeat generation task. You can also get a list and check the statuses of reports.
STOCK_HISTORY_REPORT_CSV and STOCK_HISTORY_DAILY_CSV types — can be created without Jam subscription
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 1 request | 1 h | 1 request |
Authorizations:
Request Body schema: application/json
| id required | string <uuid> Report ID in UUID format. Generated by the seller independently |
| reportType required | string Report type |
| userReportName | string Report name. If not specified, it will be generated automatically |
required | object Report parameters |
Responses
Request samples
- Payload
Sales funnel report. By WB item numbers
{- "id": "06eae887-9d9f-491f-b16a-bb1766fcb8d2",
- "reportType": "DETAIL_HISTORY_REPORT",
- "userReportName": "Listing report",
- "params": {
- "nmIDs": [
- 1234567
], - "subjectIds": [
- 1234567
], - "brandNames": [
- "Name"
], - "tagIds": [
- 1234567
], - "startDate": "2024-06-21",
- "endDate": "2024-06-23",
- "timezone": "Europe/Moscow",
- "aggregationLevel": "day",
- "skipDeletedNm": false
}
}Response samples
- 200
- 400
- 401
- 402
- 403
- 429
{- "data": "Началось формирование файла/отчета"
}Get the Reports List{{ /api/v2/nm-report/downloads }}
The method provides a list of reports with advanced seller analytics. The response contains report IDs and generation statuses.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 1 request | 1 h | 1 request |
Authorizations:
query Parameters
| filter[downloadIds] | Array of strings <uuid> [ items <uuid > ] Report ID |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": [
- {
- "id": "06eae887-9d9f-491f-b16a-bb1766fcb8d2",
- "createdAt": "2024-06-26 20:05:32",
- "status": "SUCCESS",
- "name": "Card report",
- "size": 123,
- "startDate": "2024-06-21",
- "endDate": "2023-04-23"
}
]
}Regenerate the Report{{ /api/v2/nm-report/downloads/retry }}
The method creates a repeated generation task of report with advanced seller analytics. This is necessary if you received the status FAILED when generating the report.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 1 request | 1 h | 1 request |
Authorizations:
Request Body schema: application/jsonrequired
| downloadId | string <uuid> Report ID |
Responses
Request samples
- Payload
{- "downloadId": "06eea887-9d9f-491f-b16a-bb1766fcb8d2"
}Response samples
- 200
- 400
- 401
- 403
- 429
{- "data": "Retry"
}Get the Report{{ /api/v2/nm-report/downloads/file/{downloadId} }}
The method provides a report with advanced seller analytics by generation task ID.
You can get a report that was generated within the last 48 hours.
The report will be downloaded inside a ZIP archive in CSV format.
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 1 request | 1 h | 1 request |
Authorizations:
path Parameters
| downloadId required | string <uuid> Report ID |
Responses
Response samples
- 200
- 400
- 401
- 402
- 403
- 429
nmID, dt, openCardCount, addToCartCount, ordersCount, ordersSumRub, buyoutsCount, buyoutsSumRub, cancelCount, cancelSumRub, addToCartConversion, cartToOrderConversion, buyoutPercent, addToWishlist, currency 70027655,2024-11-21,1,0,0,0,0,0,0,0,0,0,0,0,RUB ... ... 150317666,2024-11-21,2,0,0,0,0,0,0,0,0,0,0,0,RUB