Skip to main content

Bulk Product API

Updated over a month ago

What it does

The Bulk Product API returns competitive pricing data for up to 1,000 SKUs at once.

It’s designed for large-scale automated processing where teams need daily or hourly competitive snapshots.

Best for

  • Pricing teams adjusting hundreds of SKUs at a time

  • BI dashboards that need fresh competitive data

  • Daily price-gap pipelines feeding internal tools

  • Automated MAP monitoring

Typical use cases

  • Daily ingestion into a data warehouse

  • Competitive feeds for rule-based pricing engines

  • Batch comparisons of key SKUs vs top competitors

API Request Format

GET request.

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

    • }

  • }

Did this answer your question?