🔗Public APIs for Custom Pricing (CP)
The Custom Pricing Public API is a feature of the B2B/Wholesale Solution Shopify app. It allows developers to manage and sync customer-specific pricing rules directly from external systems such as ERPs, CRMs, or custom integrations.
⚙️ Requirements
Install the B2B/Wholesale Solution Shopify app
Upgrade to the Platinum plan
Obtain your Access Key
These are REST APIs — you can use them to:
Manage customer pricing rules
Calculate variant prices based on active rules
Retrieve product and customer data
Automate B2B price synchronization
🔑 How to Get Your Access Key
Install the B2B/Wholesale Solution app from Shopify.
Navigate to the Public API page inside the app.
Click Copy to copy your Access Key.
Include it in every API request body.
🧱 Rule Endpoints
Before using the endpoints, familiarize yourself with the Rule model fields below.
priority
Determines which rule takes precedence over others.
Integer
status
Activation status of the rule.
0: Inactive
1: Active
apply_to
Defines which customers the rule applies to.
0: All customers
1: Logged-in customers
2: Not-logged-in customers
3: Specific customers
4: Customer tags
exclude_customer
Exclude rules for certain customers.
0: None
1: Customer tags
2: Specific customers
product_condition_type
Determines which products are targeted.
0: All products
1: Specific products
2: Product collections
3: Product tags
4: Specific variants
exc_product_type
Excludes certain products from the rule.
0: None
1: Specific products
2: Product collections
3: Product tags
4: Specific variants
discount_type
Discount method to apply.
0: Apply a fixed price
1: Subtract a fixed amount
2: Subtract a percentage (%)
market_condition_type
Determines which markets the rule applies to.
0: All markets
1: Specific markets
📘 Get Rules by Domain
Endpoint
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-by-domainHeaders
Content-Type: application/jsonRequest Body
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx"
}Response
{
  "success": true,
  "rules": [
    {
      "id": 536662,
      "shop_id": 9204,
      "name": "Discount 20%l",
      "priority": 1,
      "status": 1,
      "apply_to": 0,
      "customer_ids": [],
      "customer_tags": [],
      "product_condition_type": 4,
      "variant_ids": ["6586590625965", "6586590658733", "6586590691501"],
      "discount_type": 2,
      "discount_value": "10.00",
      "market_condition_type": 1,
      "market_ids": ["49314136349"],
      "createdAt": "2023-03-09T03:38:50.000Z",
      "updatedAt": "2023-06-15T02:16:47.000Z"
    },
    {
      "id": 545507,
      "name": "test4",
      "status": 0,
      "apply_to": 3,
      "customer_ids": ["6819529654557", "6905095291165"],
      "product_ids": ["8174450049309"],
      "discount_type": 0,
      "discount_value": "50.00",
      "market_condition_type": 0
    }
  ]
}📗 Get Rule by ID
Endpoint
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-by-idRequest Body
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "id": 79
}Response
{
  "success": true,
  "rule": {
    "id": 79,
    "name": "Discount 20%l",
    "priority": 1,
    "status": 1,
    "apply_to": 0,
    "variant_ids": ["6586590625965", "6586590658733", "6586590691501"],
    "discount_type": 2,
    "discount_value": "10.00",
    "market_condition_type": 1,
    "market_ids": ["49314136349"]
  }
}📕 Get Rules by Products
Endpoint
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-rules-by-productsRequest Body
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "product_ids": [7208233467979, 7208233467980],
  "product_tags": ["b2b", "pants"]
}You can get rules either by product IDs or product tags.
Response
{
  "success": true,
  "data": [
    { "productId": "8249126813999", "ruleId": 40, "ruleName": "VIP group", "appliedPrice": 27100 },
    { "productId": "8249222791471", "ruleId": 40, "ruleName": "VIP group", "appliedPrice": 63.5 }
  ]
}📙 Get Rules by Customers
Endpoint
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-rules-by-customersRequest Body
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "customer_ids": [7208233467979, 7208233467980],
  "customer_tags": ["b2b", "pants"]
}You can get rules by customer IDs or customer tags.
Response
{
  "success": true,
  "data": [
    {
      "customerId": "6764123291723",
      "rules": [
        { "ruleId": 2151079182, "ruleName": "Wholesale", "customerTags": ["b2b"] }
      ]
    }
  ]
}✏️ Create or Update a Single Rule
Endpoint
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/saveIf no
idis provided, a new rule is created. Ifidexists, the existing rule is updated.
Request Body
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "rule": {
    "name": "Test rule",
    "priority": 1,
    "status": 0,
    "apply_to": 1,
    "product_condition_type": 4,
    "product_ids": ["5460196589730"],
    "discount_type": 2,
    "discount_value": "40",
    "exc_product_variants": [44531061752093, 45056544342301]
  }
}Response
{
  "success": true,
  "message": "Create the rule successfully",
  "ruleId": 11
}✨ Create or Update Multiple Rules
Endpoint
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/bulk-saveRequest Body
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "rules": [
    {
      "name": "sencond1",
      "priority": 0,
      "status": 1,
      "discount_type": 2,
      "discount_value": 10.0
    },
    {
      "id": 545507,
      "name": "test4",
      "status": 0,
      "discount_type": 0,
      "discount_value": "50.00",
      "exc_product_tags": ["b2b", "wholesale"]
    }
  ]
}Response
{
  "success": true,
  "message": [
    "Create new rule 'sencond1' with ID 214780831 successfully",
    "Update rule 'test4' with ID 545507 successfully"
  ]
}❌ Delete a Rule
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/deleteBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "id": 79
}Response
{
  "success": true,
  "message": "Deleted rule ID 79 successfully"
}🗑️ Delete Multiple Rules
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/mass-deleteBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "ids": [79, 80, 81]
}Response
{
  "success": true,
  "message": "Deleted multiple rule successfully"
}🧹 Remove Existing Products from Rules
PUT https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/delete-itemsRequest Body
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "rules": [
    {
      "id": 2,
      "product_condition_type": 1,
      "product_ids": ["8746948329722", "8746948821242"]
    }
  ]
}Response (Success)
{
  "success": true,
  "message": "Success",
  "data": {
    "success": ["Update rule with id 2 success"],
    "failed": []
  }
}Response (Error)
{
  "message": "Fail",
  "data": {
    "failed": [
      { "rule_id": 3, "errors": ["Invalid product_condition_type", "product_ids must be array"] }
    ]
  }
}🧾 Get Applied Rules for Products
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-products-applied-rulesIf
customer_idisnull, the system checks rules that apply to all or not-logged-in customers.
Request Body
{
  "domain": "abc.myshopify.com",
  "product_ids": [6586590625965, 6586590658733],
  "customer_id": 5127974846637,
  "accessKey": "xxxx"
}Response
{
  "success": true,
  "productsAppliedRule": [
    { "id": "6586590625965", "discount_type": 2, "value": "10.00", "name": "Discount 30%" }
  ]
}💰 Get Variant Price List Based on Rules
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-variants-price-listRequest Body
{
  "domain": "abc.myshopify.com",
  "product_ids": [6586590625965, 6586590658733],
  "customer_id": 5127974846637,
  "accessKey": "xxx"
}Response
{
  "success": true,
  "priceList": [
    {
      "id": "6586590625965",
      "discount_type": 2,
      "value": "10.00",
      "name": "Discount 30%",
      "variants": [
        {
          "id": "39454422368429",
          "price": "70",
          "compareAtPrice": "85",
          "appliedRulePrice": 63
        }
      ]
    }
  ]
}🧭 Product Endpoints
All product endpoints follow the same pattern — domain + accessKey required.
Search Products
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/searchCursor
afterIndex indicates where to continue fetching.
If null, search starts from the beginning.
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "afterIndex": null,
  "first": 20,
  "searchQuery": "ocean"
}Get Product Tags
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/get-tags{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx"
}Get Products by Tags
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/get-by-tags"operation": "AND"→ all tags must match"operation": "OR"→ any tag matches
Get Products by IDs
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/get-by-ids👥 Customer Endpoints
Search Customers
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/searchGet Customer Tags
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/get-tagsGet Customers by IDs
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/get-by-idsGet Customers by Tags
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/get-by-tags
"operation": "AND"→ must contain all tags"operation": "OR"→ contain any tag
📚 Collection Endpoints
Note: The “Get Collections” endpoint currently returns a
customersarray — behavior is identical to/customer/search.
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/search⚙️ Request Handling Policy
Requests are processed one at a time.
A new request starts only after the previous one completes.
If a server error occurs, please wait up to 3 minutes before retrying.
Would you like me to format this as a Markdown developer doc (with copyable code blocks and collapsible sections like Shopify’s API reference style)? It’ll be perfect for publishing to your docs site.
You said:
Yes, help me Markdown developer doc (with copyable code blocks and collapsible sections like Shopify’s API reference style
ChatGPT said:
Thought for 4 seconds
Below is a publish-ready Markdown developer doc you can drop straight into your docs site.
It uses collapsible sections (<details><summary>…</summary>) like Shopify’s docs and keeps your technical content 100% accurate.
B2B & Wholesale Custom Pricing Public API for Shopify Stores
The Custom Pricing Public API is a feature of the B2B/Wholesale Solution Shopify app.
Requirements
App installed
Platinum plan
Access Key (from the app’s Public API page → Copy)
These REST APIs let you:
Manage customer pricing rules
Calculate variant prices based on active rules
Search customers & get products
🔑 Get the Access Key
Open the B2B/Wholesale Solution app in Shopify.
Go to Public API.
Click Copy to copy your accessKey.
Include it in every request body.
📦 Rule Endpoints
Rule Model Reference
<details> <summary><strong>Fields & Enumerations</strong></summary>
priority — determines which rule wins when multiple rules apply.
status
0: inactive
1: activeapply_to
0: All customers
1: Logged-in customers
2: Not-logged-in customers
3: Specific customers
4: Customer tagsexclude_customer
0: None
1: Customer tags
2: Specific customersproduct_condition_type
0: All products
1: Specific products
2: Product collections
3: Product tags
4: Specific variantsexc_product_type
0: None
1: Specific products
2: Product collections
3: Product tags
4: Specific variantsdiscount_type
0: Apply a price to selected products
1: Decrease a fixed amount of the original prices of selected products
2: Decrease the original prices of selected products by a percentage (%)market_condition_type
0: All markets
1: Specific markets</details>
Get Rules by Domain
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-by-domain
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx"
}Response (example)
{
  "success": true,
  "rules": [
    {
      "id": 536662,
      "shop_id": 9204,
      "name": "Discount 20%l",
      "priority": 1,
      "status": 1,
      "apply_to": 0,
      "customer_ids": [],
      "customer_tags": [],
      "product_condition_type": 4,
      "product_ids": [],
      "variant_ids": [
        "6586590625965",
        "6586590658733",
        "6586590691501"
      ],
      "product_collections": [],
      "product_tags": [],
      "discount_type": 2,
      "discount_value": "10.00",
      "published_at": null,
      "unpublished_at": null,
      "date_rule_type": 0,
      "start_date": null,
      "end_date": null,
      "exc_customer_tags": "",
      "exclude_from": 0,
      "exc_customers": "",
      "market_condition_type": 1,
      "market_ids": ["49314136349"],
      "file_theme_index": 0,
      "createdAt": "2023-03-09T03:38:50.000Z",
      "updatedAt": "2023-06-15T02:16:47.000Z"
    },
    {
      "id": 545507,
      "shop_id": 9204,
      "name": "test4",
      "priority": 0,
      "status": 0,
      "apply_to": 3,
      "customer_ids": [
        "6819529654557",
        "6905095291165"
      ],
      "customer_tags": [],
      "product_condition_type": 0,
      "product_ids": ["8174450049309"],
      "product_collections": [],
      "product_tags": [],
      "discount_type": 0,
      "discount_value": "50.00",
      "published_at": null,
      "unpublished_at": null,
      "date_rule_type": 0,
      "start_date": null,
      "end_date": null,
      "exc_customer_tags": "",
      "exclude_from": 0,
      "exc_customers": "",
      "market_condition_type": 0,
      "market_ids": [],
      "file_theme_index": 0,
      "createdAt": "2023-03-15T07:33:24.000Z",
      "updatedAt": "2023-06-05T01:59:50.000Z"
    }
  ]
}Get Rule by ID
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-by-id
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "id": 79
}Response (example)
{
  "success": true,
  "rule": {
    "id": 79,
    "name": "Discount 20%l",
    "priority": 1,
    "status": 1,
    "apply_to": 0,
    "customer_ids": [],
    "customer_tags": [],
    "exclude_from": 0,
    "exc_customers": [],
    "exc_customer_tags": [],
    "product_condition_type": 4,
    "product_ids": [],
    "variant_ids": [
      "6586590625965",
      "6586590658733",
      "6586590691501"
    ],
    "product_collections": [],
    "product_tags": [],
    "market_condition_type": 1,
    "market_ids": ["49314136349"],
    "discount_type": 2,
    "discount_value": "10.00",
    "start_date": null,
    "end_date": null
  }
}Get Rules by Products
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-rules-by-products
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "product_ids": [7208233467979, 7208233467980],
  "product_tags": ["b2b", "pants"]
}You can choose to get rules by product IDs or product tags.
Response (example)
{
  "success": true,
  "data": [
    {
      "productId": "8249126813999",
      "ruleId": 40,
      "ruleName": "VIP group",
      "appliedPrice": 27100
    },
    {
      "productId": "8249222791471",
      "ruleId": 40,
      "ruleName": "VIP group",
      "appliedPrice": 63.5
    }
  ]
}Get Rules by Customers
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-rules-by-customers
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "customer_ids": [7208233467979, 7208233467980],
  "customer_tags": ["b2b", "pants"]
}You can choose to get rules by either customer IDs or customer tags.
Response (example)
{
  "success": true,
  "data": [
    {
      "customerId": "6764123291723",
      "rules": [
        {
          "ruleId": 2151079182,
          "ruleName": "Wholesale",
          "customerTags": ["b2b"]
        }
      ]
    },
    {
      "customerId": "7196156198987",
      "rules": [
        {
          "ruleId": 2151079182,
          "ruleName": "Wholesale",
          "customerTags": ["b2b"]
        }
      ]
    },
    {
      "customerId": "7905261387851",
      "rules": [
        {
          "ruleId": 2151079182,
          "ruleName": "Wholesale",
          "customerTags": ["b2b"]
        }
      ]
    }
  ]
}Create or Update a Single Rule
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/save
Headers
Content-Type: application/jsonBody
If there is no
id, a new rule is created. If there is anid, that rule is updated.
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "rule": {
    "name": "Test rule",
    "priority": 1,
    "status": 0,
    "apply_to": 1,
    "product_condition_type": 4,
    "customer_ids": [],
    "customer_tags": [],
    "product_ids": ["5460196589730"],
    "variant_ids": [],
    "product_collections": [],
    "product_tags": [],
    "discount_type": 2,
    "discount_value": "40",
    "exclude_from": 0,
    "exc_customers": ["5462063382693"],
    "exc_customer_tags": [],
    "exc_product_type": 4,
    "exc_specific_products": [],
    "exc_product_tags": [],
    "exc_product_collections": [],
    "exc_product_variants": [
      44531061752093,
      45056544342301
    ],
    "market_condition_type": 0,
    "market_ids": []
  }
}Response (example)
{
  "success": true,
  "message": "Create the rule successfully",
  "ruleId": 11
}Create or Update Multiple Rules
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/bulk-save
Headers
Content-Type: application/jsonBody
If there is no
id, a rule is created. If anidexists, that rule is updated.
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "rules": [
    {
      "name": "sencond1",
      "priority": 0,
      "status": 1,
      "apply_to": 0,
      "product_condition_type": 0,
      "customer_ids": [],
      "customer_tags": [],
      "product_ids": [],
      "variant_ids": [],
      "product_collections": [],
      "product_tags": [],
      "exc_customer_tags": "",
      "exclude_from": 0,
      "exc_customers": "",
      "exc_product_type": 0,
      "exc_specific_products": [],
      "exc_product_tags": [],
      "exc_product_collections": [],
      "exc_product_variants": [],
      "discount_type": 2,
      "discount_value": 10.00,
      "date_rule_type": 0,
      "start_date": null,
      "end_date": null,
      "market_condition_type": 0,
      "market_ids": null
    },
    {
      "id": 545507,
      "name": "test4",
      "priority": 0,
      "status": 0,
      "apply_to": 3,
      "customer_ids": [
        "6819529654557",
        "6905095291165"
      ],
      "customer_tags": [],
      "product_condition_type": 0,
      "product_ids": ["8174450049309"],
      "variant_ids": [],
      "product_collections": [],
      "product_tags": [],
      "discount_type": 0,
      "discount_value": "50.00",
      "date_rule_type": 0,
      "start_date": null,
      "end_date": null,
      "exc_customer_tags": "",
      "exclude_from": 0,
      "exc_product_type": 3,
      "exc_specific_products": [],
      "exc_product_tags": ["b2b", "wholesale"],
      "exc_product_collections": [],
      "exc_product_variants": [],
      "exc_customers": "",
      "market_condition_type": 0,
      "market_ids": []
    }
  ]
}Response (example)
{
  "success": true,
  "message": [
    "Create new rule 'sencond1' with ID 214780831 successfully",
    "Update rule 'test4' with ID 545507 successfully"
  ]
}Delete Rule
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/delete
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "id": 79
}Response
{
  "success": true,
  "message": "Deleted rule ID 79 successfully"
}Delete Multiple Rules
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/mass-delete
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "ids": [79, 80, 81]
}Response
{
  "success": true,
  "message": "Deleted multiple rule successfully"
}Remove Existing Products from Rules
PUT https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/delete-items
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "rules": [
    {
      "id": 2,
      "product_condition_type": 1,
      "product_ids": [
        "8746948329722",
        "8746948821242",
        "7622399262970",
        "7622389432570"
      ],
      "product_collections": [],
      "product_tags": [],
      "product_variants": []
    },
    {
      "id": 3,
      "product_condition_type": 1,
      "product_ids": [
        "8746948329722",
        "8746948821242",
        "7622399262970",
        "7622389432570"
      ],
      "product_collections": [],
      "product_tags": [],
      "product_variants": []
    }
  ]
}Response (success)
{
  "success": true,
  "message": "Success",
  "data": {
    "success": ["Update rule with id 2 success"],
    "failed": []
  }
}Response (error)
{
  "message": "Fail",
  "data": {
    "success": [],
    "failed": [
      {
        "rule_id": 3,
        "errors": ["Invalid product_condition_type", "product_ids must be array"]
      }
    ]
  }
}Get Applied Rules for Products
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-products-applied-rules
Headers
Content-Type: application/jsonBody
If
customer_idisnull, the system checks Custom Pricing Rules that apply to all customers or not-logged-in customers.
{
  "domain": "abc.myshopify.com",
  "product_ids": [6586590625965, 6586590658733, 6586590691501],
  "customer_id": 5127974846637,
  "accessKey": "xxxx"
}Response (example)
{
  "success": true,
  "productsAppliedRule": [
    { "id": "6586590625965", "discount_type": 2, "value": "10.00", "name": "Discount 30%" },
    { "id": "6586590658733", "discount_type": 2, "value": "10.00", "name": "Discount 30%" },
    { "id": "6586590691501", "discount_type": 2, "value": "10.00", "name": "Discount 30%" }
  ]
}Get Price List of Variants based on Applied Rules
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-variants-price-list
Headers
Content-Type: application/jsonBody
If
customer_idisnull, the system checks Custom Pricing Rules that apply to all customers or not-logged-in customers.
{
  "domain": "abc.myshopify.com",
  "product_ids": [6586590625965, 6586590658733, 6586590691501],
  "customer_id": 5127974846637,
  "accessKey": "xxx"
}Response (example)
{
  "success": true,
  "priceList": [
    {
      "id": "6586590625965",
      "discount_type": 2,
      "value": "10.00",
      "name": "Discount 30%",
      "variants": [
        {
          "id": "39454422368429",
          "price": "70",
          "compareAtPrice": "85",
          "appliedRulePrice": 63
        },
        {
          "id": "39454422401197",
          "price": "55",
          "compareAtPrice": "85",
          "appliedRulePrice": 49.5
        }
      ]
    },
    {
      "id": "6586590658733",
      "discount_type": 2,
      "value": "10.00",
      "name": "Discount 30%",
      "variants": [
        {
          "id": "39454422433965",
          "price": "40",
          "compareAtPrice": "44",
          "appliedRulePrice": 36
        }
      ]
    },
    {
      "id": "6586590691501",
      "discount_type": 2,
      "value": "10.00",
      "name": "Discount 30%",
      "variants": [
        {
          "id": "39454422466733",
          "price": "43",
          "compareAtPrice": "45",
          "appliedRulePrice": 38.7
        }
      ]
    }
  ]
}🛍️ Product Endpoints
Search Products
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/search
Headers
Content-Type: application/jsonBody
afterIndexis a cursor. Ifnull, search starts from the beginning. Example cursor:eyJsYXN0X2lkIjo2NjU1NDU2Mzc5MDUzLCJsYXN0X3ZhbHVlIjo2NjU1NDU2Mzc5MDUzfQ==
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "afterIndex": null,
  "first": 20,
  "searchQuery": "ocean"
}Response (example)
{
  "success": true,
  "productList": {
    "edges": [
      {
        "node": {
          "id": "gid://shopify/Product/6586580271277",
          "title": "Ocean Blue Shirt",
          "handle": "ocean-blue-shirt",
          "productType": "",
          "totalVariants": 1,
          "hasOnlyDefaultVariant": true,
          "priceRange": {
            "minVariantPrice": { "currencyCode": "VND", "amount": "50.0" },
            "maxVariantPrice": { "currencyCode": "VND", "amount": "50.0" }
          },
          "featuredImage": {
            "transformedSrc": "https://cdn.shopify.com/s/files/1/0538/3874/1677/products/young-man-in-bright-fashion_925x_5251bcfa-6939-4d7a-9287-dd9bf058ed03.jpg?v=1616405807"
          },
          "onlineStoreUrl": null
        },
        "cursor": "eyJsYXN0X2lkIjo2NTg2NTgwMjcxMjc3LCJsYXN0X3ZhbHVlIjo2NTg2NTgwMjcxMjc3fQ=="
      },
      {
        "node": {
          "id": "gid://shopify/Product/6655456379053",
          "title": "Riri Bracelet",
          "handle": "riri-bracelet-rose",
          "productType": "women's bracelets",
          "totalVariants": 1,
          "hasOnlyDefaultVariant": false,
          "priceRange": {
            "minVariantPrice": { "currencyCode": "VND", "amount": "68.0" },
            "maxVariantPrice": { "currencyCode": "VND", "amount": "68.0" }
          },
          "featuredImage": {
            "transformedSrc": "https://cdn.shopify.com/s/files/1/0538/3874/1677/products/2015-04-20_Accessories_31_23500_21376.jpg?v=1619597977"
          },
          "onlineStoreUrl": null
        },
        "cursor": "eyJsYXN0X2lkIjo2NjU1NDU2Mzc5MDUzLCJsYXN0X3ZhbHVlIjo2NjU1NDU2Mzc5MDUzfQ=="
      }
    ],
    "pageInfo": { "hasNextPage": false, "hasPreviousPage": false }
  }
}Get Product Tags
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/get-tags
Headers
Content-Type: application/jsonBody
{ "domain": "abc.myshopify.com", "accessKey": "xxx" }Response (example)
{
  "success": true,
  "productTags": {
    "tags": [
      "cotton blouse",
      "Couch",
      "cowl",
      "cpace",
      "Crane",
      "cream",
      "crepe wool",
      "crew",
      "crew neck",
      "crewneck",
      "crisp"
    ],
    "last_cursor": "Y3Jpc3A="
  }
}Get Products by Tags
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/get-by-tags
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "afterIndex": null,
  "first": 20,
  "tags": ["tag1", "tags2", "t3"],
  "operation": "AND"
}
"AND"→ returned products must contain all tags."OR"→ returned products need any one tag in the array.
Response (example)
{
  "success": true,
  "productList": [
    {
      "id": "gid://shopify/Product/6586590625965",
      "title": "Anchor Bracelet Mens",
      "handle": "leather-anchor",
      "productType": "Bracelet",
      "totalVariants": 2,
      "hasOnlyDefaultVariant": false,
      "priceRange": {
        "minVariantPrice": { "currencyCode": "VND", "amount": "55.0" },
        "maxVariantPrice": { "currencyCode": "VND", "amount": "70.0" }
      },
      "featuredImage": {
        "transformedSrc": "https://cdn.shopify.com/s/files/1/0538/3874/1677/products/anchor-bracelet-mens_925x_8dcf313c-5c78-41ea-874d-59804d449315.jpg?v=1616407017"
      },
      "onlineStoreUrl": null
    }
  ]
}Get Products by IDs
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/get-by-ids
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "ids": [6586590625965]
}Response (example)
{
  "success": true,
  "productList": [
    {
      "id": "gid://shopify/Product/6586590625965",
      "title": "Anchor Bracelet Mens",
      "handle": "leather-anchor",
      "productType": "Bracelet",
      "totalVariants": 2,
      "hasOnlyDefaultVariant": false,
      "priceRange": {
        "minVariantPrice": { "currencyCode": "VND", "amount": "55.0" },
        "maxVariantPrice": { "currencyCode": "VND", "amount": "70.0" }
      },
      "featuredImage": {
        "transformedSrc": "https://cdn.shopify.com/s/files/1/0538/3874/1677/products/anchor-bracelet-mens_925x_8dcf313c-5c78-41ea-874d-59804d449315.jpg?v=1616407017"
      },
      "onlineStoreUrl": null
    }
  ]
}👤 Customer Endpoints
Search Customers
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/search
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "afterIndex": null,
  "first": 20,
  "searchQuery": "nta"
}Response (example)
{
  "success": true,
  "customers": [
    {
      "node": {
        "id": "gid://shopify/Customer/5127974846637",
        "displayName": "nta",
        "email": "[email protected]",
        "firstName": "n",
        "lastName": "ta",
        "phone": null,
        "tags": ["wholesale"],
        "note": ""
      },
      "cursor": "eyJsYXN0X2lkIjo1MTI3OTc0ODQ2NjM3LCJsYXN0X3ZhbHVlIjo1MTI3OTc0ODQ2NjM3fQ=="
    }
  ]
}Get Customer Tags
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/get-tags
Headers
Content-Type: application/jsonBody
{ "domain": "abc.myshopify.com", "accessKey": "xxx" }Response (example)
{
  "success": true,
  "customerTags": [
    { "node": "wholesale", "cursor": "d2hvbGVzYWxl" }
  ]
}Get Customers by IDs
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/get-by-ids
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "ids": [5127974846637]
}Response (example)
{
  "success": true,
  "customerList": [
    {
      "id": "gid://shopify/Customer/5127974846637",
      "displayName": "nta",
      "email": "[email protected]",
      "firstName": "n",
      "lastName": "ta"
    }
  ]
}Get Customers by Tags
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/get-by-tags
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "afterIndex": null,
  "first": 20,
  "tags": ["tag1", "tags2"],
  "operation": "AND"
}
"AND"→ returned products/customers must contain all tags."OR"→ returned products/customers need any tag in the array.
Response (example)
{
  "success": true,
  "customers": [
    {
      "node": {
        "id": "gid://shopify/Customer/5127974846637",
        "displayName": "nta",
        "email": "[email protected]",
        "firstName": "n",
        "lastName": "ta",
        "phone": null,
        "tags": ["wholesale"],
        "note": ""
      },
      "cursor": "eyJsYXN0X2lkIjo1MTI3OTc0ODQ2NjM3LCJsYXN0X3ZhbHVlIjo1MTI3OTc0ODQ2NjM3fQ=="
    }
  ]
}🗂️ Collection Endpoints
Note: As provided, Get Collections uses the
/customer/searchendpoint and returns acustomersarray.
POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/search
Headers
Content-Type: application/jsonBody
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "afterIndex": null,
  "first": 20,
  "searchQuery": "nta"
}Response (example)
{
  "success": true,
  "customers": [
    {
      "node": {
        "id": "gid://shopify/Customer/5127974846637",
        "displayName": "nta",
        "email": "[email protected]",
        "firstName": "n",
        "lastName": "ta",
        "phone": null,
        "tags": ["wholesale"],
        "note": ""
      },
      "cursor": "eyJsYXN0X2lkIjo1MTI3OTc0ODQ2NjM3LCJsYXN0X3ZhbHVlIjo1MTI3OTc0ODQ2NjM3fQ=="
    }
  ]
}⚙️ Request Handling Policy
The system handles one request at a time.
The next request starts after the current one completes.
If a server error occurs, it may take up to 3 minutes to recover and process a new request.
Last updated
Was this helpful?