curl --request GET \
--url https://api.syntalic.com/v1/shopper/price-drop-alertimport requests
url = "https://api.syntalic.com/v1/shopper/price-drop-alert"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.syntalic.com/v1/shopper/price-drop-alert', 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.syntalic.com/v1/shopper/price-drop-alert",
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.syntalic.com/v1/shopper/price-drop-alert"
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.syntalic.com/v1/shopper/price-drop-alert")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.syntalic.com/v1/shopper/price-drop-alert")
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{
"query": "<string>",
"country": "<string>",
"currency": "<string>",
"product_uid": "<string>",
"entity_uid": "<string>",
"product_name": "<string>",
"retailer": "<string>",
"condition": "<string>",
"current_price": 123,
"avg_price_last_30d": 123,
"price_vs_avg_pct": 123,
"is_price_drop": true,
"lowest_seen": 123,
"lowest_seen_date": "2023-12-25",
"insufficient_history": true,
"observation_count": 123,
"scope": "entity",
"member_count": 123,
"window": {
"preset": "<string>",
"from": "2023-12-25",
"to": "2023-12-25",
"granularity": "<string>",
"comparison_from": "2023-12-25",
"comparison_to": "2023-12-25",
"timezone": "UTC"
},
"meta": {
"served_from": "<string>",
"freshness_seconds": 123,
"schema_version": "<string>",
"computed_at": "2023-11-07T05:31:56Z",
"price_observed_at_min": "2023-11-07T05:31:56Z",
"price_observed_at_max": "2023-11-07T05:31:56Z"
}
}{
"type": "<string>",
"title": "Bad Request",
"status": 400,
"detail": "<string>",
"instance": "<string>",
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"type": "<string>",
"title": "Payment Required",
"status": 402,
"detail": "<string>",
"instance": "<string>",
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"type": "<string>",
"title": "Not Found",
"status": 404,
"detail": "<string>",
"instance": "<string>",
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"type": "<string>",
"title": "Too Many Requests",
"status": 429,
"detail": "<string>",
"instance": "<string>",
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"type": "<string>",
"title": "Internal Server Error",
"status": 500,
"detail": "<string>",
"instance": "<string>",
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}Check for recent price drops on a product
Check whether a product’s current price is below its rolling average within a configurable lookback window. Returns current price vs. the average across the window plus the lowest-seen price and date. Response field avg_price_last_30d is a fixed name for backwards compatibility; the value is always computed across the configured lookback_days window. Includes a nullable gpc block for the resolved product (fail-soft).
curl --request GET \
--url https://api.syntalic.com/v1/shopper/price-drop-alertimport requests
url = "https://api.syntalic.com/v1/shopper/price-drop-alert"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.syntalic.com/v1/shopper/price-drop-alert', 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.syntalic.com/v1/shopper/price-drop-alert",
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.syntalic.com/v1/shopper/price-drop-alert"
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.syntalic.com/v1/shopper/price-drop-alert")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.syntalic.com/v1/shopper/price-drop-alert")
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{
"query": "<string>",
"country": "<string>",
"currency": "<string>",
"product_uid": "<string>",
"entity_uid": "<string>",
"product_name": "<string>",
"retailer": "<string>",
"condition": "<string>",
"current_price": 123,
"avg_price_last_30d": 123,
"price_vs_avg_pct": 123,
"is_price_drop": true,
"lowest_seen": 123,
"lowest_seen_date": "2023-12-25",
"insufficient_history": true,
"observation_count": 123,
"scope": "entity",
"member_count": 123,
"window": {
"preset": "<string>",
"from": "2023-12-25",
"to": "2023-12-25",
"granularity": "<string>",
"comparison_from": "2023-12-25",
"comparison_to": "2023-12-25",
"timezone": "UTC"
},
"meta": {
"served_from": "<string>",
"freshness_seconds": 123,
"schema_version": "<string>",
"computed_at": "2023-11-07T05:31:56Z",
"price_observed_at_min": "2023-11-07T05:31:56Z",
"price_observed_at_max": "2023-11-07T05:31:56Z"
}
}{
"type": "<string>",
"title": "Bad Request",
"status": 400,
"detail": "<string>",
"instance": "<string>",
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"type": "<string>",
"title": "Payment Required",
"status": 402,
"detail": "<string>",
"instance": "<string>",
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"type": "<string>",
"title": "Not Found",
"status": 404,
"detail": "<string>",
"instance": "<string>",
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"type": "<string>",
"title": "Too Many Requests",
"status": 429,
"detail": "<string>",
"instance": "<string>",
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"type": "<string>",
"title": "Internal Server Error",
"status": 500,
"detail": "<string>",
"instance": "<string>",
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}Query Parameters
Search query (product name, keyword, or brand + model). Required unless product_uid or entity_uid is supplied.
1Stable product identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should pin to this listing instead of re-resolving free text.
1Stable cross-retailer entity identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should resolve within the same physical-product entity.
1Country (us or ca)
us, ca Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)
amazon, walmart, target, bestbuy, homedepot, costco, ikea, samsclub, cvs, dillards Historical window preset. Explicit from/to takes precedence and is reported as custom; time_window=custom requires both from and to. Date-only ranges use UTC calendar boundaries with inclusive from and exclusive to.
last_30_days, last_60_days, last_90_days, month_to_date, previous_month, month_over_month, quarter_to_date, custom Days to look back for price drops (default 30). Backwards-compatible alias for matching last_N_days windows.
x >= 1Response
Price drop alert
entity, listing Show child attributes
Show child attributes
Show child attributes
Show child attributes

