# Skroutz Scraper: Prices, Shop Offers & Price History (`fayoussef/skroutz-scraper`) Actor

Scrape Skroutz products from Greece, Cyprus, Bulgaria, Romania, Germany and Malta in English, Greek, Bulgarian, Romanian or German. Paste any category, brand, shop or search URL, or search by keyword, and get prices, ratings and specs, plus every shop's offer and price history.

- **URL**: https://apify.com/fayoussef/skroutz-scraper.md
- **Developed by:** [youssef farhan](https://apify.com/fayoussef) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Skroutz Scraper: Prices, Shop Offers & Price History from Skroutz.gr, .cy, .bg, .ro, .de and .mt

> **What is the Skroutz Scraper?** It is an Apify Actor that extracts product data from Skroutz, the largest price comparison marketplace in Greece, across all six Skroutz country sites. For every product you get the price, rating, specs, delivery and category, and optionally the full list of shops selling it and its day-by-day lowest-price history, as JSON, CSV or Excel.

Scrape **Skroutz product listings** automatically, in **English, Greek, Bulgarian, Romanian or German**. Paste any Skroutz category, brand, shop or search URL, or just type a keyword, and the Actor walks the result pages for you. Built for **e-shops, brands, price monitoring tools and market analysts** working in Greece, Cyprus and the wider Skroutz markets.

**Read this in another language:** [English (default)](#english) · [Ελληνικά / Greek](#greek-version)

***

### English

#### Key features at a glance

- **All six Skroutz sites** : Greece (skroutz.gr), Cyprus (skroutz.cy), Bulgaria (skroutz.bg), Romania (skroutz.ro), Germany (skroutz.de) and Malta (skroutz.mt).
- **Five languages** : English, Greek, Bulgarian, Romanian and German, wherever Skroutz offers them.
- **Every shop's offer** (optional) : shop name, price, shop rating, stock, delivery date and shipping cost for each product, plus the lowest and highest offer.
- **Price history** (optional) : the lowest price and the shop offering it for every day Skroutz has on record, with the all-time low and the lowest price of the last 30 and 90 days.
- **No URL needed** : search by keyword across one or several country sites, sorted and filtered by price.
- **Any Skroutz page works** : categories, filtered categories, brands, shops, search results and single products.
- **Compare countries** : run the same search on several Skroutz sites in one go, with the currency on every record.
- **Export anywhere** : JSON, CSV, Excel, XML or JSONL via the Apify dataset or API.

#### Supported Skroutz sites and languages

| Site | Country | Currency | Languages |
|---|---|---|---|
| skroutz.gr | Greece | EUR | Greek, English, Bulgarian, German, Romanian |
| skroutz.cy | Cyprus | EUR | Greek, English |
| skroutz.bg | Bulgaria | EUR | Bulgarian, English |
| skroutz.ro | Romania | RON (lei) | Romanian, English |
| skroutz.de | Germany | EUR | German, Greek, English |
| skroutz.mt | Malta | EUR | English |

Pick the language once in the input. If a site does not offer it, that site's own language is used and the run log says so.

#### What data does the Skroutz scraper extract?

**Product**

- Product name, URL and Skroutz product id
- Price, and the upper price for products sold in a price range (sizes, colours)
- Currency (EUR or RON)
- Rating and number of reviews
- Spec summary (for example camera, screen and battery for phones)
- Number of variations
- Badge (for example Top Seller) and deal badge
- Delivery label and delivery estimate
- Instalment offer
- Whether the product is sponsored, and whether it can be bought through Skroutz checkout
- Image URL
- Category id and name
- Site, country and language of the record

Single product URLs also return **brand, MPN, model, colour and availability**.

**Shop offers** (when "Include every shop's offer" is on)

- `offers_count`, `lowest_offer_price`, `highest_offer_price`, `brand`
- `offers`: one entry per shop with `shop_name`, `shop_id`, `shop_url`, `price`, `product_name` (the shop's own title), `shop_rating`, `shop_reviews`, `shop_location`, `stock`, `delivery`, `shipping_cost`, `store_pickup`, `shipped_by_skroutz`, `featured` and `sponsored`, cheapest first

**Price history** (when "Include price history" is on)

- `all_time_low` and `all_time_low_date`
- `lowest_price_30_days` and `lowest_price_90_days`
- `price_history`: one entry per day with `date`, `lowest_price` and the `shop_name` that offered it

#### Sample output

A real record from skroutz.ro in English, trimmed to one shop offer and one day of history.

```json
{
  "url": "https://www.skroutz.ro/s/67560606/lego-speed-champions-ford-mustang-for-ages-9-345-pieces-77262.html",
  "id": 67560606,
  "name": "LEGO Speed Champions Ford Mustang for Ages 9+ 345 Pieces",
  "brand": "LEGO",
  "price": 134.15,
  "price_text": "134,15 Lei",
  "currency": "RON",
  "review_score": 5.0,
  "reviews_count": 7,
  "variations_count": 1,
  "sponsored": false,
  "buy_on_skroutz": true,
  "image_url": "https://b.scdn.gr/images/sku_main_images/067560/67560606/large_20260529135124_lego_speed_champions_ford_mustang_gia_9_eton_345tmch_77262.jpeg",
  "category_id": 2234,
  "category_name": "Building Blocks",
  "storefront": "skroutz.ro",
  "country": "RO",
  "language": "en",
  "source_url": "https://www.skroutz.ro/search?keyphrase=lego",
  "offers_count": 29,
  "lowest_offer_price": 134.15,
  "highest_offer_price": 250.34,
  "offers": [
    {
      "shop_id": 28138,
      "shop_name": "Crazybuy",
      "price": 134.15,
      "product_name": "LEGO Speed Champions Ford Mustang for Ages 9+ 345 Pieces 77262",
      "shop_rating": 4.9,
      "shop_reviews": 19,
      "shop_location": "Greece",
      "stock": "5+ pieces",
      "delivery": "Delivery Tue, 15 Sep - Thu, 17 Sep",
      "shipping_cost": "12,00 Lei shipping cost",
      "store_pickup": false,
      "shipped_by_skroutz": true,
      "featured": false,
      "sponsored": false,
      "shop_url": "https://www.skroutz.ro/shop/28138/Crazybuy"
    }
  ],
  "all_time_low": 133.04,
  "all_time_low_date": "2026-06-10",
  "lowest_price_30_days": 134.15,
  "lowest_price_90_days": 133.04,
  "price_history": [
    { "date": "2026-09-12", "lowest_price": 134.15, "shop_name": "Crazybuy" }
  ]
}
```

#### Who is this scraper for?

- **E-shops selling on Skroutz** checking where their price ranks against every competing shop
- **Brands and distributors** watching how resellers price their products (MAP monitoring)
- **Price monitoring and repricing tools** that need Greek and Balkan market data
- **Market analysts** comparing the same products across Greece, Cyprus, Bulgaria, Romania and Germany
- **Buyers and deal hunters** tracking all-time lows before they buy
- **Data providers** feeding Skroutz catalogues into their own products

#### How does the Skroutz scraper work?

1. Paste one or more Skroutz URLs, or leave them empty and type search terms and pick the country sites.
2. Choose the language, the maximum number of products and, if you need them, the shop offers and price history add-ons.
3. The Actor reads every result page, removes duplicates and saves one record per product.
4. With an add-on on, it also fetches that product's shop list or price chart.
5. Results land in the Apify dataset, ready to export as JSON, CSV or Excel.

Proxies, retries and blocking are handled inside the Actor, so there is nothing to configure for that.

#### Input

There are two ways to tell the Actor what to scrape. **Start URLs always win**: fill them in and the keyword search is ignored. Leave them empty to search by keyword instead.

##### 1. Start URLs

| Field | Type | What it does |
|---|---|---|
| `start_urls` | array of `{ "url": ... }` | Any Skroutz category, filtered category, brand, shop, search results or product URL, from any of the six sites. Mix freely. |
| `max_items` | integer | Stop after this many products in total. Leave empty to collect every product the URLs and searches return. |
| `language` | `en`, `el`, `bg`, `ro`, `de` or `default` | Language of names, specs and labels. `default` uses each site's own language. |
| `include_shop_offers` | boolean | Add every shop's offer to each product. |
| `include_price_history` | boolean | Add the lowest-price history to each product. |

```json
{
  "start_urls": [
    { "url": "https://www.skroutz.gr/c/40/kinhta-thlefwna.html?order_by=pricevat&order_dir=asc" },
    { "url": "https://www.skroutz.cy/s/59363684/Samsung-Galaxy-A26-5G-Dual-SIM-6-128GB-Black.html" }
  ],
  "max_items": 500,
  "language": "en",
  "include_shop_offers": true
}
```

Tip: set filters and sorting on Skroutz itself, then copy the address bar. The Actor keeps them.

##### 2. Search by keyword (no URL needed)

| Field | Type | What it does |
|---|---|---|
| `search_terms` | array of strings | What to search for, in any language, for example `iphone 17 pro` or `πλυντήριο ρούχων`. |
| `countries` | array | Sites to search: `gr`, `cy`, `bg`, `ro`, `de`, `mt`. Every term runs on every site. |
| `sort_by` | string | `recommended`, `price_asc`, `price_desc`, `newest` or `rating`. |
| `price_min` / `price_max` | integer | Price range, in the site's own currency. |

```json
{
  "search_terms": ["airpods pro 3"],
  "countries": ["gr", "cy", "bg"],
  "sort_by": "price_asc",
  "price_min": 100,
  "max_items": 200,
  "language": "en",
  "include_price_history": true
}
```

When a search clearly belongs to one category or brand, Skroutz sends it there, and the Actor follows along and logs where it went. A search with no match ends with a warning in the log and no results.

#### Pricing

This Actor is **pay per event**, so you only pay for what the run produces:

| Event | What triggers it |
|---|---|
| Product result | Each product saved to the dataset |
| Shop offers | Each product saved with its list of shop offers (only when "Include every shop's offer" is on and the list was found) |
| Price history | Each product saved with its price history (only when "Include price history" is on and a history was found) |

The current rates are shown on this Actor's Store page. An add-on that could not be fetched for a product is not charged.

On the free Apify plan, a run collects **1 result page** from the **first Start URL** (or the first search term on the first country site). Subscribe to an [Apify plan](https://apify.com/pricing?fpr=youssef) to unlock every page.

#### Frequently asked questions (FAQ)

**What is Skroutz?**
Skroutz is the biggest price comparison site and marketplace in Greece, listing millions of products from thousands of shops. It also runs sites for Cyprus, Bulgaria, Romania, Germany and Malta.

**Can I scrape Skroutz in English?**
Yes. English works on all six sites. Greek, Bulgarian, Romanian and German work where Skroutz offers them (see the table above).

**Which Skroutz URLs work?**
Categories (`/c/...`), filtered categories (`/c/.../f/...`), brand pages (`/m...`), shop pages (`/shop/...`), search results (`/search?keyphrase=...`) and single products (`/s/...`). The home page is not a product list and is rejected with a message.

**Do I have to paste a URL?**
No. Leave Start URLs empty, type search terms, pick the country sites and run.

**Can I get every shop's price for a product?**
Yes. Turn on "Include every shop's offer" and each product carries the full shop list with price, rating, stock, delivery and shipping cost, cheapest first.

**How far back does the price history go?**
As far back as Skroutz charts it for that product, one lowest price per day. Days on which no shop sold the product are left out.

**Why does a product show a price range?**
Products sold in several sizes or colours, mostly fashion, are listed on Skroutz with a range. `price` is the lowest and `price_max` the highest.

**What does `featured_shop` mean?**
It is the shop Skroutz highlights on the product card, when there is one. It is not always the cheapest shop: for that, turn on the shop offers add-on.

**Why are some records marked `sponsored`?**
Skroutz places paid products inside result pages. They are kept, so you see the page as shoppers do, and flagged so you can filter them out.

**Why is `color` in Greek on a single product URL in an English run?**
Single product URLs are read from the product page, which publishes brand, model and colour in the site's own language. Everything from result pages follows the language you pick.

**Does it support scheduling?**
Yes. Use Apify's built-in scheduler to run daily or weekly and follow prices over time.

**Is it legal to scrape Skroutz?**
The Actor collects publicly available product and price information. You are responsible for using the data in line with Skroutz's terms and applicable law.

#### Use via API or MCP

Call this Actor via the Apify REST API or as an MCP server for AI agents (Claude, ChatGPT, Cursor):

```
https://mcp.apify.com/actors/fayoussef/skroutz-scraper
```

Full API docs: <https://docs.apify.com/api/v2>

#### Need a custom scraper?

Need another marketplace, extra fields or a scheduled data feed? Visit [automationbyexperts.com](https://automationbyexperts.com) for custom builds, retainers and data-as-a-service.

***

### Greek version

**Ελληνικά**

> **Τι είναι το Skroutz Scraper;** Είναι ένα Apify Actor που εξάγει δεδομένα προϊόντων από το Skroutz, τη μεγαλύτερη πλατφόρμα σύγκρισης τιμών στην Ελλάδα, και από τα έξι sites του Skroutz. Για κάθε προϊόν παίρνετε τιμή, βαθμολογία, χαρακτηριστικά, παράδοση και κατηγορία, και προαιρετικά όλα τα καταστήματα που το πωλούν και το ιστορικό χαμηλότερης τιμής ανά ημέρα, σε JSON, CSV ή Excel.

Κάντε **scraping προϊόντων από το Skroutz** αυτόματα, στα **ελληνικά, αγγλικά, βουλγαρικά, ρουμανικά ή γερμανικά**. Επικολλήστε οποιοδήποτε URL κατηγορίας, μάρκας, καταστήματος ή αναζήτησης του Skroutz, ή απλώς γράψτε μια λέξη-κλειδί, και το Actor περνάει όλες τις σελίδες αποτελεσμάτων για εσάς. Δημιουργήθηκε για **e-shops, μάρκες, εργαλεία παρακολούθησης τιμών και αναλυτές αγοράς**.

#### Βασικά χαρακτηριστικά

- **Και τα έξι sites του Skroutz** : Ελλάδα (skroutz.gr), Κύπρος (skroutz.cy), Βουλγαρία (skroutz.bg), Ρουμανία (skroutz.ro), Γερμανία (skroutz.de) και Μάλτα (skroutz.mt).
- **Πέντε γλώσσες** : ελληνικά, αγγλικά, βουλγαρικά, ρουμανικά και γερμανικά, όπου τις προσφέρει το Skroutz.
- **Η προσφορά κάθε καταστήματος** (προαιρετικά) : όνομα καταστήματος, τιμή, βαθμολογία, απόθεμα, ημερομηνία παράδοσης και μεταφορικά για κάθε προϊόν, μαζί με τη χαμηλότερη και την υψηλότερη προσφορά.
- **Ιστορικό τιμών** (προαιρετικά) : η χαμηλότερη τιμή και το κατάστημα που την έδινε για κάθε ημέρα που καταγράφει το Skroutz, με τη χαμηλότερη τιμή όλων των εποχών και των τελευταίων 30 και 90 ημερών.
- **Χωρίς URL** : αναζήτηση με λέξη-κλειδί σε ένα ή περισσότερα sites, με ταξινόμηση και φίλτρο τιμής.
- **Κάθε σελίδα του Skroutz** : κατηγορίες, φιλτραρισμένες κατηγορίες, μάρκες, καταστήματα, αποτελέσματα αναζήτησης και μεμονωμένα προϊόντα.
- **Σύγκριση χωρών** : η ίδια αναζήτηση σε πολλά sites του Skroutz με μία εκτέλεση, με το νόμισμα σε κάθε εγγραφή.
- **Εξαγωγή παντού** : JSON, CSV, Excel, XML ή JSONL μέσω του dataset ή του API της Apify.

#### Υποστηριζόμενα sites και γλώσσες

| Site | Χώρα | Νόμισμα | Γλώσσες |
|---|---|---|---|
| skroutz.gr | Ελλάδα | EUR | Ελληνικά, Αγγλικά, Βουλγαρικά, Γερμανικά, Ρουμανικά |
| skroutz.cy | Κύπρος | EUR | Ελληνικά, Αγγλικά |
| skroutz.bg | Βουλγαρία | EUR | Βουλγαρικά, Αγγλικά |
| skroutz.ro | Ρουμανία | RON (λέι) | Ρουμανικά, Αγγλικά |
| skroutz.de | Γερμανία | EUR | Γερμανικά, Ελληνικά, Αγγλικά |
| skroutz.mt | Μάλτα | EUR | Αγγλικά |

Αν ένα site δεν προσφέρει τη γλώσσα που επιλέξατε, χρησιμοποιείται η δική του γλώσσα και το αναφέρει το log της εκτέλεσης.

#### Ποια δεδομένα εξάγει;

**Προϊόν**

- Όνομα, URL και κωδικός προϊόντος στο Skroutz
- Τιμή, και ανώτερη τιμή για προϊόντα με εύρος τιμών (μεγέθη, χρώματα)
- Νόμισμα (EUR ή RON)
- Βαθμολογία και αριθμός αξιολογήσεων
- Σύνοψη χαρακτηριστικών και αριθμός παραλλαγών
- Σήμα (π.χ. Top Seller) και σήμα προσφοράς
- Παράδοση, εκτίμηση παράδοσης και δόσεις
- Αν το προϊόν είναι χορηγούμενο και αν αγοράζεται μέσω του Skroutz
- Εικόνα, κατηγορία, site, χώρα και γλώσσα

Τα URL μεμονωμένων προϊόντων επιστρέφουν επίσης **μάρκα, MPN, μοντέλο, χρώμα και διαθεσιμότητα**.

**Προσφορές καταστημάτων** : `offers_count`, `lowest_offer_price`, `highest_offer_price`, `brand` και η λίστα `offers` με όνομα καταστήματος, τιμή, βαθμολογία, απόθεμα, παράδοση, μεταφορικά και σύνδεσμο καταστήματος, από τη φθηνότερη.

**Ιστορικό τιμών** : `all_time_low`, `all_time_low_date`, `lowest_price_30_days`, `lowest_price_90_days` και η λίστα `price_history` με ημερομηνία, χαμηλότερη τιμή και κατάστημα.

#### Για ποιους είναι;

- **E-shops στο Skroutz** που θέλουν να δουν πού βρίσκεται η τιμή τους απέναντι σε κάθε ανταγωνιστή
- **Μάρκες και αντιπρόσωποι** που παρακολουθούν τις τιμές των μεταπωλητών
- **Εργαλεία παρακολούθησης και αναπροσαρμογής τιμών** για την ελληνική και τη βαλκανική αγορά
- **Αναλυτές αγοράς** που συγκρίνουν τα ίδια προϊόντα σε Ελλάδα, Κύπρο, Βουλγαρία, Ρουμανία και Γερμανία
- **Αγοραστές** που περιμένουν τη χαμηλότερη τιμή πριν αγοράσουν

#### Πώς λειτουργεί;

1. Επικολλήστε ένα ή περισσότερα URL του Skroutz, ή αφήστε τα κενά, γράψτε λέξεις-κλειδιά και διαλέξτε sites.
2. Επιλέξτε γλώσσα, μέγιστο αριθμό προϊόντων και, αν τα χρειάζεστε, τις προσφορές καταστημάτων και το ιστορικό τιμών.
3. Το Actor διαβάζει κάθε σελίδα αποτελεσμάτων, αφαιρεί τα διπλά και αποθηκεύει μία εγγραφή ανά προϊόν.
4. Τα αποτελέσματα αποθηκεύονται στο dataset της Apify, έτοιμα για εξαγωγή.

Proxy, επαναλήψεις και αποκλεισμοί διαχειρίζονται μέσα στο Actor, οπότε δεν χρειάζεται καμία ρύθμιση.

#### Χρέωση

Το Actor χρεώνει **ανά γεγονός**: ανά προϊόν που αποθηκεύεται, και ξεχωριστά ανά προϊόν με προσφορές καταστημάτων ή με ιστορικό τιμών, μόνο όταν είναι ενεργά αυτά τα πρόσθετα και βρέθηκαν δεδομένα. Οι τρέχουσες τιμές εμφανίζονται στη σελίδα του Actor στο Store. Στο δωρεάν πλάνο της Apify μια εκτέλεση συλλέγει **1 σελίδα αποτελεσμάτων** από το **πρώτο Start URL** (ή την πρώτη αναζήτηση στο πρώτο site). Για όλες τις σελίδες, εγγραφείτε σε ένα [πλάνο της Apify](https://apify.com/pricing?fpr=youssef).

#### Συχνές ερωτήσεις (FAQ)

**Μπορώ να κάνω scraping του Skroutz στα ελληνικά;**
Ναι. Τα ελληνικά λειτουργούν στα skroutz.gr, skroutz.cy και skroutz.de, και τα αγγλικά και στα έξι sites.

**Ποια URL του Skroutz λειτουργούν;**
Κατηγορίες, φιλτραρισμένες κατηγορίες, μάρκες, καταστήματα, αποτελέσματα αναζήτησης και μεμονωμένα προϊόντα. Η αρχική σελίδα δεν είναι λίστα προϊόντων και απορρίπτεται με μήνυμα.

**Χρειάζεται οπωσδήποτε URL;**
Όχι. Αφήστε κενά τα Start URLs, γράψτε λέξεις-κλειδιά, διαλέξτε sites και ξεκινήστε.

**Μπορώ να πάρω την τιμή κάθε καταστήματος για ένα προϊόν;**
Ναι. Ενεργοποιήστε το "Include every shop's offer" και κάθε προϊόν περιέχει όλη τη λίστα καταστημάτων, από το φθηνότερο.

**Πόσο πίσω πηγαίνει το ιστορικό τιμών;**
Όσο πίσω το καταγράφει το Skroutz για το συγκεκριμένο προϊόν, με μία χαμηλότερη τιμή ανά ημέρα.

**Γιατί κάποιες εγγραφές είναι `sponsored`;**
Το Skroutz εμφανίζει χορηγούμενα προϊόντα μέσα στα αποτελέσματα. Κρατούνται, όπως τα βλέπει ο αγοραστής, και σημειώνονται ώστε να μπορείτε να τα φιλτράρετε.

**Είναι νόμιμο το scraping του Skroutz;**
Το Actor συλλέγει δημόσια διαθέσιμα στοιχεία προϊόντων και τιμών. Είστε υπεύθυνοι για τη χρήση των δεδομένων σύμφωνα με τους όρους του Skroutz και την ισχύουσα νομοθεσία.

#### Χρειάζεστε προσαρμοσμένο scraper;

Χρειάζεστε άλλο marketplace, επιπλέον πεδία ή προγραμματισμένη ροή δεδομένων; Επισκεφθείτε το [automationbyexperts.com](https://automationbyexperts.com) για προσαρμοσμένες λύσεις και data-as-a-service.

# Actor input Schema

## `start_urls` (type: `array`):

Skroutz pages to scrape, from any Skroutz country site: skroutz.gr, skroutz.cy, skroutz.bg, skroutz.ro, skroutz.de or skroutz.mt. Paste a category, brand, filtered list, shop or search results URL and the Actor goes through its pages, or a single product URL for just that product. Set filters and sorting on the site first, then copy the address bar. Start URLs always take priority: if you add any, the 'Search by keyword' section below is ignored. To search by keyword instead, remove every row here with the X button.

## `max_items` (type: `integer`):

Stop once this many products have been collected in total, across all Start URLs and searches. Leave empty to collect every product they return, which on a large category can be tens of thousands.

## `language` (type: `string`):

Language of product names, specs, categories and delivery labels. English works on every Skroutz site. Greek works on skroutz.gr, skroutz.cy and skroutz.de. Bulgarian, Romanian and German work on skroutz.gr and on their own country site. If a site does not offer the language you pick, that site's own language is used and the run log says so.

## `include_shop_offers` (type: `boolean`):

Also collect the list of shops selling each product: shop name, price, shop rating, stock, delivery and shipping cost, plus the number of shops and the lowest and highest offer. Adds one request per product and is billed as a separate event.

## `include_price_history` (type: `boolean`):

Also collect each product's lowest-price history as Skroutz charts it: the lowest price and the shop offering it for every day Skroutz has on record, plus the all-time low and the lowest price in the last 30 and 90 days. Adds one request per product and is billed as a separate event.

## `search_terms` (type: `array`):

Products to search for, exactly as you would type them in the Skroutz search box, for example 'iphone 17 pro' or 'πλυντήριο ρούχων'. Any language works. Add several to run them all.

## `countries` (type: `array`):

Which Skroutz country sites to search. Every search term runs on every site you pick, so you can compare the same product across countries. Prices are in euro everywhere except Romania, which uses lei.

## `sort_by` (type: `string`):

How Skroutz should order the search results before they are collected.

## `price_min` (type: `integer`):

Lowest price to include, in the site's own currency.

## `price_max` (type: `integer`):

Highest price to include, in the site's own currency.

## Actor input object example

```json
{
  "start_urls": [
    {
      "url": "https://www.skroutz.gr/c/40/kinhta-thlefwna.html"
    }
  ],
  "max_items": 100,
  "language": "en",
  "include_shop_offers": false,
  "include_price_history": false,
  "search_terms": [],
  "countries": [
    "gr"
  ],
  "sort_by": "recommended"
}
```

# Actor output Schema

## `results` (type: `string`):

Every product the run collected, with shop offers and price history when those add-ons are on.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "start_urls": [
        {
            "url": "https://www.skroutz.gr/c/40/kinhta-thlefwna.html"
        }
    ],
    "max_items": 100,
    "search_terms": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("fayoussef/skroutz-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "start_urls": [{ "url": "https://www.skroutz.gr/c/40/kinhta-thlefwna.html" }],
    "max_items": 100,
    "search_terms": [],
}

# Run the Actor and wait for it to finish
run = client.actor("fayoussef/skroutz-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "start_urls": [
    {
      "url": "https://www.skroutz.gr/c/40/kinhta-thlefwna.html"
    }
  ],
  "max_items": 100,
  "search_terms": []
}' |
apify call fayoussef/skroutz-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fayoussef/skroutz-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/pqvFocaYPMFWwPg3f/builds/MtUjfvMn73EOAG6Jn/openapi.json
