Overview
API Request Format
API Response Format
Other API Responses
Using the Page Parameter or the Next Page Approach
API Registration and Throughput
Testing the API
Securing the Communication
Overview
The Bulk Products API is a REST API endpoint that allows two software systems to talk to each other via a request/response-based communication. This API is optimized for bulk data transfer and allows client applications to query the most recently extracted pricing data on demand. It returns the latest extracted pricing data for your entire catalog in pages - batches of SKUs and associated competitor product listings.
API Request Format
GET request.
Base URL: https://pi-api.wiser.com
Path: /api/v1/products?key=<your_api_key>&page=<page_num>&crawl_recency_hours=<hours>
key=<your_api_key>
Is a required parameter.
It corresponds to the unique account API authentication key.
Ex: key=rWotPeHKnKgdNdUv6VC7YM9yrTkwzWTx
page=<page_num>
Is an optional parameter. It only accepts positive integer numbers.
It corresponds to the number of the page being requested.
Ex: page=1.
crawl_recency_hours=<hours>
Is an optional parameter. It only accepts positive integer numbers.
If used it will only return competitor products extracted in the last ‘selected number’ hours.
Ex: crawl_recency_hours=24
API Response Format
This API returns the latest extracted pricing data in pages - batches of up to 1,000 customer SKU products, including all associated competitor listings.
Successful response (status: 200)
Structure: {"data": [], "pagination_details": {}}
{"data": [
{
“sku”: { // information about customer product
"master_id": <str> non-nullable, // unique id of this master product in Wiser systems
“environment”: <str> non-nullable, // your PI environment where the data is being fetched from
“assortment”: <boolean> non-nullable, // false indicates this is a customer provided SKU; true is a generic clustering of similar products
"sku": <str> nullable, // your product's SKU alphanumeric code
"title": <str> nullable, // your product's title
“category_level_1”: <str> nullable, // your level 1 category name
“category_level_2”: <str> nullable // your level 2 category name
},
“matched_products”: [ // information about each competitor match
{
"id": <str> non-nullable, // unique id of this product in Wiser systems
"store_name": <str> non-nullable, // e-commerce store name
“marketplace_seller”: <str> nullable, // name of the lowest price seller if the store is a marketplace
"url": <str> non-nullable, // product's listing URL
“match type”: <str> non-nullable, // if the match type is 'exact' or 'equivalent'
"crawl_date": <date YYYY-MM-DD HH:MM:SS> non-nullable, // last crawl timestamp in UTC
"previous_price": <float> nullable, // second last price collected
"price": <float> non-nullable, // product listing's price
"regular_price": <float> nullable, // listing's regular price, aka “strike-through price”
“savings”: <float> nullable, // difference between price and regular price in monetary value
"savings_message”: <str> nullable, // promotional messages (ex: save $50 buying two or more).
“special_offer”: <string> nullable, // used to capture other promotional messages such as membership discounts
"shipping_price": <float> nullable, // product listing's shipping price
“shipping_message”: <str> nullable, // shipping message on the page (ex: "buy now receive tomorrow").
"in_cart": <boolean> nullable, // if price was extracted after adding item to cart
"availability": <boolean> nullable // product listing's stock information
}
{ …. } // subsequent set of attributes for each one of the products matched to this particular SKU
]
},
{
“sku”: {….},
“matched_products”: [ {…} ]
}
],
“pagination_details": { // information about the quantity of data available
“page_size”: <int> non-nullable, // number of products (your SKU) in the current page
“total_pages”: <int> non-nullable // total number of available pages
“page”: <int> non-nullable, // corresponds to the number of the current page and is only present when using the page parameter in the request
“next_page”: <str> nullable // contains the API request URL for the next page and is only present when there is no page parameter in the request
}
}