> This page is for Developer.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.bigcommerce.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.bigcommerce.com/_mcp/server.

# List Shopping Lists

GET https://api-b2b.bigcommerce.com/api/v3/io/shopping-list

Get a list of shopping lists viewable based on user permissions of a buyer user ID.

A junior buyer can see all of the lists they create and no one else's.

A senior buyer or admin can see all of the companies approved or ready for approval lists. This would include lists sent by junior buyers.

Reference: https://docs.bigcommerce.com/developer/api-reference/rest/b2b/management/shopping-list/get-shopping-list

## Authentication

- `X-Auth-Token` header (required) — | Header | Argument | Description | |:-------|:---------|:------------| | `X-Auth-Token` | `access_token` | For more about API accounts that generate `access_token`s, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts). | For example requests and more information about authenticating BigCommerce APIs, see [Authentication and Example Requests](/developer/docs/overview/api-fundamentals/api-accounts#x-auth-token-header-example-requests). For more about BigCommerce OAuth scopes, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts#oauth-scopes). For a list of API status codes, see [API Status Codes](/developer/api-reference/rest/overview#rest-http-status-codes).
- `X-Store-Hash` header (required) — | Header | Argument | Description | |:-------|:---------|:------------| | `X-Store-Hash` | `store_hash` | The unique store hash associated with a BigCommerce store that has B2B Edition enabled. |

## Request

### Query parameters

- `userId` (integer, required) — B2B Edition buyer user ID (Either userId or customerId must be passed, but not both.)
- `limit` (integer, optional, default: 10) — Pagination limit default: 10
- `offset` (integer, optional) — Pagination offset default: 0
- `channelId` (double, optional) — BigCommerce channel ID
- `customerId` (integer, required) — BigCommerce customer ID (Either userId or customerId must be passed, but not both.)
- `createdUserId` (integer, optional) — B2B Edition buyer user ID, if the userId has permissions to view all shopping lists of the company, entering this parameter will filter out the shopping lists created by that user.

## Response

### 200

OK

- `code` (integer, optional) — Response code of success request.
- `meta` (ShoppingListGetResponsesContentApplicationJsonSchemaMeta, optional) — Used to response pagination information
- `data` (list of ShoppingListGetResponsesContentApplicationJsonSchemaDataItems, optional)

## Errors

### 422 Unprocessable Entity Error

Parameter Error

- `code` (double, required) — response status code
- `data` (ShoppingListGetResponsesContentApplicationJsonSchemaData, required)
- `meta` (ShoppingListGetResponsesContentApplicationJsonSchemaMeta, required)

## Types

### ShoppingListGetResponsesContentApplicationJsonSchemaMeta

- `message` (string, required) — error information

### ShoppingListGetResponsesContentApplicationJsonSchemaDataItems

### ShoppingListGetResponsesContentApplicationJsonSchemaData

- `errMsg` (ShoppingListGetResponsesContentApplicationJsonSchemaDataErrMsg, required) — Error detail information for some parameters.

### shopping_list

- `status` (enum, required) — status of shopping list, (0: approved, 20: deleted, 30: draft, 40: ready for approval)
  - Allowed values: `0`, `30`, `40`
- `id` (integer, optional)
- `name` (string, optional) — The name for shopping list.
- `description` (string, optional) — The description information for shopping list.
- `companyId` (integer, optional) — The ID for shopping list owner company.
- `userId` (integer, optional) — ID for shopping list creator
- `createdAt` (integer, optional) — shopping list create time
- `updatedAt` (integer, optional) — update time for shopping list
- `channelId` (double, optional) — BigCommerce channel ID
- `channelName` (string, optional) — Store Channel name

### shopping_list_b2c

Returned when the shopping list belongs to a B2C customer, identified in the request by `customerId` rather than `userId`. B2C shopping lists have no `companyId`, `userId`, or `status`.

- `id` (integer, optional)
- `name` (string, optional) — The name for shopping list.
- `description` (string, optional) — The description information for shopping list.
- `createdAt` (integer, optional) — The shopping list create time.
- `updatedAt` (integer, optional) — The update time for shopping list.
- `channelId` (double, optional) — The BigCommerce channel ID.
- `channelName` (string, optional) — Store Channel name

### ShoppingListGetResponsesContentApplicationJsonSchemaDataErrMsg

Error detail information for some parameters.

## Examples

**Response**

```json
{
  "code": 200,
  "meta": {
    "message": "SUCCESS",
    "pagination": {
      "limit": 10,
      "offset": 0,
      "totalCount": 1
    }
  },
  "data": [
    {
      "channelId": 1,
      "channelName": "string",
      "companyId": 1,
      "createdAt": 1631495936,
      "description": "this is my first shopping list",
      "id": 1,
      "name": "my first shopping list",
      "status": 0,
      "updatedAt": 1631495936,
      "userId": 12
    }
  ]
}
```

**SDK Code**

```python example-1
import requests

url = "https://api-b2b.bigcommerce.com/api/v3/io/shopping-list"

querystring = {"customerId":"1","userId":"1"}

headers = {"X-Auth-Token": "<apiKey>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript example-1
const url = 'https://api-b2b.bigcommerce.com/api/v3/io/shopping-list?customerId=1&userId=1';
const options = {method: 'GET', headers: {'X-Auth-Token': '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go example-1
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api-b2b.bigcommerce.com/api/v3/io/shopping-list?customerId=1&userId=1"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("X-Auth-Token", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby example-1
require 'uri'
require 'net/http'

url = URI("https://api-b2b.bigcommerce.com/api/v3/io/shopping-list?customerId=1&userId=1")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["X-Auth-Token"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java example-1
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api-b2b.bigcommerce.com/api/v3/io/shopping-list?customerId=1&userId=1")
  .header("X-Auth-Token", "<apiKey>")
  .asString();
```

```php example-1
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api-b2b.bigcommerce.com/api/v3/io/shopping-list?customerId=1&userId=1', [
  'headers' => [
    'X-Auth-Token' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp example-1
using RestSharp;

var client = new RestClient("https://api-b2b.bigcommerce.com/api/v3/io/shopping-list?customerId=1&userId=1");
var request = new RestRequest(Method.GET);
request.AddHeader("X-Auth-Token", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift example-1
import Foundation

let headers = ["X-Auth-Token": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api-b2b.bigcommerce.com/api/v3/io/shopping-list?customerId=1&userId=1")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```