Shopflix.gr API & Scraper
The Shopflix.gr API turns Greece's multi-vendor marketplace into JSON in seven actions.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
search takes Greek or English words and returns the product grid: the sku you use everywhere else, the title, Shopflix's own price in euros, the cheapest and the dearest merchant price for that product, how many merchants carry it, the Greek category path, the rating where the product has reviews, and the product's images. The same rows come back from category for a whole department without a keyword, and both accept category, brand, merchant, minimum and maximum price, and five sort orders including cheapest and biggest discount first. product returns the full product: every technical specification row as a named pair, the description, the manufacturer, the manufacturer part number, shipping weight and box dimensions, the images and the category. offers is the action the marketplace exists for: every merchant selling that product, with the shop name, the shop's own rating, its price, its shipping fee, its stock quantity and how many instalments it offers. reviews returns customer reviews with the rating breakdown, and categories and suggest are the two cheap lookups that make the rest easy to drive. One figure is deliberately published twice and the two are not the same: merchant_count is how many merchants the market has and offers_named is how many of them Shopflix names in the response, so the full price list always comes back even where the names stop at five. Measured on 2026-10-06: across 382 product rows from 25 calls in 10 Greek and English query families, the sku, title, url, price, price band, merchant count, category path and images were filled on every single row, and no row carried markup in its title. One thing this source cannot do, stated plainly because it decides whether the API is useful to you: Shopflix cannot be searched by barcode. Its own search covers product name, sku, merchant name and spec values, and ten EAN-13 codes that provably belong to Shopflix products returned zero results. What does come back is gtin13, the barcode recovered from the product's own images, on 111 of those 382 rows — 21 of 25 LEGO rows and 15 of 25 television rows, but only 1 of 25 on fashion. It is a join key for matching Shopflix against your own EAN catalogue, not a way to look a barcode up. One ReefAPI key, the standard { ok, data, meta, error } envelope, and no Shopflix account of any kind.
Which Shopflix number is which
Five of these fields look interchangeable and are not. Measured on 2026-10-06.
| Field | What it is | Measured example |
|---|---|---|
| price_eur (row) | Shopflix's own headline price for the product, in euros | 1568.00 on the Apple iPhone 18 Pro 256GB |
| price_min_eur / price_max_eur | The cheapest and dearest merchant price for that product | 1549.00 to 1936.30 across 14 merchants on the same product |
| merchant_count | How many merchants the market has for the product | 14, 2, 9 and 30 on four measured products |
| offers_named | How many of them this response names. Shopflix names the top five | 5 of 14, 2 of 2, 5 of 9, 5 of 30 |
| merchant_prices[] | Every merchant's price, cheapest first, by merchant reference | 14 rows on the product whose named list held 5 |
| offers[].stock_quantity | The units that merchant declares in stock | 100, 45 and 1 on three merchants of one product |
| gtin13 | The product's EAN-13, recovered from its own images and checksum-checked | 5702016912920 on a LEGO Technic set; null where it cannot be recovered |
| price_band_stale | Set when the headline price and the merchant band disagree | true on 7 of 382 measured rows, absent on the rest |
offers and merchant_prices answer different questions: offers is the named list Shopflix publishes and stops at five, while merchant_prices carries every merchant's price without the shop names. Read merchant_count beside offers_named and you never have to guess which you are holding.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/shopflix/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "iphone"
}
}{
"ok": true,
"meta": {
"api": "shopflix",
"endpoint": "search",
"mode": "live",
"latency_ms": 323.9,
"record_count": 24,
"bytes": 221615,
"cache_hit": false,
"stop_reason": "limit_reached",
"sort": "relevance",
"total": 715,
"charged_credits": 1,
"version": "1.0.0",
"request_id": "7b46e68852d945e6",
"queue_ms": 1.5,
"fetched_at": "2026-10-06T14:47:18.952Z"
},
"data": {
"products": [
{
"sku": "SF-202747804",
"abstract_sku": "SFA-202747804",
"product_id": 17272178,
"title": "Apple iPhone 18 Pro 12GB 256GB Black",
"url": "https://shopflix.gr/p/SF-202747804/apple-iphone-18-pro-12gb-256gb-black",
"price_eur": 1568,
"list_price_eur": 1568,
"discount_pct": 0,
"currency": "EUR",
"price_min_eur": 1549,
"price_max_eur": 1790.95,
"merchant_count": 14,
"merchant_name": "ΝΕΑ ΓΕΝΙΑ ΤΕΧΝΟΛΟΓΙΑΣ",
"shipping_lead_time": "Παράδοση 2-3 ημέρες",
"review_count": 0,
"category_path": [
"Αρχική",
"Τεχνολογία",
"Τηλεφωνία"
],
"images": [
"https://cdn.shopflix.gr/products/SFA-202747804/images/530/20260910113449_2156500apple00000012505075hero800x800.webp",
"https://cdn.shopflix.gr/products/SFA-202747804/images/530/20260910113453_2156500apple0000001250507501800x800.webp",
"https://cdn.shopflix.gr/products/SFA-202747804/images/530/20260911053531_img21451581_m_jpeg_1_ff3fbdcefbd349009c01a2ff15d67ae8.webp"
]
},
{
"sku": "SF-202781433",
"abstract_sku": "SFA-202781433",
"product_id": 17284150,
"title": "Apple iPhone 18 Pro 12GB 256GB Burgundy",
"url": "https://shopflix.gr/p/SF-202781433/apple-iphone-18-pro-12gb-256gb-burgundy",
"price_eur": 1699,
"list_price_eur": 1699,
"discount_pct": 0,
"currency": "EUR",
"price_min_eur": 1699,
"price_max_eur": 1749,
"merchant_count": 2,
"merchant_name": "Metrostore",
"shipping_lead_time": "Παράδοση 10-30 ημέρες",
"review_count": 0,
"category_path": [
"Αρχική",
"Τεχνολογία",
"Τηλεφωνία"
],
"images": [
"https://cdn.shopflix.gr/products/SFA-202781433/images/530/20260910131805_2156503apple00000012505078hero800x800.webp",
"https://cdn.shopflix.gr/products/SFA-202781433/images/530/20260910131809_2156503apple0000001250507801800x800.webp",
"https://cdn.shopflix.gr/products/SFA-202781433/images/530/20260911082411_img21451581_m_jpeg_1_ff3fbdcefbd349009c01a2ff15d67ae8.webp"
]
},
{
"sku": "SF-12065608",
"abstract_sku": "SFA-12065608",
"product_id": 843876,
"title": "Apple iPhone 14 5G 6GB 128GB Midnight Refurbished Grade A",
"url": "https://shopflix.gr/p/SF-12065608/apple-iphone-14-5g-6gb-128gb-midnight-refurbished-grade-a",
"price_eur": 390,
"discount_pct": 0,
"currency": "EUR",
"price_min_eur": 390,
"price_max_eur": 422.94,
"merchant_count": 2,
"merchant_name": "MobiPlace",
"shipping_lead_time": "Άμεση Παράδοση",
"rating": 5,
"review_count": 3,
"category_path": [
"Αρχική",
"Τεχνολογία",
"Τηλεφωνία"
],
"images": [
"https://cdn.shopflix.gr/products/SFA-12065608/images/530/gA58g31.jpeg",
"https://cdn.shopflix.gr/products/SFA-12065608/images/530/oQ0jhdZ.jpeg",
"https://cdn.shopflix.gr/products/SFA-12065608/images/530/3bA2S1p.jpeg"
]
}
],
"total": 715,
"page": 1,
"limit": 24,
"pages": 30,
"query": "iphone"
}
}What the Shopflix.gr API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search Shopflix by keyword. Returns the product grid with the Shopflix price, the cheapest and dearest merchant price for that product, how many merchants carry it, the category path, rating and the sku you feed to `product` and `offers`. 🔴 Shopflix cannot be searched by barcode: its search index covers product name, sku, merchant name and spec values only — an EAN returns 0 rows. Rows do carry a `gtin13` when one can be recovered from the product's own images (about 30% of rows, far higher in toys and TVs), so you can join results onto an EAN catalogue. | Pricing teams call search to search Shopflix by keyword. | query, category_id, brand, merchant, min_price, ... |
| category | Browse one Shopflix category without a keyword — same rows as `search`. Take the id from `categories`, from a search row's URL, or from any shopflix.gr /c/<id>/ link. | Marketplace operators call category to get browse one Shopflix category without a keyword. | category_id, query, brand, merchant, min_price, ... |
| product | One product in full: title, description, every technical specification row, images, manufacturer part number, shipping weight and box dimensions, rating and review count, category. `gtin13` is the barcode recovered from the product's own images when one is recoverable; `ean_published` is the source's own barcode field, which Shopflix leaves empty on the products measured. | Catalog enrichment teams call product to get one product in full. | sku |
| offers | Every merchant selling one product. Returns TWO lists on purpose: `offers[]` is the named merchant offers Shopflix publishes (shop name, shop rating, price, shipping fee, stock quantity, instalments) and is capped at 5 by the source; `merchant_prices[]` is EVERY merchant's price for that product, which the search index knows but without shop names. `merchant_count` is the real number of sellers. | Retail analysts call offers to get every merchant selling one product. | sku |
| reviews | Customer reviews for one product, with the rating breakdown Shopflix publishes. Reviews are keyed on the ABSTRACT sku (SFA-…); a concrete sku (SF-…) is accepted and resolved for you. | Pricing teams call reviews to get customer reviews for one product, with the rating breakdown Shopflix publishes. | sku, page, limit, sort, min_rating, ... |
| categories | Shopflix's category tree — the ids `search` and `category` take. Called without a query it returns the full published navigation (every department and its children, with parent and depth). Called with a query it searches the category index by name. | Marketplace operators call categories to get shopflix's category tree. | query, limit |
| suggest | Shopflix's own search autocomplete: the real queries its shoppers type, with how many products each one matches. A cheap way to find the Greek wording that actually has a catalogue behind it before spending a `search` call. | Catalog enrichment teams call suggest to get shopflix's own search autocomplete. | query, limit |
Call search from your stack
curl -X POST https://api.reefapi.com/shopflix/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"iphone"}'import requests
r = requests.post(
"https://api.reefapi.com/shopflix/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "iphone"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/shopflix/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "iphone"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.shopflix.search with {"query":"iphone"}.Who uses this API and why
- Greek price monitoring on a marketplace: one sku, every merchant's price, stock quantity and shipping lead time in euros.
- Repricing for merchants selling on Shopflix: see where your own offer sits against every other merchant on the same sku.
- Cross-checking a third Greek source beside Skroutz and BestPrice before publishing a price or a cheapest-offer claim.
- Catalogue enrichment: full specification rows, manufacturer, part number, shipping weight and box dimensions from a keyword.
- Category-level market research: walk any of 659 departments by id with price, brand and merchant filters and five sort orders.
Questions developers ask before integrating
Can I search Shopflix by barcode or EAN?
No, and this is measured rather than assumed, because it decides whether the API fits your pipeline. Shopflix's own search covers the product name, the sku, the merchant name and spec values. Ten EAN-13 codes that provably belong to products Shopflix sells returned zero results each, and the source's own barcode field was empty on all twenty products sampled across twelve query families. A barcode query therefore comes back as a successful call with zero rows, never as an error. What you do get is gtin13 on the rows where it can be recovered from the product's own images and the check digit validates: 111 of 382 measured rows, which is 21 of 25 on LEGO and 15 of 25 on televisions but only 1 of 25 on fashion. That makes it a join key — match Shopflix rows against your own EAN catalogue — not a lookup key.
Do I get every merchant selling a product?
You get every merchant's price, and the shop names for the top five. Shopflix publishes five named offers per product however you ask, while telling you the real number of sellers, so the response carries both: offers with shop name, shop rating, price, shipping fee, stock quantity and instalments for up to five, and merchant_prices with every merchant's price and shipping lead time by merchant reference. Measured on four products on 2026-10-06: 14 merchants with 5 named, 2 with 2 named, 9 with 5 named and 30 with 5 named. The cheapest and dearest price always come from the full list, so price_min_eur and price_max_eur describe the whole market even when the names stop at five.
Does it work with Greek keywords?
Yes, and Greek is the better way to search it. Eight of the ten measured query families were Greek and each returned a full page of rows: 1 657 matches for a fridge, 3 812 for a coffee machine, 5 692 for shampoo, 20 531 for perfume. The same words transliterated into Latin letters returned zero, so a Greek-language query is not a nicety here. The suggest action exists for exactly this: it returns Shopflix's own autocomplete, the real queries its shoppers type, with how many products each one matches, so you can find the wording that has a catalogue behind it before spending a search call.
Are the prices numbers, and in which currency?
Numbers, in euros, on every row and every offer. Measured across 382 rows: the price, the cheapest merchant price and the dearest merchant price were filled on all 382. There is one currency because there is one market — shopflix.gr is Greece only, and there is no country parameter behind it. One honesty detail ships with it: on 7 of those 382 rows Shopflix's headline price fell outside its own merchant price band, and those rows carry price_band_stale so the disagreement is visible instead of one of the two numbers being quietly dropped.
Do the filters actually narrow the result, or are they accepted and ignored?
They narrow it, and the control numbers are published rather than claimed. Measured in the same run on 2026-10-06: a laptop search returns 1 521 products, and 250 with brand HP, 765 above 1500 euros, 26 below 300 euros, and 0 inside the Smartphones department. An iphone search returns 716 products and 370 with merchant Techaway. A review call returns 16 reviews and 12 with a minimum rating of five. Sorting reorders too: cheapest-first gave 90, 100, 100 euros where dearest-first gave 3 399 on the same query. One scope note so nobody is surprised — the merchant filter matches the products a merchant is the recommended seller for, which is not the same as everything that merchant stocks; use offers for the full seller list of one product.
How do I go from a search result to the price comparison?
Every search and category row hands back the sku, and both product and offers take that sku or a full shopflix.gr product URL. A dead or wrong sku is answered with NOT_FOUND rather than an empty-looking success, and a value that is not a sku at all comes back as INVALID_PARAM saying so, which matters here because the source answers an unknown id with a server error rather than a clean 404.
What does this add if I already use Skroutz and BestPrice?
A third Greek source, and a different kind of one. Skroutz and BestPrice are comparison sites that index other shops; Shopflix is a marketplace where the merchants sell on the platform itself, so it carries its own merchant set, its own stock quantities and its own per-merchant shipping lead times and instalment offers. Reading all three is how a Greek pricing tool sees the market rather than one site's view of it. Each is a separate engine here with its own actions and its own credit price.
Which fields can be empty?
Counted rather than assumed, across 382 rows on 2026-10-06. Always filled: sku, title, url, price, the cheapest and dearest merchant price, the merchant count, the category path and the images, all 382 of 382. Filled part of the time: the rating, on 155 of 382, because Shopflix publishes one only where the product has reviews, and gtin13 on 111 of 382 as described above. Returned as null when the source is silent: the source's own barcode field, the ISBN, and the manufacturer part number, which was present on fashion products and absent on the electronics measured. Nothing is invented to fill a gap, and nothing is copied down from a parent product to make a column look complete.
What is the Shopflix.gr API?
Shopflix.gr API is a ReefAPI endpoint group for greek marketplace: every merchant's price and stock for one product, full specs, reviews and the category tree, in eur. It returns live JSON through POST requests under /shopflix/v1.
Is the Shopflix.gr API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Shopflix.gr calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Shopflix.gr login or account?
No login to Shopflix.gr is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Shopflix.gr data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Shopflix.gr API use?
Shopflix.gr actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Shopflix.gr from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call shopflix actions with the same key, credit pool and JSON envelope used by normal REST requests.