Google
List the company's Google Shopping listings
Lists every Google Shopping listing on the company’s Google Merchant Center connection, newest first, including drafts, failed publishes, and deleted rows. Each listing carries its publish status, Google’s raw review state, and the rolled-up audit_status. Requires a company admin Bearer token with the products.view permission. Cursor-paginated: pass page[limit] (default 25, max 100) and follow meta.pagination.next_cursor with page[cursor]. Returns 404 when the company has never connected Google Merchant Center.
GET
/
api
/
v202506
/
google
/
product_listings
List the company's Google Shopping listings
curl --request GET \
--url https://api.fluid.app/api/v202506/google/product_listings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202506/google/product_listings"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/v202506/google/product_listings', 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.fluid.app/api/v202506/google/product_listings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.fluid.app/api/v202506/google/product_listings"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.fluid.app/api/v202506/google/product_listings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/google/product_listings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"product_listings": [
{
"id": 91208,
"product_id": 48213,
"item_group_id": "01923f4a-7c2e-7b91-a5d3-6e8f0b4c2a17",
"google_review_status": "Approved",
"content_language": "en",
"feed_label": "US",
"status": "active",
"audit_status": "approved",
"last_published_at": "2026-09-15T10:04:12Z",
"last_synced_at": "2026-09-29T06:30:00Z",
"last_error": null
},
{
"id": 91203,
"product_id": 48219,
"item_group_id": "01923f4a-6b1d-7a80-94c2-5d7e9a3b1f06",
"google_review_status": "Limited",
"content_language": "en",
"feed_label": "US",
"status": "active",
"audit_status": "approved",
"last_published_at": "2026-09-15T10:04:12Z",
"last_synced_at": "2026-09-29T06:30:00Z",
"last_error": null
}
],
"status": 200,
"meta": {
"request_id": "d4f7b2a9-1e6c-4380-b5d2-7a9e3c0f8b61",
"timestamp": "2026-09-30T14:18:44Z",
"pagination": {
"cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0xNVQxMDowMToyMloiLCJpZCI6OTEyMDh9",
"limit": 25,
"prev_cursor": null,
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0xNFQxNzo0MjowOVoiLCJpZCI6OTEyMDN9"
}
}
}{
"message": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Cursor token for pagination (from meta.pagination in the response).
Number of records per page (max 100).
Required range:
1 <= x <= 100⌘I
List the company's Google Shopping listings
curl --request GET \
--url https://api.fluid.app/api/v202506/google/product_listings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202506/google/product_listings"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/v202506/google/product_listings', 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.fluid.app/api/v202506/google/product_listings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.fluid.app/api/v202506/google/product_listings"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.fluid.app/api/v202506/google/product_listings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/google/product_listings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"product_listings": [
{
"id": 91208,
"product_id": 48213,
"item_group_id": "01923f4a-7c2e-7b91-a5d3-6e8f0b4c2a17",
"google_review_status": "Approved",
"content_language": "en",
"feed_label": "US",
"status": "active",
"audit_status": "approved",
"last_published_at": "2026-09-15T10:04:12Z",
"last_synced_at": "2026-09-29T06:30:00Z",
"last_error": null
},
{
"id": 91203,
"product_id": 48219,
"item_group_id": "01923f4a-6b1d-7a80-94c2-5d7e9a3b1f06",
"google_review_status": "Limited",
"content_language": "en",
"feed_label": "US",
"status": "active",
"audit_status": "approved",
"last_published_at": "2026-09-15T10:04:12Z",
"last_synced_at": "2026-09-29T06:30:00Z",
"last_error": null
}
],
"status": 200,
"meta": {
"request_id": "d4f7b2a9-1e6c-4380-b5d2-7a9e3c0f8b61",
"timestamp": "2026-09-30T14:18:44Z",
"pagination": {
"cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0xNVQxMDowMToyMloiLCJpZCI6OTEyMDh9",
"limit": 25,
"prev_cursor": null,
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0xNFQxNzo0MjowOVoiLCJpZCI6OTEyMDN9"
}
}
}{
"message": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}