Provided by Keepa
Get Amazon Product Price History by ASIN or Barcode
Get one Amazon product by ASIN or UPC, EAN, GTIN or ISBN-13 code in a selected marketplace. Returns product details, price and sales-rank history, with optional statistics, ratings, Buy Box, videos, A+ content and historical variations. Codes require code-limit=1. Native prices and Keepa Time values are preserved.
Contract snapshot: 2026-09-29. Inspect in Glasser for current terms.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain"
],
"properties": {
"asin": {
"type": "string",
"pattern": "^[A-Z0-9]{10}$"
},
"code": {
"type": "string",
"pattern": "^(?:\\d{12}|\\d{13}|\\d{14})$"
},
"days": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
"aplus": {
"enum": [
0,
1
],
"type": "number"
},
"stats": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
{
"type": "string",
"pattern": "^(?:\\d{10,13},\\d{10,13}|\\d{4}-\\d{2}-\\d{2},\\d{4}-\\d{2}-\\d{2})$"
}
]
},
"buybox": {
"enum": [
0,
1
],
"type": "number"
},
"domain": {
"enum": [
1,
2,
3,
4,
5,
6,
8,
9,
10,
11,
12
],
"type": "number"
},
"rating": {
"enum": [
0,
1
],
"type": "number"
},
"update": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -1
},
"videos": {
"enum": [
0,
1
],
"type": "number"
},
"history": {
"enum": [
0,
1
],
"type": "number"
},
"code-limit": {
"enum": [
1
],
"type": "number"
},
"historical-variations": {
"enum": [
0,
1
],
"type": "number"
}
},
"additionalProperties": false
}{
"asin": "B00M0QVG3W",
"domain": 1,
"history": 0
}This Endpoint publishes no output schema. You get the Provider's own response body, unchanged — we do not warrant a shape we cannot guarantee.
How to run it
Two fields identify it: the Provider and the endpoint key. The key looks like a path because it usually mirrors the Provider's own, but it is an opaque identifier — not a URL you can open. The same provider:endpoint pair is what your Policy lists.
Once: paste this into your agent's chat. The Skill installs the CLI and logs in by itself. For an agent that cannot use a shell, connect it over MCP instead.
set up https://glasser.ai/SKILL.mdThen ask for this Endpoint:
Run the Keepa Endpoint /product on Glasser with input {"asin":"B00M0QVG3W","domain":1,"history":0}glasser run -p keepa -e '/product' -i '{"asin":"B00M0QVG3W","domain":1,"history":0}' --endpoint-version 1Pinned to version 1, the one this page shows: if a newer version is published first, the Run is refused instead of charged under new terms. Install and log in first on Get Started.
Once per Run:
IDEMPOTENCY_KEY=$(uuidgen)Run it, and copy this same block to send it again:
curl -X POST https://api.glasser.ai/v1/runs \
-H "Authorization: Bearer gl_..." \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{"provider":"keepa","endpoint":"/product","input":{"asin":"B00M0QVG3W","domain":1,"history":0},"endpoint_version":1}'Reuse the same Idempotency-Key to send it again: the second send is a read of the first Run. A new key is a new Run and a new Charge. Pinned to version 1 for the same reason as the CLI.
What each outcome charges
| No result | The Provider answered: nothing matched. | $0.00 |
|---|---|---|
| Provider error | The Provider failed to answer. | $0.00 |
| Timed out | The deadline won. | $0.00 |
| Internal failure | Our defect. | $0.00 |