Compare prices on products sold in Australia — eBay, Amazon, JB Hi-Fi and more. Free, read-only.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List published browse categories with their slug, display name and updated_at freshness. Use a slug with /api/public/browse/{slug} to retrieve its cached products. updated_at is null when no listing is cached. Cache-only.
This tool takes no arguments.
List published browse categories with their slug, display name and updated_at freshness. Use a slug with /api/public/browse/{slug} to retrieve its cached products. updated_at is null when no listing is cached. Cache-only.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Return ranked cached products for a published category. Unknown or unpublished slugs return 404. A renamed slug returns 200 with redirect_to; request that current slug. An empty category returns found: false, noindex: true and products: []. Otherwise found is true; total counts the products in this response, not all marketplace matches. Cache-only.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
},
"additionalProperties": false
}Return one cached product and any stored cross-marketplace offers. safe_id is the provider-qualified permalink ID, or a provider-less eBay ID. Unknown IDs return 404; removed public products return 410. Unavailable fields may be null. Each offer entry is one marketplace: its matched hits and last_checked, when we last checked that marketplace (ISO 8601). A hit includes in_stock: true only when its stock was confirmed. eBay listings also carry `shipping` (last-seen shipping cost and delivery window) and `return_terms` (returns accepted, window in days, who pays return postage); `gtin` appears when the listing's barcode passes its check digit. Cache-only.
| Argument | Type | Description |
|---|---|---|
| safe_id* | string |
{
"type": "object",
"required": [
"safe_id"
],
"properties": {
"safe_id": {
"type": "string"
}
},
"additionalProperties": false
}List published product permalink IDs and their updated_at freshness. Use the IDs to request individual products. Omitting limit returns the full published index; otherwise offset, page_size and has_more describe the page. ignored lists unusable paging parameters. Results can change between requests. Cache-only.
| Argument | Type | Description |
|---|---|---|
| limit | string | How many permalinks to return, clamped to 50. OMIT IT and you get the whole index — this is the sitemap's own source, so it is never truncated by default. |
| offset | string | How many permalinks to skip. Unusable values are ignored and named in `ignored`; a negative value is clamped to 0. |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "string",
"default": "",
"description": "How many permalinks to return, clamped to 50. OMIT IT and you get the whole index — this is the sitemap's own source, so it is never truncated by default."
},
"offset": {
"type": "string",
"default": "",
"description": "How many permalinks to skip. Unusable values are ignored and named in `ignored`; a negative value is clamped to 0."
}
},
"additionalProperties": false
}Resolve up to 3 comma-separated product permalink IDs into cached listings for comparison. Each listing includes url, marketplace and item_id, plus title, price and condition when available. Unresolvable IDs and IDs beyond the limit are omitted; an empty set returns listings: []. Cache-only.
| Argument | Type | Description |
|---|---|---|
| ids | string |
{
"type": "object",
"required": [],
"properties": {
"ids": {
"type": "string",
"default": ""
}
},
"additionalProperties": false
}Search cached products using query words and, when recognized, their product category. Category matching can include titles that omit the category word; insufficient category evidence falls back to title matching. An explicit category filter replaces automatic category selection. Cache-only: no live marketplace fetch. Read result first: not_searched omits products and has_more; miss returns products: []; hit returns ranked products. An offset beyond the result set also returns miss. Check filters.applied and filters.ignored to see which inputs were used. Filters apply before selecting a bounded result pool. A filtered request can return products absent from an unfiltered response. Results are ranked again for each request and may change between pages; offset pagination is not a snapshot. No catalogue-wide total is available. Use compact or fields to reduce returned product fields without changing matching or ordering. Available now: Australia (prices in AUD); other marketplaces are in progress. Use currency with price bounds when you need prices in one currency. Prices are never converted: a currency that is not served returns miss with emptied_by, available_regions and retry_url. dedupe keeps the first result for each provider and normalized title, so variants with identical titles can be combined.
| Argument | Type | Description |
|---|---|---|
| q | string | Search words. Matching uses recognized product categories and title words, with a title-match fallback. Without a searchable term the response is not_searched, even if filters are supplied. |
| sort | string | best_match (default), price (cheapest first) or price_desc (most expensive first). Invalid values use best_match and are listed in filters.ignored. |
| brand | string | Exact brand, case-insensitive. Products with no stored brand do not match. |
Resolve a historical shared-comparison token to its canonical comparison slug. A successful response contains redirect_to and result: "redirect"; it does not return the historical comparison body. Unknown or retired tokens return 404. Cache-only.
| Argument | Type | Description |
|---|---|---|
| snapshot_id* | string |
{
"type": "object",
"required": [
"snapshot_id"
],
"properties": {
"snapshot_id": {
"type": "string"
}
},
"additionalProperties": false
}List published comparisons whose products remain cached, ordered by slug, with updated_at freshness. Omitting limit returns the full published index. Otherwise use offset, page_size and has_more; ignored lists unusable paging parameters. Results may change between requests. Cache-only.
| Argument | Type | Description |
|---|---|---|
| limit | string | How many pairs to return, clamped to 50. OMIT IT and you get the whole index — this is the sitemap's own source, so it is never truncated by default. |
| offset | string | How many pairs to skip. Unusable values are ignored and named in `ignored`; a negative value is clamped to 0. |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "string",
"default": "",
"description": "How many pairs to return, clamped to 50. OMIT IT and you get the whole index — this is the sitemap's own source, so it is never truncated by default."
},
"offset": {
"type": "string",
"default": "",
"description": "How many pairs to skip. Unusable values are ignored and named in `ignored`; a negative value is clamped to 0."
}
},
"additionalProperties": false
}Return a published comparison with columns, rows, summary and product sides. Unknown, retired or suppressed slugs return 404; missing cached products return 410. A non-canonical product order returns 200 with redirect_to naming the canonical slug. Cache-only.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
},
"additionalProperties": false
}| limit | integer | Maximum products per page. Values are clamped to the range 1–50. The response echoes the applied page_size. A non-integer value returns 422. |
| dedupe | string | Set true to keep the first result for each provider and normalized title, using the selected sort order. Off by default. Variants with identical titles may be combined. deduped counts removed rows in the ranked pool before paging. |
| fields | string | Comma-separated product fields, e.g. title,price,url. Overrides compact; id and permalink are always included. Unknown names are dropped. If none are valid, the full projection is returned and fields appears in filters.ignored. |
| offset | string | Number of ranked products to skip. Negative values use zero; invalid values use zero and appear in filters.ignored. Results may change between requests. |
| compact | string | Set true for title, price, currency, condition, permalink and id only. False or empty returns full products. Invalid values are ignored. The applied selection appears in fields. |
| category | string | Published browse slug (mobile-phones) or numeric eBay category ID (9355), not a display name. Replaces automatic category selection. filters.applied echoes the supplied category and resolved ID. |
| currency | string | ISO-4217 currency code. Available now: Australia (prices in AUD); other marketplaces are in progress. Filters to prices stored in that currency and never converts prices. A currency that is not served returns miss with emptied_by, available_regions and retry_url. Use with min_price and max_price. |
| provider | string | Alias for marketplace. Ignored when marketplace is also supplied. |
| condition | string | One of new, refurbished or used. Products with no recorded condition do not match. Invalid values are ignored. |
| max_price | string | Maximum price, parsed like min_price. Available now: Australia (prices in AUD). Supply currency to restrict prices to one currency. A minimum above the maximum yields no matches. |
| min_price | string | Minimum price in each listing's stored currency. Available now: Australia (prices in AUD). Accepts 1500 or $1,500.00. Supply currency to restrict prices to one currency. Invalid values are ignored. |
| marketplace | string | Marketplace: ebay, amazon, aliexpress, jbhifi or shein. Stored locale labels such as EBAY_AU are accepted. Takes precedence over provider. |
| fresher_than | string | Only products checked since this relative age (7d, 24h, 30m) or ISO-8601 date/time. Times without a timezone use UTC. Invalid values are ignored. |
{
"type": "object",
"required": [],
"properties": {
"q": {
"type": "string",
"default": "",
"description": "Search words. Matching uses recognized product categories and title words, with a title-match fallback. Without a searchable term the response is not_searched, even if filters are supplied."
},
"sort": {
"type": "string",
"default": "",
"description": "best_match (default), price (cheapest first) or price_desc (most expensive first). Invalid values use best_match and are listed in filters.ignored."
},
"brand": {
"type": "string",
"default": "",
"description": "Exact brand, case-insensitive. Products with no stored brand do not match."
},
"limit": {
"type": "integer",
"default": 24,
"description": "Maximum products per page. Values are clamped to the range 1–50. The response echoes the applied page_size. A non-integer value returns 422."
},
"dedupe": {
"type": "string",
"default": "",
"description": "Set true to keep the first result for each provider and normalized title, using the selected sort order. Off by default. Variants with identical titles may be combined. deduped counts removed rows in the ranked pool before paging."
},
"fields": {
"type": "string",
"default": "",
"description": "Comma-separated product fields, e.g. title,price,url. Overrides compact; id and permalink are always included. Unknown names are dropped. If none are valid, the full projection is returned and fields appears in filters.ignored."
},
"offset": {
"type": "string",
"default": "",
"description": "Number of ranked products to skip. Negative values use zero; invalid values use zero and appear in filters.ignored. Results may change between requests."
},
"compact": {
"type": "string",
"default": "",
"description": "Set true for title, price, currency, condition, permalink and id only. False or empty returns full products. Invalid values are ignored. The applied selection appears in fields."
},
"category": {
"type": "string",
"default": "",
"description": "Published browse slug (mobile-phones) or numeric eBay category ID (9355), not a display name. Replaces automatic category selection. filters.applied echoes the supplied category and resolved ID."
},
"currency": {
"type": "string",
"default": "",
"description": "ISO-4217 currency code. Available now: Australia (prices in AUD); other marketplaces are in progress. Filters to prices stored in that currency and never converts prices. A currency that is not served returns miss with emptied_by, available_regions and retry_url. Use with min_price and max_price."
},
"provider": {
"type": "string",
"default": "",
"description": "Alias for marketplace. Ignored when marketplace is also supplied."
},
"condition": {
"type": "string",
"default": "",
"description": "One of new, refurbished or used. Products with no recorded condition do not match. Invalid values are ignored."
},
"max_price": {
"type": "string",
"default": "",
"description": "Maximum price, parsed like min_price. Available now: Australia (prices in AUD). Supply currency to restrict prices to one currency. A minimum above the maximum yields no matches."
},
"min_price": {
"type": "string",
"default": "",
"description": "Minimum price in each listing's stored currency. Available now: Australia (prices in AUD). Accepts 1500 or $1,500.00. Supply currency to restrict prices to one currency. Invalid values are ignored."
},
"marketplace": {
"type": "string",
"default": "",
"description": "Marketplace: ebay, amazon, aliexpress, jbhifi or shein. Stored locale labels such as EBAY_AU are accepted. Takes precedence over provider."
},
"fresher_than": {
"type": "string",
"default": "",
"description": "Only products checked since this relative age (7d, 24h, 30m) or ISO-8601 date/time. Times without a timezone use UTC. Invalid values are ignored."
}
},
"additionalProperties": false
}