You can make a `GET` request for the information of any product using the Ajax Product API. All Ajax API requests should use [locale-aware URLs](/docs/api/ajax#locale-aware-urls) to give visitors a consistent experience. ## GET /{locale}/products/{product-handle}.js Get the JSON of a product using the product [handle](/docs/api/liquid/basics/handle). All monetary properties are returned in the customer's presentment currency. To check the customer's presentment currency, you can use the `currency` field of the `/{locale}/cart.js` endpoint. To learn more about selling in multiple currencies, see [Support multiple currencies and languages](/docs/storefronts/themes/markets/multiple-currencies-languages). ### Example ```js fetch(window.Shopify.routes.root + 'products/red-rain-coat.js') .then(response => response.json()) .then(product => alert('The title of this product is ' + product.title)); ``` ## Response The JSON of the product. Example: ```json { "id": 329678821, "title": "Red Rain Coat", "handle": "red-rain-coat", "description": "<p>Lorem Ipsum.</p>", "published_at": "2014-06-12T16:28:11-04:00", "created_at": "2014-06-12T16:28:13-04:00", "vendor": "Shopify", "type": "Coat", "tags": [ "Spring" ], "price": 12900, "price_min": 12900, "price_max": 12900, "available": true, "price_varies": false, "compare_at_price": null, "compare_at_price_min": 0, "compare_at_price_max": 0, "compare_at_price_varies": false, "variants": [ { "id": 794864229, "title": "Small", "options": [ "Small" ], "option1": "Small", "option2": null, "option3": null, "price": 12900, "weight": 0, "compare_at_price": null, "inventory_management": "shopify", "available": true, "sku": null, "requires_shipping": true, "taxable": true, "barcode": "49738645" }, { "id": 794864233, "title": "Medium", "options": [ "Medium" ], "option1": "Medium", "option2": null, "option3": null, "price": 12900, "weight": 0, "compare_at_price": null, "inventory_management": "shopify", "available": true, "sku": null, "requires_shipping": true, "taxable": true, "barcode": "49738657" }, { "id": 794864237, "title": "Large", "options": [ "Large" ], "option1": "Large", "option2": null, "option3": null, "price": 12900, "weight": 0, "compare_at_price": null, "inventory_management": "shopify", "available": true, "sku": null, "requires_shipping": true, "taxable": true, "barcode": "49738673" } ], "images": [ "//cdn.shopify.com/s/files/1/0040/7092/products/red-rain-coat.jpeg?v=1402604893" ], "featured_image": "//cdn.shopify.com/s/files/1/0040/7092/products/red-rain-coat.jpeg?v=1402604893", "options": [ { "name": "Size", "position": 1 } ], "url": "/products/red-rain-coat" } ``` > Note: The JSON of the product can contain a maximum of 250 variants in the variants array. ### Selling plan example Products with selling plans will have the following additional properties available at `/{locale}/products/<handle>.js`. ```json { "id":5290511958181, // ... "variants":[ { "id":34620489400485, // ... "requires_selling_plan":false, "selling_plan_allocations":[ { "price":3120, "compare_at_price":3900, "per_delivery_price":3120, "selling_plan_id":360613, "selling_plan_group_id":14699254537353206000 }, { "price":3510, "compare_at_price":3900, "per_delivery_price":3510, "selling_plan_id":393381, "selling_plan_group_id":14699254537353206000 } ] } ], "requires_selling_plan":false, "selling_plan_groups":[ { "id":14699254537353206000, "name":"Subscribe and Save", "options":[ { "name":"Delivery Frequency", "position":1, "values":[ "Month", "Week" ] }, { "name":"Billing Frequency", "position":2, "values":[ "Month", "Week" ] } ], "selling_plans":[ { "id":360613, "name":"Pay every month, delivery every month | save 20%", "description":"No commitment · Auto-renews · Skip or cancel anytime", "options":[ { "name":"Delivery Frequency", "position":1, "value":"Month" }, { "name":"Billing Frequency", "position":2, "value":"Month" } ], "recurring_deliveries":true }, { ```