Get sitemap URLs
Lists every storefront URL your sitemap can contain, including URLs you have hidden from it, for the current theme (or application_theme_id). Each entry carries the resource behind the URL, any country routes the theme defines for it, whether it is shown in the sitemap (active), and whether the resource allows search engines to index it (indexable). disabled is true when the whole sitemap is switched off. Requires a company admin Bearer token with the sitemap.view permission. Results are offset-paginated with page and per_page (default 50, max 100), and meta.pagination reports current_page, total_pages, total_count, and per_page. Pass fetch_all=true to receive every URL on one page; a sitemap with more than 10,000 URLs then responds 413. The URL list is cached for up to five minutes, so a newly published resource can take that long to appear.
curl --request GET \
--url https://api.fluid.app/api/v2025-06/sitemap \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v2025-06/sitemap"
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/v2025-06/sitemap', 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/v2025-06/sitemap",
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/v2025-06/sitemap"
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/v2025-06/sitemap")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v2025-06/sitemap")
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{
"urls": [
{
"url": "https://shop.dundermifflin.com/home/collections/office-essentials",
"default_resource": {
"title": "Office Essentials",
"image_url": "https://cdn.fluid.app/dunder-mifflin/collections/office-essentials.jpg"
},
"country_routes": [],
"active": true,
"indexable": true
},
{
"url": "https://shop.dundermifflin.com/home/products/20lb-copy-paper",
"default_resource": {
"title": "Dunder Mifflin 20lb Copy Paper",
"image_url": "https://cdn.fluid.app/dunder-mifflin/products/20lb-copy-paper.jpg"
},
"country_routes": [],
"active": true,
"indexable": true
},
{
"url": "https://shop.dundermifflin.com/home/products/schrute-farms-beet-box",
"default_resource": {
"title": "Schrute Farms Beet Box",
"image_url": "https://cdn.fluid.app/dunder-mifflin/products/schrute-farms-beet-box.jpg"
},
"country_routes": [],
"active": false,
"indexable": true
}
],
"disabled": false,
"meta": {
"request_id": "f3c1d9a2-6b7e-4d0a-9e58-2c4b7a1d8e63",
"timestamp": "2026-09-30T16:42:11Z",
"pagination": {
"current_page": 1,
"total_pages": 3,
"total_count": 128,
"per_page": 50
}
}
}{
"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
}
}
}{
"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
Query Parameters
curl --request GET \
--url https://api.fluid.app/api/v2025-06/sitemap \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v2025-06/sitemap"
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/v2025-06/sitemap', 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/v2025-06/sitemap",
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/v2025-06/sitemap"
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/v2025-06/sitemap")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v2025-06/sitemap")
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{
"urls": [
{
"url": "https://shop.dundermifflin.com/home/collections/office-essentials",
"default_resource": {
"title": "Office Essentials",
"image_url": "https://cdn.fluid.app/dunder-mifflin/collections/office-essentials.jpg"
},
"country_routes": [],
"active": true,
"indexable": true
},
{
"url": "https://shop.dundermifflin.com/home/products/20lb-copy-paper",
"default_resource": {
"title": "Dunder Mifflin 20lb Copy Paper",
"image_url": "https://cdn.fluid.app/dunder-mifflin/products/20lb-copy-paper.jpg"
},
"country_routes": [],
"active": true,
"indexable": true
},
{
"url": "https://shop.dundermifflin.com/home/products/schrute-farms-beet-box",
"default_resource": {
"title": "Schrute Farms Beet Box",
"image_url": "https://cdn.fluid.app/dunder-mifflin/products/schrute-farms-beet-box.jpg"
},
"country_routes": [],
"active": false,
"indexable": true
}
],
"disabled": false,
"meta": {
"request_id": "f3c1d9a2-6b7e-4d0a-9e58-2c4b7a1d8e63",
"timestamp": "2026-09-30T16:42:11Z",
"pagination": {
"current_page": 1,
"total_pages": 3,
"total_count": 128,
"per_page": 50
}
}
}{
"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
}
}
}{
"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
}
}
}