pricewatcha
Track prices & price history on any online shop, with alerts and an API
Should I use this
Quality & Safety
Findings (11)
- HIGH
- MEDIUMin create_price_alert
- MEDIUMin list_price_alerts
- MEDIUMin get_price_alert
- MEDIUMin update_price_alert
- MEDIUMin delete_price_alert
- MEDIUMin watch_product
- MEDIUMin unwatch_product
- MEDIUMin list_watchlist
- MEDIUMin get_watch_status
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"pricewatcha": {
"url": "https://mcp.pricewatcha.com"
}
}
}Remote endpoints
https://mcp.pricewatcha.comstreamable-httpWhat it can do
Tool inventory
Tools (15)
🟢get_api_status
Check whether the Pricewatcha public API is available. Returns health and discovery metadata. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"base_url": {
"type": "string"
},
"health": {
"type": "object",
"properties": {
"status": {
"type": "string"
},
"service": {
"type": "string"
},
"version": {
"type": "string"
}
},
"required": [
"status",
"service",
"version"
],
"additionalProperties": true
},
"api": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"version": {
"type": "string"
},
"status": {
"type": "string"
},
"description": {
"type": "string"
},
"agent_ready": {
"type": "boolean"
}
},
"required": [
"name",
"version",
"status"
],
"additionalProperties": true
}
},
"required": [
"base_url",
"health",
"api"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡track_product(url, api_key, watch, refresh)
Submit a public product URL for price tracking. Waits up to ~25s server-side; fast shops return status "completed" with product in one call. Slow jobs return status "running" with job_id — poll get_job_status. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Public product page URL from a supported shop"
},
"api_key": {
"type": "string",
"minLength": 1,
"description": "Optional API key (pwk_live_...). Required for watch/refresh."
},
"watch": {
"type": "boolean",
"description": "If true (API key required), enroll the product for continuous scheduler updates."
},
"refresh": {
"type": "boolean",
"description": "If true (API key required), force a re-scrape even if the URL is already in the catalog."
}
},
"required": [
"url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"queued",
"running",
"completed",
"failed"
]
},
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"name": {
"type": "string"
},
"shop": {
"type": "string"
},
"product_url": {
"type": "string"
},
"currency": {
"type": "string"
},
"current_price": {
"type": [
"number",
"null"
]
},
"status": {
"type": "string"
},
"last_checked_at": {
"type": [
"string",
"null"
]
}
},
"required": [
"product_id",
"name",
"shop",
"currency"
],
"additionalProperties": true
},
{
"type": "null"
}
]
},
"error": {
"anyOf": [
{
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"http_status": {
"type": [
"number",
"null"
]
},
"retry_recommended": {
"type": "boolean"
},
"retry_after_seconds": {
"type": [
"number",
"null"
]
}
},
"required": [
"code",
"message",
"retry_recommended"
],
"additionalProperties": true
},
{
"type": "null"
}
]
},
"hint": {
"type": "string"
}
},
"required": [
"job_id",
"status"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_job_status(job_id)
Poll an async tracking job by job_id. Returns status (queued, running, completed, or failed). On completion, product is populated; on scrape failure, error is populated (HTTP 200 job lookup — not a transport error). On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "Job ID from track_product"
}
},
"required": [
"job_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"queued",
"running",
"completed",
"failed"
]
},
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"name": {
"type": "string"
},
"shop": {
"type": "string"
},
"product_url": {
"type": "string"
},
"currency": {
"type": "string"
},
"current_price": {
"type": [
"number",
"null"
]
},
"status": {
"type": "string"
},
"last_checked_at": {
"type": [
"string",
"null"
]
}
},
"required": [
"product_id",
"name",
"shop",
"currency"
],
"additionalProperties": true
},
{
"type": "null"
}
]
},
"error": {
"anyOf": [
{
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"http_status": {
"type": [
"number",
"null"
]
},
"retry_recommended": {
"type": "boolean"
},
"retry_after_seconds": {
"type": [
"number",
"null"
]
}
},
"required": [
"code",
"message",
"retry_recommended"
],
"additionalProperties": true
},
{
"type": "null"
}
]
},
"hint": {
"type": "string"
}
},
"required": [
"job_id",
"status"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_product(product_id)
Get structured product price intelligence by product_id (e.g. demo_iphone_15_pro or prod_xxx from a completed job). On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"minLength": 1,
"description": "Public product ID"
}
},
"required": [
"product_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"name": {
"type": "string"
},
"shop": {
"type": "string"
},
"product_url": {
"type": "string"
},
"currency": {
"type": "string"
},
"current_price": {
"type": [
"number",
"null"
]
},
"status": {
"type": "string"
},
"last_checked_at": {
"type": [
"string",
"null"
]
},
"preview": {
"type": "boolean"
}
},
"required": [
"product_id",
"name",
"shop",
"currency"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_price_history(product_id)
Get historical prices, aggregates (low/high/average), trend, and data points for a product. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"minLength": 1,
"description": "Public product ID"
}
},
"required": [
"product_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"currency": {
"type": "string"
},
"current_price": {
"type": [
"number",
"null"
]
},
"historical_low": {
"type": [
"number",
"null"
]
},
"historical_high": {
"type": [
"number",
"null"
]
},
"average_price": {
"type": [
"number",
"null"
]
},
"trend": {
"type": "string",
"enum": [
"upward",
"downward",
"stable",
"unknown"
]
},
"data_points": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"price": {
"type": "number"
}
},
"required": [
"date",
"price"
],
"additionalProperties": false
}
},
"preview": {
"type": "boolean"
}
},
"required": [
"product_id",
"currency",
"data_points"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_products(query)
Searches the Pricewatcha product catalog by keyword (token AND; word order does not matter). Supports minus-prefixed exclude terms: e.g. "iPhone 15 -cover -case" returns devices only. Returns product-level data only — not user accounts or alert settings. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Search keywords (token AND). Supports minus-prefixed exclude terms: e.g. \"iPhone 15 -cover -case\""
}
},
"required": [
"query"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"count": {
"type": "integer"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"name": {
"type": "string"
},
"shop": {
"type": "string"
},
"product_url": {
"type": [
"string",
"null"
]
},
"current_price": {
"type": [
"number",
"null"
]
},
"currency": {
"type": "string"
},
"status": {
"type": "string"
},
"preview": {
"type": "boolean"
}
},
"required": [
"product_id",
"name",
"shop"
],
"additionalProperties": true
}
}
},
"required": [
"query",
"count",
"results"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴create_price_alert(api_key, product_id, notify_on_drop, notify_on_rise, min_threshold_price, ...)
Create a price alert for a product. Use notify_on_drop / notify_on_rise for any price change without a numeric threshold, and/or min_threshold_price / max_threshold_price for target prices. At least one of those four settings is required. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/profile#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"minLength": 1,
"description": "Pricewatcha API key (pwk_live_...)"
},
"product_id": {
"type": "string",
"minLength": 1,
"description": "Public product ID (prod_... or demo_...)"
},
"notify_on_drop": {
"type": "boolean",
"description": "Notify on any price drop. No threshold required."
},
"notify_on_rise": {
"type": "boolean",
"description": "Notify on any price increase. No threshold required."
},
"min_threshold_price": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Notify when the price drops to or below this value."
},
"max_threshold_price": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Notify when the price rises to or above this value."
},
"notify_email": {
"type": "boolean",
"description": "Send email notifications (default true)"
},
"webhook_url": {
"type": "string",
"format": "uri",
"description": "Optional HTTPS webhook URL"
},
"name": {
"type": "string",
"maxLength": 128,
"description": "Optional alert name"
}
},
"required": [
"api_key",
"product_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"alert_id": {
"type": "integer"
},
"product_id": {
"type": "string"
},
"min_threshold_price": {
"type": [
"number",
"null"
]
},
"max_threshold_price": {
"type": [
"number",
"null"
]
},
"notify_on_drop": {
"type": "boolean"
},
"notify_on_rise": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"webhook_url": {
"type": [
"string",
"null"
]
},
"notify_email": {
"type": "boolean"
},
"name": {
"type": [
"string",
"null"
]
},
"is_active": {
"type": "boolean"
},
"created_at": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"last_triggered_at": {
"type": [
"string",
"null"
]
}
},
"required": [
"alert_id",
"product_id",
"notify_on_drop",
"notify_on_rise",
"currency",
"notify_email",
"is_active",
"created_at",
"updated_at"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_price_alerts(api_key, product_id)
List your price alerts. Optionally filter by product_id. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/profile#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"minLength": 1,
"description": "Pricewatcha API key (pwk_live_...)"
},
"product_id": {
"type": "string",
"minLength": 1,
"description": "Optional public product ID filter"
}
},
"required": [
"api_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"alerts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"alert_id": {
"type": "integer"
},
"product_id": {
"type": "string"
},
"min_threshold_price": {
"type": [
"number",
"null"
]
},
"max_threshold_price": {
"type": [
"number",
"null"
]
},
"notify_on_drop": {
"type": "boolean"
},
"notify_on_rise": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"webhook_url": {
"type": [
"string",
"null"
]
},
"notify_email": {
"type": "boolean"
},
"name": {
"type": [
"string",
"null"
]
},
"is_active": {
"type": "boolean"
},
"created_at": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"last_triggered_at": {
"type": [
"string",
"null"
]
}
},
"required": [
"alert_id",
"product_id",
"notify_on_drop",
"notify_on_rise",
"currency",
"notify_email",
"is_active",
"created_at",
"updated_at"
],
"additionalProperties": true
}
}
},
"required": [
"count",
"alerts"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_price_alert(api_key, alert_id)
Get one price alert by alert_id. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/profile#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"minLength": 1,
"description": "Pricewatcha API key (pwk_live_...)"
},
"alert_id": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Alert ID from create_price_alert or list_price_alerts"
}
},
"required": [
"api_key",
"alert_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"alert_id": {
"type": "integer"
},
"product_id": {
"type": "string"
},
"min_threshold_price": {
"type": [
"number",
"null"
]
},
"max_threshold_price": {
"type": [
"number",
"null"
]
},
"notify_on_drop": {
"type": "boolean"
},
"notify_on_rise": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"webhook_url": {
"type": [
"string",
"null"
]
},
"notify_email": {
"type": "boolean"
},
"name": {
"type": [
"string",
"null"
]
},
"is_active": {
"type": "boolean"
},
"created_at": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"last_triggered_at": {
"type": [
"string",
"null"
]
}
},
"required": [
"alert_id",
"product_id",
"notify_on_drop",
"notify_on_rise",
"currency",
"notify_email",
"is_active",
"created_at",
"updated_at"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴update_price_alert(api_key, alert_id, notify_on_drop, notify_on_rise, min_threshold_price, ...)
Update a price alert. You can switch to threshold-free notify_on_drop / notify_on_rise, change thresholds, or toggle is_active. At least one setting must remain. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/profile#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"minLength": 1,
"description": "Pricewatcha API key (pwk_live_...)"
},
"alert_id": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Alert ID to update"
},
"notify_on_drop": {
"type": "boolean",
"description": "Notify on any price drop. No threshold required."
},
"notify_on_rise": {
"type": "boolean",
"description": "Notify on any price increase. No threshold required."
},
"min_threshold_price": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Min threshold, or null to clear."
},
"max_threshold_price": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Max threshold, or null to clear."
},
"notify_email": {
"type": "boolean"
},
"webhook_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"name": {
"type": "string",
"maxLength": 128
},
"is_active": {
"type": "boolean"
}
},
"required": [
"api_key",
"alert_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"alert_id": {
"type": "integer"
},
"product_id": {
"type": "string"
},
"min_threshold_price": {
"type": [
"number",
"null"
]
},
"max_threshold_price": {
"type": [
"number",
"null"
]
},
"notify_on_drop": {
"type": "boolean"
},
"notify_on_rise": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"webhook_url": {
"type": [
"string",
"null"
]
},
"notify_email": {
"type": "boolean"
},
"name": {
"type": [
"string",
"null"
]
},
"is_active": {
"type": "boolean"
},
"created_at": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"last_triggered_at": {
"type": [
"string",
"null"
]
}
},
"required": [
"alert_id",
"product_id",
"notify_on_drop",
"notify_on_rise",
"currency",
"notify_email",
"is_active",
"created_at",
"updated_at"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴delete_price_alert(api_key, alert_id)
Delete a price alert. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/profile#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"minLength": 1,
"description": "Pricewatcha API key (pwk_live_...)"
},
"alert_id": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Alert ID to delete"
}
},
"required": [
"api_key",
"alert_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"deleted": {
"type": "boolean",
"const": true
},
"alert_id": {
"type": "integer"
}
},
"required": [
"deleted",
"alert_id"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡watch_product(api_key, product_id)
Add a catalog product to your account watchlist so the price scheduler keeps updating it. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/profile#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"minLength": 1,
"description": "Pricewatcha API key (pwk_live_...)"
},
"product_id": {
"type": "string",
"minLength": 1,
"description": "Public product ID (prod_... or demo_...)"
}
},
"required": [
"api_key",
"product_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"watching": {
"type": "boolean"
},
"watched_at": {
"type": [
"string",
"null"
]
}
},
"required": [
"product_id",
"watching"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴unwatch_product(api_key, product_id)
Remove a product from your account watchlist. Fails while an active price alert exists for the product. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/profile#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"minLength": 1,
"description": "Pricewatcha API key (pwk_live_...)"
},
"product_id": {
"type": "string",
"minLength": 1,
"description": "Public product ID (prod_... or demo_...)"
}
},
"required": [
"api_key",
"product_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"watching": {
"type": "boolean"
},
"watched_at": {
"type": [
"string",
"null"
]
}
},
"required": [
"product_id",
"watching"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_watchlist(api_key, limit, offset)
List products your account watches for continuous price updates. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/profile#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"minLength": 1,
"description": "Pricewatcha API key (pwk_live_...)"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200,
"description": "Max items (default 50)"
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "Items to skip (default 0)"
}
},
"required": [
"api_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"watched_at": {
"type": "string"
},
"product": {
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"name": {
"type": "string"
},
"shop": {
"type": "string"
},
"product_url": {
"type": "string"
},
"currency": {
"type": "string"
},
"current_price": {
"type": [
"number",
"null"
]
},
"status": {
"type": "string"
},
"last_checked_at": {
"type": [
"string",
"null"
]
},
"preview": {
"type": "boolean"
}
},
"required": [
"product_id",
"name",
"shop",
"currency"
],
"additionalProperties": true
}
},
"required": [
"product_id",
"watched_at",
"product"
],
"additionalProperties": true
}
},
"total": {
"type": "integer"
}
},
"required": [
"items",
"total"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_watch_status(api_key, product_id)
Check whether your account watches a product for continuous updates. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/profile#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"minLength": 1,
"description": "Pricewatcha API key (pwk_live_...)"
},
"product_id": {
"type": "string",
"minLength": 1,
"description": "Public product ID (prod_... or demo_...)"
}
},
"required": [
"api_key",
"product_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"watching": {
"type": "boolean"
},
"watched_at": {
"type": [
"string",
"null"
]
}
},
"required": [
"product_id",
"watching"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence