Retrieve a list of content changes
curl --request POST \
--url https://mm-api.merchantspring.io/content-changes \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"mid": "<string>",
"marketplaceType": "<string>",
"marketplaceSubtype": "<string>",
"marketplaceCountry": "<string>",
"paginationParams": {
"pageIndex": 0,
"pageSize": 100,
"sortKey": "updatedAt",
"sortOrder": "asc"
},
"searchText": "<string>",
"differentKeys": "<string>"
}
'import requests
url = "https://mm-api.merchantspring.io/content-changes"
payload = {
"mid": "<string>",
"marketplaceType": "<string>",
"marketplaceSubtype": "<string>",
"marketplaceCountry": "<string>",
"paginationParams": {
"pageIndex": 0,
"pageSize": 100,
"sortKey": "updatedAt",
"sortOrder": "asc"
},
"searchText": "<string>",
"differentKeys": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
mid: '<string>',
marketplaceType: '<string>',
marketplaceSubtype: '<string>',
marketplaceCountry: '<string>',
paginationParams: {pageIndex: 0, pageSize: 100, sortKey: 'updatedAt', sortOrder: 'asc'},
searchText: '<string>',
differentKeys: '<string>'
})
};
fetch('https://mm-api.merchantspring.io/content-changes', 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://mm-api.merchantspring.io/content-changes",
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([
'mid' => '<string>',
'marketplaceType' => '<string>',
'marketplaceSubtype' => '<string>',
'marketplaceCountry' => '<string>',
'paginationParams' => [
'pageIndex' => 0,
'pageSize' => 100,
'sortKey' => 'updatedAt',
'sortOrder' => 'asc'
],
'searchText' => '<string>',
'differentKeys' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://mm-api.merchantspring.io/content-changes"
payload := strings.NewReader("{\n \"mid\": \"<string>\",\n \"marketplaceType\": \"<string>\",\n \"marketplaceSubtype\": \"<string>\",\n \"marketplaceCountry\": \"<string>\",\n \"paginationParams\": {\n \"pageIndex\": 0,\n \"pageSize\": 100,\n \"sortKey\": \"updatedAt\",\n \"sortOrder\": \"asc\"\n },\n \"searchText\": \"<string>\",\n \"differentKeys\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://mm-api.merchantspring.io/content-changes")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"mid\": \"<string>\",\n \"marketplaceType\": \"<string>\",\n \"marketplaceSubtype\": \"<string>\",\n \"marketplaceCountry\": \"<string>\",\n \"paginationParams\": {\n \"pageIndex\": 0,\n \"pageSize\": 100,\n \"sortKey\": \"updatedAt\",\n \"sortOrder\": \"asc\"\n },\n \"searchText\": \"<string>\",\n \"differentKeys\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mm-api.merchantspring.io/content-changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"mid\": \"<string>\",\n \"marketplaceType\": \"<string>\",\n \"marketplaceSubtype\": \"<string>\",\n \"marketplaceCountry\": \"<string>\",\n \"paginationParams\": {\n \"pageIndex\": 0,\n \"pageSize\": 100,\n \"sortKey\": \"updatedAt\",\n \"sortOrder\": \"asc\"\n },\n \"searchText\": \"<string>\",\n \"differentKeys\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"pageIndex": 0,
"pageSize": 100,
"totalCount": 250,
"totalPages": 3,
"items": [
{
"productIdentifier": "B08N5WRWNW",
"titleText": "Example Product Title",
"marketplace": "amazon",
"marketplaceSubtype": "amazon",
"country": "US",
"storeId": "A1234567890ABC",
"link": "https://www.amazon.com/dp/B08N5WRWNW",
"salesRank": 1234,
"updatedAt": "2026-05-19T10:30:00.000Z",
"fields": {
"title": {
"status": "different",
"original": "Current Product Title",
"benchmark": "Example Product Title",
"lastDifferentAt": "2026-05-19T08:15:00.000Z"
},
"images": {
"status": "same",
"original": [
"https://m.media-amazon.com/images/I/image1.jpg",
"https://m.media-amazon.com/images/I/image2.jpg"
],
"benchmark": [
"https://m.media-amazon.com/images/I/image1.jpg",
"https://m.media-amazon.com/images/I/image2.jpg"
],
"lastDifferentAt": null
}
}
}
]
}This response has no body data.Content Change
Retrieve a list of content changes
Retrieve a paginated list of product content changes for a given store. Returns one record per product with per-field change status, original value, benchmark value and last-changed timestamp. Page size is capped at 500 items per request. Uses zero-based page indexing (pageIndex starts at 0).
POST
/
content-changes
Retrieve a list of content changes
curl --request POST \
--url https://mm-api.merchantspring.io/content-changes \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"mid": "<string>",
"marketplaceType": "<string>",
"marketplaceSubtype": "<string>",
"marketplaceCountry": "<string>",
"paginationParams": {
"pageIndex": 0,
"pageSize": 100,
"sortKey": "updatedAt",
"sortOrder": "asc"
},
"searchText": "<string>",
"differentKeys": "<string>"
}
'import requests
url = "https://mm-api.merchantspring.io/content-changes"
payload = {
"mid": "<string>",
"marketplaceType": "<string>",
"marketplaceSubtype": "<string>",
"marketplaceCountry": "<string>",
"paginationParams": {
"pageIndex": 0,
"pageSize": 100,
"sortKey": "updatedAt",
"sortOrder": "asc"
},
"searchText": "<string>",
"differentKeys": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
mid: '<string>',
marketplaceType: '<string>',
marketplaceSubtype: '<string>',
marketplaceCountry: '<string>',
paginationParams: {pageIndex: 0, pageSize: 100, sortKey: 'updatedAt', sortOrder: 'asc'},
searchText: '<string>',
differentKeys: '<string>'
})
};
fetch('https://mm-api.merchantspring.io/content-changes', 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://mm-api.merchantspring.io/content-changes",
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([
'mid' => '<string>',
'marketplaceType' => '<string>',
'marketplaceSubtype' => '<string>',
'marketplaceCountry' => '<string>',
'paginationParams' => [
'pageIndex' => 0,
'pageSize' => 100,
'sortKey' => 'updatedAt',
'sortOrder' => 'asc'
],
'searchText' => '<string>',
'differentKeys' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://mm-api.merchantspring.io/content-changes"
payload := strings.NewReader("{\n \"mid\": \"<string>\",\n \"marketplaceType\": \"<string>\",\n \"marketplaceSubtype\": \"<string>\",\n \"marketplaceCountry\": \"<string>\",\n \"paginationParams\": {\n \"pageIndex\": 0,\n \"pageSize\": 100,\n \"sortKey\": \"updatedAt\",\n \"sortOrder\": \"asc\"\n },\n \"searchText\": \"<string>\",\n \"differentKeys\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://mm-api.merchantspring.io/content-changes")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"mid\": \"<string>\",\n \"marketplaceType\": \"<string>\",\n \"marketplaceSubtype\": \"<string>\",\n \"marketplaceCountry\": \"<string>\",\n \"paginationParams\": {\n \"pageIndex\": 0,\n \"pageSize\": 100,\n \"sortKey\": \"updatedAt\",\n \"sortOrder\": \"asc\"\n },\n \"searchText\": \"<string>\",\n \"differentKeys\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mm-api.merchantspring.io/content-changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"mid\": \"<string>\",\n \"marketplaceType\": \"<string>\",\n \"marketplaceSubtype\": \"<string>\",\n \"marketplaceCountry\": \"<string>\",\n \"paginationParams\": {\n \"pageIndex\": 0,\n \"pageSize\": 100,\n \"sortKey\": \"updatedAt\",\n \"sortOrder\": \"asc\"\n },\n \"searchText\": \"<string>\",\n \"differentKeys\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"pageIndex": 0,
"pageSize": 100,
"totalCount": 250,
"totalPages": 3,
"items": [
{
"productIdentifier": "B08N5WRWNW",
"titleText": "Example Product Title",
"marketplace": "amazon",
"marketplaceSubtype": "amazon",
"country": "US",
"storeId": "A1234567890ABC",
"link": "https://www.amazon.com/dp/B08N5WRWNW",
"salesRank": 1234,
"updatedAt": "2026-05-19T10:30:00.000Z",
"fields": {
"title": {
"status": "different",
"original": "Current Product Title",
"benchmark": "Example Product Title",
"lastDifferentAt": "2026-05-19T08:15:00.000Z"
},
"images": {
"status": "same",
"original": [
"https://m.media-amazon.com/images/I/image1.jpg",
"https://m.media-amazon.com/images/I/image2.jpg"
],
"benchmark": [
"https://m.media-amazon.com/images/I/image1.jpg",
"https://m.media-amazon.com/images/I/image2.jpg"
],
"lastDifferentAt": null
}
}
}
]
}This response has no body data.Authorizations
Body
application/json
Filter and pagination criteria
Store ID (merchant ID)
Marketplace type (e.g. amazon, walmart)
Marketplace subtype (e.g. seller, vendor)
Marketplace country code (e.g. US, GB)
Show child attributes
Show child attributes
Search by product identifier, title or product type
Comma-separated list of fields to filter by 'different' status (e.g. 'title,images'). Valid values: title, images, bulletPoints, description, browseNode, productType, relationships
Was this page helpful?
⌘I