Api Endpoint

api.syntalic.com

Get price history for a product over time

Open interactive test console

Offering

Provider
api.syntalic.com
Method
GET
Offering type
Api Endpoint
Transport type
http
Category
Financial Analysis
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://api.syntalic.com/v1/shopper/price-history
MIME type
application/json
First seen
2026-10-16T01:50:03.310Z
Last seen
Tags
X402, pricing, retail, Amazon, walmart, price-tracking, shopping

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.01 USDC
Atomic price: 10000 · Network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp · Asset: USDC · Scheme: exact
Payment option 2
0.01 USDC
Atomic price: 10000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
    "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": "10000",
    "payTo": "2hYY7wHhXsoWnskQRzYFUNH7YboXNMEqbGnAFHpRuB2W"
  },
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "10000",
    "payTo": "0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe"
  }
]

Observed health

Status
Reachable
Latest latency
66 ms
Average latency
142 ms
HTTP status
400
Last checked
Reachability
92.9% over 14 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "type": "http",
  "method": "GET",
  "queryParams": {
    "type": "object",
    "properties": {
      "q": {
        "type": "string",
        "example": "airpods",
        "minLength": 1,
        "description": "Search query (product name, keyword, or brand + model). Required unless `product_uid` or `entity_uid` is supplied."
      },
      "to": {
        "type": "string",
        "format": "date",
        "example": "2026-06-01",
        "description": "End date (ISO 8601, defaults to now)"
      },
      "win": {
        "enum": [
          7,
          30,
          90
        ],
        "type": "integer",
        "default": 30,
        "description": "Window in days for series_summary.change_pct. Independent of the chart range: set lookback_days (or from) far enough back to cover it."
      },
      "from": {
        "type": "string",
        "format": "date",
        "example": "2026-05-01",
        "description": "Start date (ISO 8601, defaults to 30 days ago)"
      },
      "country": {
        "enum": [
          "us",
          "ca"
        ],
        "type": "string",
        "default": "us",
        "example": "us",
        "description": "Country (us or ca)"
      },
      "retailer": {
        "enum": [
          "amazon",
          "walmart",
          "target",
          "bestbuy",
          "homedepot",
          "costco",
          "ikea",
          "samsclub",
          "cvs",
          "dillards"
        ],
        "type": "string",
        "example": "amazon",
        "description": "Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)"
      },
      "entity_uid": {
        "type": "string",
        "example": "e_airpods_deal",
        "minLength": 1,
        "description": "Stable cross-retailer entity identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should resolve within the same physical-product entity."
      },
      "product_uid": {
        "type": "string",
        "example": "p_airpods_deal",
        "minLength": 1,
        "description": "Stable product identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should pin to this listing instead of re-resolving free text."
      },
      "time_window": {
        "enum": [
          "last_30_days",
          "last_60_days",
          "last_90_days",
          "month_to_date",
          "previous_month",
          "month_over_month",
          "quarter_to_date",
          "custom"
        ],
        "type": "string",
        "example": "last_60_days",
        "description": "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`."
      }
    }
  }
}

Output schema

{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "input"
  ],
  "properties": {
    "input": {
      "type": "object",
      "required": [
        "type",
        "method"
      ],
      "properties": {
        "type": {
          "type": "string",
          "const": "http"
        },
        "method": {
          "enum": [
            "GET",
            "HEAD",
            "DELETE"
          ],
          "type": "string"
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "queryParams": {
          "type": "object",
          "anyOf": [
            {
              "required": [
                "q"
              ]
            },
            {
              "required": [
                "product_uid"
              ]
            },
            {
              "required": [
                "entity_uid"
              ]
            }
          ],
          "properties": {
            "q": {
              "type": "string",
              "example": "airpods",
              "minLength": 1,
              "description": "Search query (product name, keyword, or brand + model). Required unless `product_uid` or `entity_uid` is supplied."
            },
            "to": {
              "type": "string",
              "format": "date",
              "example": "2026-06-01",
              "description": "End date (ISO 8601, defaults to now)"
            },
            "win": {
              "enum": [
                7,
                30,
                90
              ],
              "type": "integer",
              "default": 30,
              "description": "Window in days for series_summary.change_pct. Independent of the chart range: set lookback_days (or from) far enough back to cover it."
            },
            "from": {
              "type": "string",
              "format": "date",
              "example": "2026-05-01",
              "description": "Start date (ISO 8601, defaults to 30 days ago)"
            },
            "country": {
              "enum": [
                "us",
                "ca"
              ],
              "type": "string",
              "default": "us",
              "example": "us",
              "description": "Country (us or ca)"
            },
            "retailer": {
              "enum": [
                "amazon",
                "walmart",
                "target",
                "bestbuy",
                "homedepot",
                "costco",
                "ikea",
                "samsclub",
                "cvs",
                "dillards"
              ],
              "type": "string",
              "example": "amazon",
              "description": "Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)"
            },
            "entity_uid": {
              "type": "string",
              "example": "e_airpods_deal",
              "minLength": 1,
              "description": "Stable cross-retailer entity identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should resolve within the same physical-product entity."
            },
            "publish_id": {
              "type": "string",
              "minLength": 1,
              "description": "Optional. Pin the answer to a serving publish: pass meta.publish_id from an earlier answer. When the served snapshot has moved on, or cannot be confirmed, the request is answered 409 PUBLISH_CHANGED naming the current publish, before any payment challenge and free. Use it to keep several answers on one snapshot."
            },
            "product_uid": {
              "type": "string",
              "example": "p_airpods_deal",
              "minLength": 1,
              "description": "Stable product identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should pin to this listing instead of re-resolving free text."
            },
            "retailer_id": {
              "type": "string",
              "example": "retailer:samsclub",
              "pattern": "^retailer:[a-z0-9]{1,64}$",
              "description": "A chain by id, from GET /v1/ontology/resolve (a retailer match's `id`): the chain (seller_norm) whatever lane its listings were scraped through, never a lane. `retailer=` matches the scrape lane, so a Shopify store's chain can only be asked for by id (#1090). Send it instead of `retailer=`, not with it."
            },
            "time_window": {
              "enum": [
                "last_30_days",
                "last_60_days",
                "last_90_days",
                "month_to_date",
                "previous_month",
                "month_over_month",
                "quarter_to_date",
                "custom"
              ],
              "type": "string",
              "example": "last_60_days",
              "description": "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`."
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "output": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "example": {
          "type": "object"
        }
      }
    }
  }
}