# PriceSpy

Price comparison data from **pricespy.co.uk**, the British site of the Prisjakt group: every shop's
offer for a product, with price, shipping, stock status and the shop's rating, in kwery's
standard normalized shape.

## Request 

Send `source: "pricespy"`. It is a brand alias for the Prisjakt group's shared catalogue with
the country fixed to `uk`, so `country` can be left out:

```json
{ "source": "pricespy", "key": "gtin", "values": ["4006381333962"] }
```

`{ "source": "prisjakt", "country": "uk" }` is the same request. The job is
reported back as `source: "pricespy"` with `country: "uk"` — the name you sent. Internally it is one source, `prisjakt`, which is also the entitlement name (`prisjakt.uk`).

|  |  |
|  --- | --- |
| `source` | `pricespy` (alias of `prisjakt` + `country: uk`) |
| `country` | `uk` or `gb`, the same market |
| Site | pricespy.co.uk |
| Currency | GBP |


A product has the same ID on every site of the group, and a GTIN resolves to the same product
everywhere; the offers, prices and stock are those of the shops on pricespy.co.uk. A product that exists
in the catalogue but has no shop offering it on pricespy.co.uk is still returned as found, with
`offers: []` and the price fields `null`.

Other sites of the group: [Prisjakt](/sources/prisjakt) · [Prisjagt](/sources/prisjagt) · [Hintaopas](/sources/hintaopas) · [Le Dénicheur](/sources/ledenicheur).

## Keys 

| Key | Values | Description |
|  --- | --- | --- |
| `gtin` | EAN / GTIN-13 (12 to 14 digits accepted) | Resolved to the matching product and its variant, then fetched. Exact match only: an unknown barcode is `not found`, never a similar product. |
| `id` | Prisjakt group product ID (numeric, valid on every site) | Direct product lookup. Returns the offers of all variants. |
| `term` | Free text | Keyword search; returns a list of matching products. |


## Topics 

| Topic | Description |
|  --- | --- |
| `search` (default) | Product with its offers across shops. |
| `search_and_offers` | Same data as `search`; accepted for compatibility with other sources. |


## Fields 

Product level (`content`):

| Field | Description |
|  --- | --- |
| `product_id` | Prisjakt group catalogue ID, valid on every site of the group. |
| `name` / `brand_name` / `image_url` / `url` | Product identity and the product page on the selected site. |
| `gtin` | The barcode you asked for (`gtin` lookups). |
| `category` | The deepest category name on the product page. |
| `rating` / `rating_count` | PriceSpy user rating (0–5) and how many ratings. |
| `variant` / `variant_id` / `variants` | The variant a `gtin` resolved to (name and ID), and the names of all variants of the product. |
| `price_min` / `price_avg` / `price_max` | Aggregates over the offers' total price (price plus shipping where the shop states it). |
| `offers_count` / `total_offers_count` | Offers in this response, and the site's count across all variants of the product. For a `gtin` lookup the first is the selected variant's offers only. |


Each entry in `offers[]`:

| Field | Description |
|  --- | --- |
| `seller_name` / `seller_id` / `seller_rating` / `seller_rating_count` | The shop, with its PriceSpy user rating (0–5). |
| `price` / `currency` / `old_price` / `price_type` | Current price, the shop's former price where it shows one, and PriceSpy's label (`RegularPrice`, `SalePrice`, `MemberPrice`). |
| `on_sale` / `promo_text` / `is_member_price` | Unified promotion flags derived from the two fields above: `on_sale` when a former price or a `SalePrice` label exists, `is_member_price` for `MemberPrice`; `promo_text` carries the site's wording where there is one. |
| `shipping` / `shipping_method` / `delivery_days` / `total` | The shop's cheapest shipping option: cost, method and delivery time, plus `total` = price plus shipping. `null` when the shop publishes no shipping cost. |
| `condition` / `condition_grade` | `New`, `Refurbished` or `Used`, with the shop's grade where given. |
| `availability` / `availability_date` | Unified stock status (see [Availability](/sources#availability)) and the date a back-ordered or pre-order item ships. |
| `variant_id` | Which variant of the product the offer is for. |
| `is_featured` | `true` for the offers PriceSpy lists as featured. |


## Example 

```bash
curl -s https://api.kwery.co/job \
  -H "Authorization: Bearer $KWERY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"source":"pricespy","key":"gtin","values":["4006381333962"]}'
```