Get a product by ID
curl --request GET \
--url https://api.hubapi.com/crm-objects/v1/objects/products/{id}import requests
url = "https://api.hubapi.com/crm-objects/v1/objects/products/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.hubapi.com/crm-objects/v1/objects/products/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hubapi.com/crm-objects/v1/objects/products/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/crm-objects/v1/objects/products/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hubapi.com/crm-objects/v1/objects/products/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm-objects/v1/objects/products/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"objectType": "PRODUCT",
"portalId": 62515,
"objectId": 1642767,
"properties": {},
"version": 1,
"isDeleted": false
},
{
"versions": [
{
"name": "price",
"value": "27.50",
"timestamp": 1525287096980,
"source": "API",
"sourceVid": []
}
],
"value": "27.50",
"timestamp": 1525287096980,
"source": "API",
"sourceId": null
},
{
"versions": [
{
"name": "name",
"value": "A new product",
"timestamp": 1525287096980,
"source": "API",
"sourceVid": []
}
],
"value": "A new product",
"timestamp": 1525287096980,
"source": "API",
"sourceId": null
},
{
"versions": [
{
"name": "description",
"value": "A description of this product.",
"timestamp": 1525287096980,
"source": "API",
"sourceVid": []
}
],
"value": "A description of this product.",
"timestamp": 1525287096980,
"source": "API",
"sourceId": null
}
]v1
Get a product by ID
Get a specific product by its ID. By default, the response will only include the ID and a few system fields for the product. You can get specific properties in the response by using the properties parameter in the URL, and that parameter can be included multiple times to get multiple properties. See the example for more details.
GET
/
crm-objects
/
v1
/
objects
/
products
/
{id}
Get a product by ID
curl --request GET \
--url https://api.hubapi.com/crm-objects/v1/objects/products/{id}import requests
url = "https://api.hubapi.com/crm-objects/v1/objects/products/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.hubapi.com/crm-objects/v1/objects/products/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hubapi.com/crm-objects/v1/objects/products/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/crm-objects/v1/objects/products/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hubapi.com/crm-objects/v1/objects/products/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm-objects/v1/objects/products/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"objectType": "PRODUCT",
"portalId": 62515,
"objectId": 1642767,
"properties": {},
"version": 1,
"isDeleted": false
},
{
"versions": [
{
"name": "price",
"value": "27.50",
"timestamp": 1525287096980,
"source": "API",
"sourceVid": []
}
],
"value": "27.50",
"timestamp": 1525287096980,
"source": "API",
"sourceId": null
},
{
"versions": [
{
"name": "name",
"value": "A new product",
"timestamp": 1525287096980,
"source": "API",
"sourceVid": []
}
],
"value": "A new product",
"timestamp": 1525287096980,
"source": "API",
"sourceId": null
},
{
"versions": [
{
"name": "description",
"value": "A description of this product.",
"timestamp": 1525287096980,
"source": "API",
"sourceVid": []
}
],
"value": "A description of this product.",
"timestamp": 1525287096980,
"source": "API",
"sourceId": null
}
]Scope requirements
Scope requirements
Response
200 - application/json
Successful response - Get a specific product by its ID
The response is of type object.
Last modified on March 16, 2026
Was this page helpful?
⌘I