> 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 Price Records by Variant

GET https://api.bigcommerce.com/stores/{store_hash}/v3/pricelists/{price_list_id}/records/{variant_id}

Returns *Price List Records* using the variant ID. Will also contain currency records.

**Notes**
* Supports up to 40 simultaneous GET requests. Running more than the allowed number of requests concurrently on the same store will result in a `429` status error, and your additional requests will fail.
* Store Pricelist Records data to reduce the number of calls and maximize performance.


Reference: https://docs.bigcommerce.com/developer/api-reference/rest/admin/management/price-lists/price-lists-records/get-price-list-records-by-variant-id

## Authentication

- `X-Auth-Token` header (required) — ### OAuth scopes | UI Name | Permission | Parameter | |:--------|:-----------|:----------| | Products | modify | `store_v2_products` | | Products | read-only | `store_v2_products_read_only` | ### Authentication header | 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#api-accounts). | ### Further reading 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).

## Request

### Path parameters

- `price_list_id` (integer, required) — The ID of the `Price List` requested.
- `variant_id` (integer, required) — ID of the variant on a product, or on an associated Price List Record.
- `store_hash` (string, required) — Permanent ID of the BigCommerce store.

### Query parameters

- `include` (list of enum, optional) — Sub-resources to include on a price record, in a comma-separated list. Valid expansions currently include `bulk_pricing_tiers` and `sku`. Other values will be ignored.
  - Allowed values: `bulk_pricing_tiers`, `sku`
- `page` (integer, optional) — Specifies the page number in a limited (paginated) list of products.
- `limit` (integer, optional) — Controls the number of items per page in a limited (paginated) list of products. If you provide only a limit, the API returns both paginations while applying that limit.
- `before` (string, optional) — A cursor that can be used for backwards pagination. Will fetch results before the position corresponding to the cursor. Cannot be used with the 'page' query parameter. Cannot be used with the 'after' query parameter.
- `after` (string, optional) — A cursor that can be used for forwards pagination. Will fetch results after the position corresponding to the cursor. Cannot be used with the 'page' query parameter. Cannot be used with the 'before' query parameter.

### Headers

- `Accept` (string, required, default: application/json) — The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response body.

## Response

### 200

OK

- `data` (list of PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaDataItems, optional)
- `meta` (PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaMeta, optional) — 'Contains data about paginating the response via cursors. If no pagination details are specified or if you only provide a limit, then both properties will be present. When a 'before' or 'after' cursor is provided, only the 'cursor_pagination' property will be present. When a 'page' parameter is provided, only the offset based 'pagination' property will be present.'

## Errors

### 429 Too Many Requests Error

Allowed number of requests exceeded.

- `status` (integer, optional) — The HTTP status code.
- `title` (string, optional) — The error title describing the particular error.
- `type` (string, optional)
- `instance` (string, optional)
- `errors` (ErrorResponseErrors, optional)

## Types

### PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaDataItems

The Price Record object.

- `calculated_price` (double, optional) — The price of the variant as seen on the storefront if a price record is in effect. It will be equal to the `sale_price`, if set, and the `price` if there is not a `sale_price`. Read only.
- `date_created` (datetime, optional) — The date on which the Price entry was created.
- `date_modified` (datetime, optional) — The date on which the Price entry was created.
- `product_id` (integer, optional) — The ID of the `Product` this `Price Record`ʼs `variant_id` is associated with. Read only.
- `price_list_id` (integer, optional) — The Price List with which this price set is associated.
- `variant_id` (integer, optional) — The variant ID with which this price set is associated. Either `variant_id` or `sku` is required.
- `sku` (string, optional) — The SKU code associated with this `Price Record` if requested and it exists.
- `currency` (string, optional) — The 3-letter currency code with which this price set is associated.
- `price` (double, optional) — The list price for the variant mapped in a Price List. Overrides any existing or Catalog list price for the variant/product.
- `sale_price` (double, optional) — The sale price for the variant mapped in a Price List. Overrides any existing or Catalog sale price for the variant/product. If empty, the sale price will be treated as not being set on this variant.
- `retail_price` (double, optional) — The retail price for the variant mapped in a Price List. Overrides any existing or Catalog retail price for the variant/product. If empty, the retail price will be treated as not being set on this variant.
- `map_price` (double, optional) — The MAP (Minimum Advertised Price) for the variant mapped in a Price List. Overrides any existing or Catalog MAP price for the variant/product. If empty, the MAP price will be treated as not being set on this variant.
- `bulk_pricing_tiers` (list of PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaDataItemsBulkPricingTiersItems, optional)

### PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaMeta

'Contains data about paginating the response via cursors. If no pagination details are specified or if you only provide a limit, then both properties will be present. When a 'before' or 'after' cursor is provided, only the 'cursor_pagination' property will be present. When a 'page' parameter is provided, only the offset based 'pagination' property will be present.'

- `pagination` (PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaMetaPagination, optional) — Data related to the response, including pagination and collection totals.
- `cursor_pagination` (PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaMetaCursorPagination, optional) — Data about cursor pagination.

### ErrorResponseErrors

### PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaDataItemsBulkPricingTiersItems

- `quantity_min` (integer, optional) — The minimum quantity of associated variant in the cart needed to qualify for this tiers pricing.
- `quantity_max` (integer, optional) — The maximum allowed quantity of associated variant in the cart to qualify for this tiers pricing.
- `type` (enum, optional) — The type of adjustment that is made. Acceptable values: price – the adjustment amount per product; percent – the adjustment as a percentage of the original price; fixed – the adjusted absolute price of the product.
  - Allowed values: `fixed`, `price`, `percent`
- `amount` (double, optional) — The price adjustment amount. This value along with the type will decide the price per variant for the pricing tier.

### PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaMetaPagination

Data related to the response, including pagination and collection totals.

- `total` (integer, optional) — Total number of items in the result set.
- `count` (integer, optional) — Total number of items in the collection response.
- `per_page` (integer, optional) — The amount of items returned in the collection per page, controlled by the limit parameter.
- `current_page` (integer, optional) — The page you are currently on within the collection.
- `total_pages` (integer, optional) — The total number of pages in the collection.

### PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaMetaCursorPagination

Data about cursor pagination.

- `count` (integer, optional) — Total number of items in the collection response.
- `per_page` (integer, optional) — The number of items that can be returned per page, determined by the limit parameter—whether explicitly set, defaulted, or capped at the maximum limit.
- `start_cursor` (string, optional) — A string representing the starting point of the current page in the collection.
- `end_cursor` (string, optional) — A string representing the ending point of the current page in the collection.
- `links` (PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaMetaCursorPaginationLinks, optional) — Pagination links for the previous and next parts of the whole collection.

### PricelistsPriceListIdRecordsVariantIdGetResponsesContentApplicationJsonSchemaMetaCursorPaginationLinks

Pagination links for the previous and next parts of the whole collection.

- `previous` (string, optional) — Link to the previous page returned in the response.
- `current` (string, optional) — Link to the current page returned in the response.
- `next` (string, optional) — Link to the next page returned in the response.

## Examples

**Response**

```json
{
  "data": [
    {
      "calculated_price": 24.64,
      "date_created": "2022-08-23T19:59:23Z",
      "date_modified": "2022-08-23T19:59:23Z",
      "product_id": 158,
      "price_list_id": 2,
      "variant_id": 325,
      "sku": "SMB-123",
      "currency": "usd",
      "price": 3.99,
      "sale_price": 5.99,
      "retail_price": 6.99,
      "map_price": 5.99,
      "bulk_pricing_tiers": [
        {
          "quantity_min": 1,
          "quantity_max": 10,
          "type": "price",
          "amount": 3
        }
      ]
    }
  ],
  "meta": {
    "pagination": {
      "total": 36,
      "count": 36,
      "per_page": 50,
      "current_page": 1,
      "total_pages": 1
    },
    "cursor_pagination": {
      "count": 1,
      "per_page": 1,
      "start_cursor": "string",
      "end_cursor": "string",
      "links": {
        "previous": "string",
        "current": "string",
        "next": "string"
      }
    }
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v3/pricelists/1/records/1"

headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>"
}

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

print(response.json())
```

```javascript
const url = 'https://api.bigcommerce.com/stores/store_hash/v3/pricelists/1/records/1';
const options = {
  method: 'GET',
  headers: {Accept: 'application/json', '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
package main

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

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v3/pricelists/1/records/1"

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

	req.Header.Add("Accept", "application/json")
	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
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v3/pricelists/1/records/1")

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

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

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

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.bigcommerce.com/stores/store_hash/v3/pricelists/1/records/1")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.bigcommerce.com/stores/store_hash/v3/pricelists/1/records/1', [
  'headers' => [
    'Accept' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v3/pricelists/1/records/1");
var request = new RestRequest(Method.GET);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v3/pricelists/1/records/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()
```