---
title: ProductListing
description: >-
Manage the products that are available to your sales channel and retrieve
their information.
api_version: 2025-07
api_name: admin-rest
api_type: rest
source_url:
html: 'https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting'
md: 'https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md'
---

The REST Admin API is a legacy API as of October 1, 2024. Starting April 1, 2025, all new public apps must be built exclusively with the [GraphQL Admin API](https://shopify.dev/docs/api/admin-graphql). For details and migration steps, visit our [migration guide](https://shopify.dev/docs/apps/build/graphql/migrate).
# ProductListing
Multiple access scopes needed — refer to each endpoint for access scope requirements.
A ProductListing resource represents a [Product](https://shopify.dev/docs/admin-api/rest/reference/products/product) which is available to your sales channel. Merchants can make products available to your sales channel directly from their Shopify admin.
You can use this resource to retrieve products that a merchant has published and display them to customers in your marketplace for sale.
A ProductListing resource itself is unable to have its attributes modified directly. The attributes of a ProductListing are inherited from the Product resource to which it is associated. Therefore, all attributes of a ProductListing should be considered *read-only*.
A product can have one of the following statuses: `active`, `draft`, or `archived`. Draft and archived are considered non-active statuses. If you create a listing for a non-active product, then the product won't be published immediately. You must change the product status to active to make the product available on a sales channel.
If the product is sold exclusively on subscription, then you can create a listing for the product only on an online store.
\#
## Endpoints
* [get](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#get-product-listings)
[/admin/api/2025-07/product\_listings.json](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#get-product-listings)
Retrieve product listings that are published to your app
[](https://shopify.dev/docs/api/admin-graphql/latest/queries/products)
[products](https://shopify.dev/docs/api/admin-graphql/latest/queries/products)
* [get](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#get-product-listings-product-listing-id)
[/admin/api/2025-07/product\_listings/{product\_listing\_id}.json](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#get-product-listings-product-listing-id)
Retrieve a specific product listing that is published to your app
[](https://shopify.dev/docs/api/admin-graphql/latest/queries/product)
[product](https://shopify.dev/docs/api/admin-graphql/latest/queries/product)
* [get](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#get-product-listings-count)
[/admin/api/2025-07/product\_listings/count.json](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#get-product-listings-count)
Retrieve a count of products that are published to your app
[](https://shopify.dev/docs/api/admin-graphql/latest/queries/publishedProductsCount?example=retrieve-a-count-of-products-that-are-published-to-your-app)
[publishedProductsCount](https://shopify.dev/docs/api/admin-graphql/latest/queries/publishedProductsCount?example=retrieve-a-count-of-products-that-are-published-to-your-app)
* [get](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#get-product-listings-product-ids)
[/admin/api/2025-07/product\_listings/product\_ids.json](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#get-product-listings-product-ids)
Retrieve \product\_ids\
that are published to your app
[](https://shopify.dev/docs/api/admin-graphql/latest/queries/products)
[products](https://shopify.dev/docs/api/admin-graphql/latest/queries/products)
* [put](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#put-product-listings-product-listing-id)
[/admin/api/2025-07/product\_listings/{product\_listing\_id}.json](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#put-product-listings-product-listing-id)
Create a product listing to publish a product to your app
[](https://shopify.dev/docs/api/admin-graphql/latest/mutations/publishablePublish?example=create-a-product-listing-to-publish-a-product-to-your-app)
[publishablePublish](https://shopify.dev/docs/api/admin-graphql/latest/mutations/publishablePublish?example=create-a-product-listing-to-publish-a-product-to-your-app)
* [del](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#delete-product-listings-product-listing-id)
[/admin/api/2025-07/product\_listings/{product\_listing\_id}.json](https://shopify.dev/docs/api/admin-rest/2025-07/resources/productlisting.md#delete-product-listings-product-listing-id)
Delete a product listing to unpublish a product from your app
[](https://shopify.dev/docs/api/admin-graphql/latest/mutations/publishableUnpublish?example=delete-a-product-listing-to-unpublish-a-product-from-your-app)
[publishableUnpublish](https://shopify.dev/docs/api/admin-graphql/latest/mutations/publishableUnpublish?example=delete-a-product-listing-to-unpublish-a-product-from-your-app)
***
## The ProductListing resource
### Properties
***
product\_id
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.id)
[id](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.id)
The unique identifer of the product this listing is for. The primary key for this resource.
***
body\_html
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.descriptionHtml)
[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.descriptionHtml)
The description of the product, complete with HTML formatting.
***
created\_at
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.createdAt)
[createdAt](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.createdAt)
The date and time when the product was created. The API returns this in ISO 8601.
***
handle
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.handle)
[handle](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.handle)
A human-friendly unique string for the Product automatically generated from its title.
***
images
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.media)
[media](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.media)
A list of image objects, each one representing an image associated with the product.
***
options
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.options)
[options](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.options)
Custom product property names like "Size", "Color", and "Material".
***
product\_type
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.productType)
[productType](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.productType)
A categorization that a product can be tagged with, commonly used for filtering.
***
published\_at
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.publishedAt)
[publishedAt](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.publishedAt)
The date and time when the product was published. The API returns this in ISO 8601.
***
tags
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.tags)
[tags](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.tags)
A categorization that a product can be tagged with, commonly used for filtering.
***
title
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.title)
[title](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.title)
The name of the product.
***
updated\_at
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.updatedAt)
[updatedAt](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.updatedAt)
The date and time when the product was last modified. The API returns this in ISO 8601.
***
variants
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.variants)
[variants](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.variants)
A list of variant objects, each one representing a slightly different version of the product. For example, if a product comes in different sizes and colors, each size and color permutation (such as "small black", "medium black", "large blue"), would be a variant.
To reorder variants, update the product with the variants in the desired order. The position attribute on the variant will be ignored.
Show variants properties
* **barcode**: The barcode, UPC or ISBN number for the product.
* **compare\_at\_price**: The competitor's price for the same item.
* **created\_at**: The date and time when the product variant was created. The API returns this in ISO 8601.
* **fulfillment\_service**: Service which is handling fulfillment. Valid values are: `manual`, `gift_card`, or the handle of a [FulfillmentService](https://shopify.dev/docs/admin-api/rest/reference/shipping-and-fulfillment/fulfillmentservice).
* **grams**: The weight of the product variant in grams.
* **weight**: The weight of the product variant in the unit system specified with **weight\_unit**.
* **weight\_unit**: The unit system that the product variant's weight is measure in. The weight\_unit can be either "g", "kg, "oz", or "lb".
* **id**: The unique numeric identifier for the product variant.
* **inventory\_management**: Specifies whether or not Shopify tracks the number of items in stock for this product variant.
* **inventory\_policy**: Specifies whether or not customers are allowed to place an order for a product variant when it's out of stock.
* **inventory\_quantity**: The number of items available to the product listing for the product variant.
* **metafield**: Attaches additional information to a shop's resources.
* **option**: Custom properties that a shop owner can use to define product variants. Multiple options can exist. Options are represented as: `option1`, `option2`, `option3`, etc.
* **position**: The order of the product variant in the list of product variants. 1 is the first position. To reorder variants, update the product with the variants in the desired order. The position attribute on the variant will be ignored.
* **price**: The price of the product variant.
* **product\_id**: The unique numeric identifier for the product.
* **requires\_shipping**: Specifies whether or not a customer needs to provide a shipping address when placing an order for this product variant.
* **sku**: A unique identifier for the product in the shop.
* **taxable**: Specifies whether or not a tax is charged when the product variant is sold.
* **title**: The title of the product variant.
* **updated\_at**: The date and time when the product variant was last modified. The API returns this in ISO 8601.
***
vendor
read-only
->
[](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.vendor)
[vendor](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.vendor)
The name of the vendor of the product.
***
{}
## The ProductListing resource
```json
{
"product_id": {
"product_id": 1053727709
},
"body_html": "It's the small iPod with a big idea: Video.",
"created_at": "2012-02-15T15:12:21-05:00",
"handle": "ipod-nano",
"images": [
{
"src": "http://example.com/burton.jpg"
}
],
"options": [
{
"name": "Title"
}
],
"product_type": "Cult Products",
"published_at": "2007-12-31T19:00:00-05:00",
"tags": "Emotive, Flash Memory, MP3, Music",
"title": "IPod Nano - 8GB",
"updated_at": "2012-08-24T14:01:47-04:00",
"variants": {
"barcode": "1234_pink",
"compare_at_price": null,
"created_at": "2012-08-24T14:01:47-04:00",
"fulfillment_service": "manual",
"grams": 567,
"weight": 0.2,
"weight_unit": "kg",
"id": 808950810,
"inventory_management": "shopify",
"inventory_policy": "continue",
"inventory_quantity": 10,
"option1": "Pink",
"position": 1,
"price": 199.99,
"product_id": 632910392,
"requires_shipping": true,
"sku": "IPOD2008PINK",
"taxable": true,
"title": "Pink",
"updated_at": "2012-08-24T14:01:47-04:00"
},
"vendor": "Apple"
}
```
***
## getRetrieve product listings that are published to your app
[](https://shopify.dev/docs/api/admin-graphql/latest/queries/products)
[products](https://shopify.dev/docs/api/admin-graphql/latest/queries/products)
Requires `product_listings` access scope.
Retrieve product listings that are published to your app. **Note:** This endpoint implements pagination by using links that are provided in the response header. To learn more, refer to [Make paginated requests to the REST Admin API](https://shopify.dev/api/usage/pagination-rest).
### Parameters
***
api\_version
string
required
***
collection\_id
Filter by products belonging to a particular collection
***
handle
Filter by product handle
***
limit
≤ 1000
default 50
Amount of results
***
product\_ids
A comma-separated list of product ids
***
updated\_at\_min
Filter by product listings last updated after a certain date and time (formatted in ISO 8601)
***
### Examples
Retrieve product listings that are published to your app
get
## /admin/api/2025-07/product\_listings.json
```bash
curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings.json" \
-H "X-Shopify-Access-Token: {access_token}"
```
{}
## Response
JSON
```json
HTTP/1.1 200 OK
{
"product_listings": [
{
"product_id": 632910392,
"created_at": "2025-04-01T15:44:57-04:00",
"updated_at": "2025-04-01T15:44:57-04:00",
"body_html": "
It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.
", "handle": "ipod-nano", "product_type": "Cult Products", "title": "IPod Nano - 8GB", "vendor": "Apple", "available": true, "tags": "Emotive, Flash Memory, MP3, Music", "published_at": "2017-08-31T20:00:00-04:00", "variants": [ { "id": 808950810, "title": "Pink", "option_values": [ { "option_id": 594680422, "name": "Color", "value": "Pink" } ], "price": "199.00", "formatted_price": "$199.00", "compare_at_price": null, "grams": 567, "requires_shipping": true, "sku": "IPOD2008PINK", "barcode": "1234_pink", "taxable": true, "position": 1, "available": true, ``` ### examples * #### Retrieve product listings that are published to your app ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.ProductListing.all({ session: session, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::ProductListing.all( session: test_session, ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.ProductListing.all({ session: session, }); ``` #### response ```json HTTP/1.1 200 OK{"product_listings":[{"product_id":632910392,"created_at":"2025-04-01T15:44:57-04:00","updated_at":"2025-04-01T15:44:57-04:00","body_html":"It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.
","handle":"ipod-nano","product_type":"Cult Products","title":"IPod Nano - 8GB","vendor":"Apple","available":true,"tags":"Emotive, Flash Memory, MP3, Music","published_at":"2017-08-31T20:00:00-04:00","variants":[{"id":808950810,"title":"Pink","option_values":[{"option_id":594680422,"name":"Color","value":"Pink"}],"price":"199.00","formatted_price":"$199.00","compare_at_price":null,"grams":567,"requires_shipping":true,"sku":"IPOD2008PINK","barcode":"1234_pink","taxable":true,"position":1,"available":true,"inventory_policy":"continue","inventory_quantity":10,"inventory_management":"shopify","fulfillment_service":"manual","weight":1.25,"weight_unit":"lb","image_id":562641783,"created_at":"2025-04-01T15:44:57-04:00","updated_at":"2025-04-01T15:44:57-04:00"},{"id":49148385,"title":"Red","option_values":[{"option_id":594680422,"name":"Color","value":"Red"}],"price":"199.00","formatted_price":"$199.00","compare_at_price":null,"grams":567,"requires_shipping":true,"sku":"IPOD2008RED","barcode":"1234_red","taxable":true,"position":2,"available":true,"inventory_policy":"continue","inventory_quantity":20,"inventory_management":"shopify","fulfillment_service":"manual","weight":1.25,"weight_unit":"lb","image_id":null,"created_at":"2025-04-01T15:44:57-04:00","updated_at":"2025-04-01T15:44:57-04:00"},{"id":39072856,"title":"Green","option_values":[{"option_id":594680422,"name":"Color","value":"Green"}],"price":"199.00","formatted_price":"$199.00","compare_at_price":null,"grams":567,"requires_shipping":true,"sku":"IPOD2008GREEN","barcode":"1234_green","taxable":true,"position":3,"available":true,"inventory_policy":"continue","inventory_quantity":30,"inventory_management":"shopify","fulfillment_service":"manual","weight":1.25,"weight_unit":"lb","image_id":null,"created_at":"2025-04-01T15:44:57-04:00","updated_at":"2025-04-01T15:44:57-04:00"},{"id":457924702,"title":"Black","option_values":[{"option_id":594680422,"name":"Color","value":"Black"}],"price":"199.00","formatted_price":"$199.00","compare_at_price":null,"grams":567,"requires_shipping":true,"sku":"IPOD2008BLACK","barcode":"1234_black","taxable":true,"position":4,"available":true,"inventory_policy":"continue","inventory_quantity":40,"inventory_management":"shopify","fulfillment_service":"manual","weight":1.25,"weight_unit":"lb","image_id":null,"created_at":"2025-04-01T15:44:57-04:00","updated_at":"2025-04-01T15:44:57-04:00"}],"images":[{"id":850703190,"created_at":"2025-04-01T15:44:57-04:00","position":1,"updated_at":"2025-04-01T15:44:57-04:00","product_id":632910392,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano.png?v=1743536697","variant_ids":[],"width":123,"height":456},{"id":562641783,"created_at":"2025-04-01T15:44:57-04:00","position":2,"updated_at":"2025-04-01T15:44:57-04:00","product_id":632910392,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano-2.png?v=1743536697","variant_ids":[808950810],"width":123,"height":456},{"id":378407906,"created_at":"2025-04-01T15:44:57-04:00","position":3,"updated_at":"2025-04-01T15:44:57-04:00","product_id":632910392,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano.png?v=1743536697","variant_ids":[],"width":123,"height":456}],"options":[{"id":594680422,"name":"Color","product_id":632910392,"position":1,"values":["Pink","Red","Green","Black"]}]},{"product_id":921728736,"created_at":"2025-04-01T15:44:57-04:00","updated_at":"2025-04-01T15:44:57-04:00","body_html":"The iPod Touch has the iPhone's multi-touch interface, with a physical home button off the touch screen. The home screen has a list of buttons for the available applications.
","handle":"ipod-touch","product_type":"Cult Products","title":"IPod Touch 8GB","vendor":"Apple","available":true,"tags":"","published_at":"2017-08-31T20:00:00-04:00","variants":[{"id":447654529,"title":"Black","option_values":[{"option_id":891236591,"name":"Title","value":"Black"}],"price":"199.00","formatted_price":"$199.00","compare_at_price":null,"grams":567,"requires_shipping":true,"sku":"IPOD2009BLACK","barcode":"1234_black","taxable":true,"position":1,"available":true,"inventory_policy":"continue","inventory_quantity":13,"inventory_management":"shopify","fulfillment_service":"manual","weight":1.25,"weight_unit":"lb","image_id":null,"created_at":"2025-04-01T15:44:57-04:00","updated_at":"2025-04-01T15:44:57-04:00"}],"images":[],"options":[{"id":891236591,"name":"Title","product_id":921728736,"position":1,"values":["Black"]}]}]} ``` *** ## getRetrieve a specific product listing that is published to your app [](https://shopify.dev/docs/api/admin-graphql/latest/queries/product) [product](https://shopify.dev/docs/api/admin-graphql/latest/queries/product) Requires `product_listings` access scope. Retrieve a specific product listing that is published to your app ### Parameters *** api\_version string required *** product\_listing\_id string required *** ### Examples Retrieve a specific product listing that is published to your app Path parameters product\_listing\_id=921728736 string required get ## /admin/api/2025-07/product\_listings/921728736.json ```bash curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings/921728736.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "product_listing": { "product_id": 921728736, "created_at": "2025-04-01T15:44:57-04:00", "updated_at": "2025-04-01T15:44:57-04:00", "body_html": "The iPod Touch has the iPhone's multi-touch interface, with a physical home button off the touch screen. The home screen has a list of buttons for the available applications.
", "handle": "ipod-touch", "product_type": "Cult Products", "title": "IPod Touch 8GB", "vendor": "Apple", "available": true, "tags": "", "published_at": "2017-08-31T20:00:00-04:00", "variants": [ { "id": 447654529, "title": "Black", "option_values": [ { "option_id": 891236591, "name": "Title", "value": "Black" } ], "price": "199.00", "formatted_price": "$199.00", "compare_at_price": null, "grams": 567, "requires_shipping": true, "sku": "IPOD2009BLACK", "barcode": "1234_black", "taxable": true, "position": 1, "available": true, "inventory_policy": "continue", "inventory_quantity": 13, "inventory_management": "shopify", "fulfillment_service": "manual", "weight": 1.25, "weight_unit": "lb", "image_id": null, "created_at": "2025-04-01T15:44:57-04:00", "updated_at": "2025-04-01T15:44:57-04:00" } ], "images": [], "options": [ { "id": 891236591, "name": "Title", "product_id": 921728736, "position": 1, "values": [ "Black" ] } ] } } ``` ### examples * #### Retrieve a specific product listing that is published to your app ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings/921728736.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.ProductListing.find({ session: session, product_id: 921728736, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::ProductListing.find( session: test_session, product_id: 921728736, ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.ProductListing.find({ session: session, product_id: 921728736, }); ``` #### response ```json HTTP/1.1 200 OK{"product_listing":{"product_id":921728736,"created_at":"2025-04-01T15:44:57-04:00","updated_at":"2025-04-01T15:44:57-04:00","body_html":"The iPod Touch has the iPhone's multi-touch interface, with a physical home button off the touch screen. The home screen has a list of buttons for the available applications.
","handle":"ipod-touch","product_type":"Cult Products","title":"IPod Touch 8GB","vendor":"Apple","available":true,"tags":"","published_at":"2017-08-31T20:00:00-04:00","variants":[{"id":447654529,"title":"Black","option_values":[{"option_id":891236591,"name":"Title","value":"Black"}],"price":"199.00","formatted_price":"$199.00","compare_at_price":null,"grams":567,"requires_shipping":true,"sku":"IPOD2009BLACK","barcode":"1234_black","taxable":true,"position":1,"available":true,"inventory_policy":"continue","inventory_quantity":13,"inventory_management":"shopify","fulfillment_service":"manual","weight":1.25,"weight_unit":"lb","image_id":null,"created_at":"2025-04-01T15:44:57-04:00","updated_at":"2025-04-01T15:44:57-04:00"}],"images":[],"options":[{"id":891236591,"name":"Title","product_id":921728736,"position":1,"values":["Black"]}]}} ``` *** ## getRetrieve a count of products that are published to your app [](https://shopify.dev/docs/api/admin-graphql/latest/queries/publishedProductsCount?example=retrieve-a-count-of-products-that-are-published-to-your-app) [publishedProductsCount](https://shopify.dev/docs/api/admin-graphql/latest/queries/publishedProductsCount?example=retrieve-a-count-of-products-that-are-published-to-your-app) Requires `product_listings` access scope. Retrieve a count of products that are published to your app ### Parameters *** api\_version string required *** ### Examples Retrieve a count of products that are published to your app get ## /admin/api/2025-07/product\_listings/count.json ```bash curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings/count.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "count": 2 } ``` ### examples * #### Retrieve a count of products that are published to your app ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings/count.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.ProductListing.count({ session: session, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::ProductListing.count( session: test_session, ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.ProductListing.count({ session: session, }); ``` #### response ```json HTTP/1.1 200 OK{"count":2} ``` *** ## getRetrieve product\_ids that are published to your app [](https://shopify.dev/docs/api/admin-graphql/latest/queries/products) [products](https://shopify.dev/docs/api/admin-graphql/latest/queries/products) Retrieve `product_ids` that are published to your app. Maximum 1,000 results per page. ### Parameters *** api\_version string required *** limit ≤ 1000 default 50 Amount of results *** ### Examples Retrieve `product_ids` that are published to your app get ## /admin/api/2025-07/product\_listings/product\_ids.json ```bash curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings/product_ids.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "product_ids": [ 921728736, 632910392 ] } ``` ### examples * #### Retrieve \product\_ids\
that are published to your app
#####
```curl
curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings/product_ids.json" \
-H "X-Shopify-Access-Token: {access_token}"
```
#####
```remix
await admin.rest.resources.ProductListing.product_ids({
session: session,
});
```
#####
```ruby
# Session is activated via Authentication
test_session = ShopifyAPI::Context.active_session
ShopifyAPI::ProductListing.product_ids(
session: test_session,
)
```
#####
```node
// Session is built by the OAuth process
await shopify.rest.ProductListing.product_ids({
session: session,
});
```
#### response
```json
HTTP/1.1 200 OK{"product_ids":[921728736,632910392]}
```
***
## putCreate a product listing to publish a product to your app
[](https://shopify.dev/docs/api/admin-graphql/latest/mutations/publishablePublish?example=create-a-product-listing-to-publish-a-product-to-your-app)
[publishablePublish](https://shopify.dev/docs/api/admin-graphql/latest/mutations/publishablePublish?example=create-a-product-listing-to-publish-a-product-to-your-app)
Requires `product_listings` access scope.
Create a product listing to publish a product to your app
### Parameters
***
api\_version
string
required
***
product\_listing\_id
string
required
***
### Examples
Create a product listing to publish a product to your app
Path parameters
product\_listing\_id=921728736
string
required
Request body
product\_listing
Product\_listing resource
Show product\_listing properties
product\_listing.product\_id:921728736
read-only
The unique identifer of the product this listing is for. The primary key for this resource.
put
## /admin/api/2025-07/product\_listings/921728736.json
```bash
curl -d '{"product_listing":{"product_id":921728736}}' \
-X PUT "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings/921728736.json" \
-H "X-Shopify-Access-Token: {access_token}" \
-H "Content-Type: application/json"
```
{}
## Response
JSON
```json
HTTP/1.1 200 OK
{
"product_listing": {
"product_id": 921728736,
"created_at": "2025-04-01T15:44:57-04:00",
"updated_at": "2025-04-01T15:44:57-04:00",
"body_html": "The iPod Touch has the iPhone's multi-touch interface, with a physical home button off the touch screen. The home screen has a list of buttons for the available applications.
", "handle": "ipod-touch", "product_type": "Cult Products", "title": "IPod Touch 8GB", "vendor": "Apple", "available": true, "tags": "", "published_at": "2017-08-31T20:00:00-04:00", "variants": [ { "id": 447654529, "title": "Black", "option_values": [ { "option_id": 891236591, "name": "Title", "value": "Black" } ], "price": "199.00", "formatted_price": "$199.00", "compare_at_price": null, "grams": 567, "requires_shipping": true, "sku": "IPOD2009BLACK", "barcode": "1234_black", "taxable": true, "position": 1, "available": true, "inventory_policy": "continue", "inventory_quantity": 13, "inventory_management": "shopify", "fulfillment_service": "manual", "weight": 1.25, "weight_unit": "lb", "image_id": null, "created_at": "2025-04-01T15:44:57-04:00", "updated_at": "2025-04-01T15:44:57-04:00" } ], "images": [], "options": [ { "id": 891236591, "name": "Title", "product_id": 921728736, "position": 1, "values": [ "Black" ] } ] } } ``` ### examples * #### Create a product listing to publish a product to your app ##### ```curl curl -d '{"product_listing":{"product_id":921728736}}' \ -X PUT "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings/921728736.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const product_listing = new admin.rest.resources.ProductListing({session: session}); product_listing.product_id = 921728736; await product_listing.save({ update: true, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session product_listing = ShopifyAPI::ProductListing.new(session: test_session) product_listing.product_id = 921728736 product_listing.save! ``` ##### ```node // Session is built by the OAuth process const product_listing = new shopify.rest.ProductListing({session: session}); product_listing.product_id = 921728736; await product_listing.save({ update: true, }); ``` #### response ```json HTTP/1.1 200 OK{"product_listing":{"product_id":921728736,"created_at":"2025-04-01T15:44:57-04:00","updated_at":"2025-04-01T15:44:57-04:00","body_html":"The iPod Touch has the iPhone's multi-touch interface, with a physical home button off the touch screen. The home screen has a list of buttons for the available applications.
","handle":"ipod-touch","product_type":"Cult Products","title":"IPod Touch 8GB","vendor":"Apple","available":true,"tags":"","published_at":"2017-08-31T20:00:00-04:00","variants":[{"id":447654529,"title":"Black","option_values":[{"option_id":891236591,"name":"Title","value":"Black"}],"price":"199.00","formatted_price":"$199.00","compare_at_price":null,"grams":567,"requires_shipping":true,"sku":"IPOD2009BLACK","barcode":"1234_black","taxable":true,"position":1,"available":true,"inventory_policy":"continue","inventory_quantity":13,"inventory_management":"shopify","fulfillment_service":"manual","weight":1.25,"weight_unit":"lb","image_id":null,"created_at":"2025-04-01T15:44:57-04:00","updated_at":"2025-04-01T15:44:57-04:00"}],"images":[],"options":[{"id":891236591,"name":"Title","product_id":921728736,"position":1,"values":["Black"]}]}} ``` *** ## delDelete a product listing to unpublish a product from your app [](https://shopify.dev/docs/api/admin-graphql/latest/mutations/publishableUnpublish?example=delete-a-product-listing-to-unpublish-a-product-from-your-app) [publishableUnpublish](https://shopify.dev/docs/api/admin-graphql/latest/mutations/publishableUnpublish?example=delete-a-product-listing-to-unpublish-a-product-from-your-app) Requires `product_listings` access scope. Delete a product listing to unpublish a product from your app ### Parameters *** api\_version string required *** product\_listing\_id string required *** ### Examples Delete a product listing to unpublish a product from your app Path parameters product\_listing\_id=921728736 string required del ## /admin/api/2025-07/product\_listings/921728736.json ```bash curl -X DELETE "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings/921728736.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` {} ## Response JSON ```json HTTP/1.1 200 OK ``` ### examples * #### Delete a product listing to unpublish a product from your app ##### ```curl curl -X DELETE "https://your-development-store.myshopify.com/admin/api/2025-07/product_listings/921728736.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.ProductListing.delete({ session: session, product_id: 921728736, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::ProductListing.delete( session: test_session, product_id: 921728736, ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.ProductListing.delete({ session: session, product_id: 921728736, }); ``` #### response ```json HTTP/1.1 200 OK ```