Create Product Listing
curl --request POST \
--url https://api.birdeye.com/resources/v1/listing/public/product \
--header 'Content-Type: application/json' \
--data '
{
"businessNumbers": [
145308764185002,
145308769721320
],
"title": "Dental Implant",
"description": "The dental procedure for replacing missing teeth using implants.",
"imageLink": "https://example.com/images/dental-implant-main.jpg",
"additionalImageLinks": [
"https://example.com/images/dental-implant-side.jpg",
"https://example.com/images/dental-implant-closeup.jpg"
],
"brandName": "SmileCare",
"googleProductCategoryId": "123",
"price": {
"amount": "1500.00",
"currencyCode": "USD"
},
"salePrice": {
"amount": "1200.00",
"currencyCode": "USD"
},
"productSku": "DENTAL-IMPLANT-001",
"productTypes": [
"Dental Services",
"Implants",
"Cosmetic Dentistry"
],
"productUrl": "https://example.com/products/dental-implant",
"status": "PUBLISH"
}
'import requests
url = "https://api.birdeye.com/resources/v1/listing/public/product"
payload = {
"businessNumbers": [145308764185002, 145308769721320],
"title": "Dental Implant",
"description": "The dental procedure for replacing missing teeth using implants.",
"imageLink": "https://example.com/images/dental-implant-main.jpg",
"additionalImageLinks": ["https://example.com/images/dental-implant-side.jpg", "https://example.com/images/dental-implant-closeup.jpg"],
"brandName": "SmileCare",
"googleProductCategoryId": "123",
"price": {
"amount": "1500.00",
"currencyCode": "USD"
},
"salePrice": {
"amount": "1200.00",
"currencyCode": "USD"
},
"productSku": "DENTAL-IMPLANT-001",
"productTypes": ["Dental Services", "Implants", "Cosmetic Dentistry"],
"productUrl": "https://example.com/products/dental-implant",
"status": "PUBLISH"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
businessNumbers: [145308764185002, 145308769721320],
title: 'Dental Implant',
description: 'The dental procedure for replacing missing teeth using implants.',
imageLink: 'https://example.com/images/dental-implant-main.jpg',
additionalImageLinks: [
'https://example.com/images/dental-implant-side.jpg',
'https://example.com/images/dental-implant-closeup.jpg'
],
brandName: 'SmileCare',
googleProductCategoryId: '123',
price: {amount: '1500.00', currencyCode: 'USD'},
salePrice: {amount: '1200.00', currencyCode: 'USD'},
productSku: 'DENTAL-IMPLANT-001',
productTypes: ['Dental Services', 'Implants', 'Cosmetic Dentistry'],
productUrl: 'https://example.com/products/dental-implant',
status: 'PUBLISH'
})
};
fetch('https://api.birdeye.com/resources/v1/listing/public/product', 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.birdeye.com/resources/v1/listing/public/product",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'businessNumbers' => [
145308764185002,
145308769721320
],
'title' => 'Dental Implant',
'description' => 'The dental procedure for replacing missing teeth using implants.',
'imageLink' => 'https://example.com/images/dental-implant-main.jpg',
'additionalImageLinks' => [
'https://example.com/images/dental-implant-side.jpg',
'https://example.com/images/dental-implant-closeup.jpg'
],
'brandName' => 'SmileCare',
'googleProductCategoryId' => '123',
'price' => [
'amount' => '1500.00',
'currencyCode' => 'USD'
],
'salePrice' => [
'amount' => '1200.00',
'currencyCode' => 'USD'
],
'productSku' => 'DENTAL-IMPLANT-001',
'productTypes' => [
'Dental Services',
'Implants',
'Cosmetic Dentistry'
],
'productUrl' => 'https://example.com/products/dental-implant',
'status' => 'PUBLISH'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.birdeye.com/resources/v1/listing/public/product"
payload := strings.NewReader("{\n \"businessNumbers\": [\n 145308764185002,\n 145308769721320\n ],\n \"title\": \"Dental Implant\",\n \"description\": \"The dental procedure for replacing missing teeth using implants.\",\n \"imageLink\": \"https://example.com/images/dental-implant-main.jpg\",\n \"additionalImageLinks\": [\n \"https://example.com/images/dental-implant-side.jpg\",\n \"https://example.com/images/dental-implant-closeup.jpg\"\n ],\n \"brandName\": \"SmileCare\",\n \"googleProductCategoryId\": \"123\",\n \"price\": {\n \"amount\": \"1500.00\",\n \"currencyCode\": \"USD\"\n },\n \"salePrice\": {\n \"amount\": \"1200.00\",\n \"currencyCode\": \"USD\"\n },\n \"productSku\": \"DENTAL-IMPLANT-001\",\n \"productTypes\": [\n \"Dental Services\",\n \"Implants\",\n \"Cosmetic Dentistry\"\n ],\n \"productUrl\": \"https://example.com/products/dental-implant\",\n \"status\": \"PUBLISH\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.birdeye.com/resources/v1/listing/public/product")
.header("Content-Type", "application/json")
.body("{\n \"businessNumbers\": [\n 145308764185002,\n 145308769721320\n ],\n \"title\": \"Dental Implant\",\n \"description\": \"The dental procedure for replacing missing teeth using implants.\",\n \"imageLink\": \"https://example.com/images/dental-implant-main.jpg\",\n \"additionalImageLinks\": [\n \"https://example.com/images/dental-implant-side.jpg\",\n \"https://example.com/images/dental-implant-closeup.jpg\"\n ],\n \"brandName\": \"SmileCare\",\n \"googleProductCategoryId\": \"123\",\n \"price\": {\n \"amount\": \"1500.00\",\n \"currencyCode\": \"USD\"\n },\n \"salePrice\": {\n \"amount\": \"1200.00\",\n \"currencyCode\": \"USD\"\n },\n \"productSku\": \"DENTAL-IMPLANT-001\",\n \"productTypes\": [\n \"Dental Services\",\n \"Implants\",\n \"Cosmetic Dentistry\"\n ],\n \"productUrl\": \"https://example.com/products/dental-implant\",\n \"status\": \"PUBLISH\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/listing/public/product")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"businessNumbers\": [\n 145308764185002,\n 145308769721320\n ],\n \"title\": \"Dental Implant\",\n \"description\": \"The dental procedure for replacing missing teeth using implants.\",\n \"imageLink\": \"https://example.com/images/dental-implant-main.jpg\",\n \"additionalImageLinks\": [\n \"https://example.com/images/dental-implant-side.jpg\",\n \"https://example.com/images/dental-implant-closeup.jpg\"\n ],\n \"brandName\": \"SmileCare\",\n \"googleProductCategoryId\": \"123\",\n \"price\": {\n \"amount\": \"1500.00\",\n \"currencyCode\": \"USD\"\n },\n \"salePrice\": {\n \"amount\": \"1200.00\",\n \"currencyCode\": \"USD\"\n },\n \"productSku\": \"DENTAL-IMPLANT-001\",\n \"productTypes\": [\n \"Dental Services\",\n \"Implants\",\n \"Cosmetic Dentistry\"\n ],\n \"productUrl\": \"https://example.com/products/dental-implant\",\n \"status\": \"PUBLISH\"\n}"
response = http.request(request)
puts response.read_body{
"productId": "<string>",
"code": 123,
"message": "<string>",
"data": {
"errorAttributes": [
{
"type": "<string>",
"message": "<string>"
}
]
}
}{
"code": 1161,
"message": "Invalid API key"
}{
"code": 1011,
"message": "Business id is invalid"
}{
"code": 89,
"message": "Rate limit exceeded"
}GMB Products
Create Product Listing
Creates a product listing on the Google Merchant account linked to the Birdeye account.
POST
/
v1
/
listing
/
public
/
product
Create Product Listing
curl --request POST \
--url https://api.birdeye.com/resources/v1/listing/public/product \
--header 'Content-Type: application/json' \
--data '
{
"businessNumbers": [
145308764185002,
145308769721320
],
"title": "Dental Implant",
"description": "The dental procedure for replacing missing teeth using implants.",
"imageLink": "https://example.com/images/dental-implant-main.jpg",
"additionalImageLinks": [
"https://example.com/images/dental-implant-side.jpg",
"https://example.com/images/dental-implant-closeup.jpg"
],
"brandName": "SmileCare",
"googleProductCategoryId": "123",
"price": {
"amount": "1500.00",
"currencyCode": "USD"
},
"salePrice": {
"amount": "1200.00",
"currencyCode": "USD"
},
"productSku": "DENTAL-IMPLANT-001",
"productTypes": [
"Dental Services",
"Implants",
"Cosmetic Dentistry"
],
"productUrl": "https://example.com/products/dental-implant",
"status": "PUBLISH"
}
'import requests
url = "https://api.birdeye.com/resources/v1/listing/public/product"
payload = {
"businessNumbers": [145308764185002, 145308769721320],
"title": "Dental Implant",
"description": "The dental procedure for replacing missing teeth using implants.",
"imageLink": "https://example.com/images/dental-implant-main.jpg",
"additionalImageLinks": ["https://example.com/images/dental-implant-side.jpg", "https://example.com/images/dental-implant-closeup.jpg"],
"brandName": "SmileCare",
"googleProductCategoryId": "123",
"price": {
"amount": "1500.00",
"currencyCode": "USD"
},
"salePrice": {
"amount": "1200.00",
"currencyCode": "USD"
},
"productSku": "DENTAL-IMPLANT-001",
"productTypes": ["Dental Services", "Implants", "Cosmetic Dentistry"],
"productUrl": "https://example.com/products/dental-implant",
"status": "PUBLISH"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
businessNumbers: [145308764185002, 145308769721320],
title: 'Dental Implant',
description: 'The dental procedure for replacing missing teeth using implants.',
imageLink: 'https://example.com/images/dental-implant-main.jpg',
additionalImageLinks: [
'https://example.com/images/dental-implant-side.jpg',
'https://example.com/images/dental-implant-closeup.jpg'
],
brandName: 'SmileCare',
googleProductCategoryId: '123',
price: {amount: '1500.00', currencyCode: 'USD'},
salePrice: {amount: '1200.00', currencyCode: 'USD'},
productSku: 'DENTAL-IMPLANT-001',
productTypes: ['Dental Services', 'Implants', 'Cosmetic Dentistry'],
productUrl: 'https://example.com/products/dental-implant',
status: 'PUBLISH'
})
};
fetch('https://api.birdeye.com/resources/v1/listing/public/product', 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.birdeye.com/resources/v1/listing/public/product",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'businessNumbers' => [
145308764185002,
145308769721320
],
'title' => 'Dental Implant',
'description' => 'The dental procedure for replacing missing teeth using implants.',
'imageLink' => 'https://example.com/images/dental-implant-main.jpg',
'additionalImageLinks' => [
'https://example.com/images/dental-implant-side.jpg',
'https://example.com/images/dental-implant-closeup.jpg'
],
'brandName' => 'SmileCare',
'googleProductCategoryId' => '123',
'price' => [
'amount' => '1500.00',
'currencyCode' => 'USD'
],
'salePrice' => [
'amount' => '1200.00',
'currencyCode' => 'USD'
],
'productSku' => 'DENTAL-IMPLANT-001',
'productTypes' => [
'Dental Services',
'Implants',
'Cosmetic Dentistry'
],
'productUrl' => 'https://example.com/products/dental-implant',
'status' => 'PUBLISH'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.birdeye.com/resources/v1/listing/public/product"
payload := strings.NewReader("{\n \"businessNumbers\": [\n 145308764185002,\n 145308769721320\n ],\n \"title\": \"Dental Implant\",\n \"description\": \"The dental procedure for replacing missing teeth using implants.\",\n \"imageLink\": \"https://example.com/images/dental-implant-main.jpg\",\n \"additionalImageLinks\": [\n \"https://example.com/images/dental-implant-side.jpg\",\n \"https://example.com/images/dental-implant-closeup.jpg\"\n ],\n \"brandName\": \"SmileCare\",\n \"googleProductCategoryId\": \"123\",\n \"price\": {\n \"amount\": \"1500.00\",\n \"currencyCode\": \"USD\"\n },\n \"salePrice\": {\n \"amount\": \"1200.00\",\n \"currencyCode\": \"USD\"\n },\n \"productSku\": \"DENTAL-IMPLANT-001\",\n \"productTypes\": [\n \"Dental Services\",\n \"Implants\",\n \"Cosmetic Dentistry\"\n ],\n \"productUrl\": \"https://example.com/products/dental-implant\",\n \"status\": \"PUBLISH\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.birdeye.com/resources/v1/listing/public/product")
.header("Content-Type", "application/json")
.body("{\n \"businessNumbers\": [\n 145308764185002,\n 145308769721320\n ],\n \"title\": \"Dental Implant\",\n \"description\": \"The dental procedure for replacing missing teeth using implants.\",\n \"imageLink\": \"https://example.com/images/dental-implant-main.jpg\",\n \"additionalImageLinks\": [\n \"https://example.com/images/dental-implant-side.jpg\",\n \"https://example.com/images/dental-implant-closeup.jpg\"\n ],\n \"brandName\": \"SmileCare\",\n \"googleProductCategoryId\": \"123\",\n \"price\": {\n \"amount\": \"1500.00\",\n \"currencyCode\": \"USD\"\n },\n \"salePrice\": {\n \"amount\": \"1200.00\",\n \"currencyCode\": \"USD\"\n },\n \"productSku\": \"DENTAL-IMPLANT-001\",\n \"productTypes\": [\n \"Dental Services\",\n \"Implants\",\n \"Cosmetic Dentistry\"\n ],\n \"productUrl\": \"https://example.com/products/dental-implant\",\n \"status\": \"PUBLISH\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/listing/public/product")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"businessNumbers\": [\n 145308764185002,\n 145308769721320\n ],\n \"title\": \"Dental Implant\",\n \"description\": \"The dental procedure for replacing missing teeth using implants.\",\n \"imageLink\": \"https://example.com/images/dental-implant-main.jpg\",\n \"additionalImageLinks\": [\n \"https://example.com/images/dental-implant-side.jpg\",\n \"https://example.com/images/dental-implant-closeup.jpg\"\n ],\n \"brandName\": \"SmileCare\",\n \"googleProductCategoryId\": \"123\",\n \"price\": {\n \"amount\": \"1500.00\",\n \"currencyCode\": \"USD\"\n },\n \"salePrice\": {\n \"amount\": \"1200.00\",\n \"currencyCode\": \"USD\"\n },\n \"productSku\": \"DENTAL-IMPLANT-001\",\n \"productTypes\": [\n \"Dental Services\",\n \"Implants\",\n \"Cosmetic Dentistry\"\n ],\n \"productUrl\": \"https://example.com/products/dental-implant\",\n \"status\": \"PUBLISH\"\n}"
response = http.request(request)
puts response.read_body{
"productId": "<string>",
"code": 123,
"message": "<string>",
"data": {
"errorAttributes": [
{
"type": "<string>",
"message": "<string>"
}
]
}
}{
"code": 1161,
"message": "Invalid API key"
}{
"code": 1011,
"message": "Business id is invalid"
}{
"code": 89,
"message": "Rate limit exceeded"
}Headers
e.g. application/json
e.g. [Required] Partner specific API key provided by Birdeye for data exchange.
e.g. [Required] User assosiated businessNumber
Media type of the JSON request body.
Body
application/json
Product title.
Publicly accessible image URL.
Google product taxonomy ID.
Show child attributes
Show child attributes
Accepted values: PUBLISH, DRAFT.
Location numbers of enterprise locations. If empty all valid enterprise locations will be selected.
Additional public image URLs.
Show child attributes
Show child attributes
Merchant SKU; if omitted, system may assign.
Product categorization keywords.
implant (string, optional)
⌘I