# Decathlon Scraper (`solidcode/decathlon-scraper`) Actor

\[💰 $3 / 1K] Extract Decathlon products from 11 European stores — prices, discounts, brands, sizes, ratings, images, stock and seller. Search by keyword or paste search, category and product URLs.

- **URL**: https://apify.com/solidcode/decathlon-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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/platform/actors/running/actors-in-store#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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Decathlon Scraper

Pull Decathlon product data at scale — prices, was-prices, discount percentages, promotion windows, brands, sizes, ratings, stock, seller identity and full image galleries from 11 European Decathlon stores. Search by keyword, paste a category page, or drop in a single product link. Built for e-commerce price analysts, sporting-goods retailers and market researchers who need clean, comparable product data across European markets without checking eleven storefronts by hand.

### Why This Scraper?

- **11 European stores, each in its own currency and language** — France, United Kingdom, Germany, Spain, Italy, Belgium, Netherlands, Portugal, Poland, Switzerland and Czechia. Prices come back in GBP, EUR, PLN, CHF or CZK with product names in the local language, exactly as a shopper in that country sees them.
- **Four filters mapped to Decathlon's own facets** — brand, sport, audience and colour, applied by the store itself before results are counted. Brands stack as a union: ask for Nike and Puma together and you get both, not one or the other.
- **Localised filter matching handled for you** — type `Women` and it resolves to *Damen* on the German store and *Dames* on the Dutch store. The same happens for all 13 colour options, so you never need to know each market's vocabulary.
- **Five sort orders, including Biggest Discount and Best Rated** — pair "Biggest Discount" with a 100-product cap and you have a ready-made deals feed in one run.
- **Full price anatomy on every row** — current price, was-price, discount percentage, pre-tax values, the promotion type (such as `SEASON_SALES`) and the exact promotion start and end dates.
- **Marketplace transparency on every product** — the seller's name plus whether the item is sold by Decathlon first-party or a marketplace partner, with delivery lead-time codes alongside.
- **Barcodes for every size variant** — switch on full details and each row carries its GTIN/EAN codes per size, technical specifications, materials composition, care instructions and the complete image gallery.
- **Up to 1,000 products per keyword, and far deeper from category pages** — a single running-shoes category page runs to roughly 92 pages of products, so one pasted URL can outrun a dozen searches.
- **No silent empty runs** — if a keyword returns nothing, the run names the exact store and keyword that came up empty. If a filter value isn't recognised in that market, it lists the values that store actually accepts.

### Use Cases

**Competitive Pricing & Market Research**
- Compare the same product's price across the UK, German, French and Polish stores
- Track price movements on a watchlist of models week over week
- Measure how deep discounts run by sport, brand or season
- Benchmark private-label ranges (Quechua, Kiprun, Domyos, Kipsta) against Nike, Adidas and Puma

**Deals & Promotion Monitoring**
- Build a live sale feed by sorting on biggest discount and capping the run
- Capture promotion type and end date to know exactly when an offer expires
- Spot markdowns the moment a was-price appears on a tracked product
- Alert on discounts crossing a threshold in any chosen market

**Assortment & Catalogue Analysis**
- Map which brands and sports a market carries, and which it doesn't
- Compare colour and size availability between stores
- Separate first-party inventory from marketplace listings
- Audit range depth for a category across all 11 stores

**Product Data Enrichment**
- Match your own catalogue to Decathlon's using barcodes per size variant
- Enrich records with technical specifications, materials and care instructions
- Pull the full image gallery for product pages and comparison tools
- Feed descriptions and specifications into content and PIM workflows

**Demand & Reputation Signals**
- Rank products by average customer score and review volume
- Track which items lose availability fastest across markets
- Identify best-rated products in a category before stocking decisions
- Compare review counts between equivalent products in different countries

### Getting Started

#### Simple Keyword Search

Type what a local shopper would type, pick a store, and go:

```json
{
    "searchQueries": ["running shoes"],
    "country": "co.uk",
    "maxItems": 50
}
````

#### A Deals Feed for One Market

Sort by the biggest markdown and take the top 100:

```json
{
    "searchQueries": ["chaussures de randonnée"],
    "country": "fr",
    "sortBy": "biggest_discount",
    "maxItems": 100
}
```

#### Filtered Brand and Audience Search

Two brands at once, women's products only, black or blue, cheapest first:

```json
{
    "searchQueries": ["laufschuhe"],
    "country": "de",
    "brands": ["NIKE", "PUMA"],
    "gender": "women",
    "colors": ["black", "blue"],
    "sortBy": "price_asc",
    "maxItems": 200
}
```

#### Category Page with Full Details

Paste a category page to go far deeper than a keyword search, and switch on the enrichment fields:

```json
{
    "startUrls": [
        "https://www.decathlon.co.uk/sports/running/running-shoes"
    ],
    "includeProductDetails": true,
    "maxItems": 500
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQueries` | array | `["running shoes"]` | Keywords to search. Each keyword runs its own search and every matching product is collected. Use the wording of the store you picked. |
| `startUrls` | array | `[]` | Decathlon page links — a search results page, a whole category, or an individual product page. The page type is worked out automatically and any supported store works. |

You can mix keywords, category pages and single product links freely in one run. A product that several of your keywords or links match is collected once and listed against the first one that found it, so you are never billed twice for the same row.

#### Store

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `country` | string | `"co.uk"` | Which Decathlon store to read from. Sets the prices, currency, availability and product language you get back. |

Available stores: **United Kingdom (GBP)** · **France (EUR)** · **Germany (EUR)** · **Spain (EUR)** · **Italy (EUR)** · **Netherlands (EUR)** · **Belgium (EUR, French)** · **Portugal (EUR)** · **Poland (PLN)** · **Switzerland (CHF, French)** · **Czechia (CZK)**

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `brands` | array | `[]` | Only collect these brands — for example `Quechua`, `Kiprun`, `Domyos`, `Nike` or `Adidas`. Brand names are written the same way in every store. List several to get all of them. |
| `sports` | array | `[]` | Only collect products tagged with these sports, for example `hiking`, `fitness` or `cycling`. Use the wording your chosen store uses; unrecognised values are reported with the store's own list. |
| `gender` | string | `"any"` | Audience the product is made for: **Any**, **Men**, **Women**, **Boys**, **Girls**, **Kids** or **Unisex**. Matched to each store's local wording automatically. |
| `colors` | array | `[]` | Only collect products available in these colours: **Black**, **White**, **Blue**, **Grey**, **Green**, **Pink**, **Yellow**, **Red**, **Orange**, **Multicolour**, **Beige**, **Purple**, **Brown**. |

Every filter here is applied by Decathlon itself, so you only collect products you actually want. Leave a filter empty to skip it.

#### Sorting & Detail Level

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `sortBy` | string | `"relevance"` | Order in which products are collected: **Recommended**, **Price: Low to High**, **Price: High to Low**, **Biggest Discount** or **Best Rated**. |
| `includeProductDetails` | boolean | `false` | Also add the full description, technical specifications, materials, care instructions, barcodes and every product image. Much richer rows, noticeably slower runs. Individual product links always come with these details. |

The Netherlands store does not offer **Biggest Discount** — there the run falls back to the recommended order and tells you so in plain English.

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxItems` | integer | `50` | Stop after collecting this many products in total, across all keywords and links. Results are collected a page at a time, so a run can finish slightly above your limit — never below. Set to `0` to collect everything found. |

### Output

Every product is one flat row. Fields that a store doesn't publish are simply left out of the row.

```json
{
    "productId": "364461",
    "modelId": "9032076",
    "sku": "7974e792-dad6-48d8-8a00-6e306ff3373d",
    "name": "VL COURT 3.0 Adidas Women's trainers green and pink",
    "brand": "ADIDAS",
    "url": "https://www.decathlon.co.uk/p/women-s-adidas-vl-court-3-0-shoes-green/364461/c12m8939235",
    "price": 34.99,
    "originalPrice": 44.99,
    "discountPercentage": 22,
    "priceExclTax": 29.16,
    "originalPriceExclTax": 37.49,
    "currency": "GBP",
    "promotionType": "SEASON_SALES",
    "promotionStart": "2026-06-24T22:00:00Z",
    "promotionEnd": "2026-07-21T21:59:59Z",
    "badges": ["Best seller"],
    "rating": 4.71,
    "reviewCount": 85,
    "availableOnline": true,
    "sellableOnline": true,
    "availableSizes": ["3.5 - EU 36", "5 - EU 38", "6 - EU 39 1/3", "7.5 - EU 41 1/3"],
    "sports": ["sportswear"],
    "productType": "trainers",
    "sellerName": "Decathlon",
    "sellerType": "FIRST_PARTY",
    "deliveryLeadTimes": ["ud-0-48"],
    "colorVariants": 2,
    "sponsored": false,
    "mainImage": "https://contents.mediadecathlon.com/p3196264/picture.jpg",
    "images": [
        "https://contents.mediadecathlon.com/p3196264/picture.jpg",
        "https://contents.mediadecathlon.com/p3196265/picture.jpg"
    ],
    "description": "Designed for everyday wear, these trainers combine a classic court silhouette with a cushioned insole.",
    "specifications": {
        "Upper material": "Synthetic leather",
        "Lining": "Textile",
        "Sole": "Rubber"
    },
    "composition": ["Upper: 100% Polyurethane", "Outer sole: 100% Rubber"],
    "careInstructions": ["Do not machine wash", "Wipe clean with a damp cloth"],
    "weight": "295 g",
    "gtins": ["4066748364268", "4066748364275"],
    "categoryPath": ["Sports", "Running", "Running Shoes"],
    "country": "co.uk",
    "store": "United Kingdom",
    "sourceUrl": "shoes",
    "scrapedAt": "2026-07-24T09:12:31Z"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Product name in the store's own language |
| `brand` | string | Brand name, e.g. `KIPRUN`, `ADIDAS`, `QUECHUA` |
| `url` | string | Direct link to the product page on the chosen store |
| `productType` | string | Product category label, e.g. `trainers` |
| `sports` | array | Sports the product is tagged with |
| `colorVariants` | number | How many colourways this model is sold in |
| `mainImage` | string | Primary product image |
| `images` | array | All image links available for the product |
| `categoryPath` | array | Breadcrumb trail from the store's category tree, e.g. `["Sports","Running","Running Shoes"]`. Filled when the run starts from a category page link, or when a keyword lands on a whole category. |

#### Pricing & Promotions

| Field | Type | Description |
|-------|------|-------------|
| `price` | number | Current selling price |
| `originalPrice` | number | Was-price before the discount, when one applies |
| `discountPercentage` | number | Percentage off the was-price |
| `priceExclTax` | number | Current price excluding tax, where the store publishes it |
| `originalPriceExclTax` | number | Was-price excluding tax, where the store publishes it |
| `currency` | string | `GBP`, `EUR`, `PLN` or `CHF` depending on the store |
| `promotionType` | string | Promotion label, e.g. `STANDARD` or `SEASON_SALES` |
| `promotionStart` | string | When the current offer began |
| `promotionEnd` | string | When the current offer ends |
| `badges` | array | On-site merchandising labels, e.g. `Best seller` |

#### Ratings, Sizes & Availability

| Field | Type | Description |
|-------|------|-------------|
| `rating` | number | Average customer score out of 5 |
| `reviewCount` | number | How many customer reviews the product has |
| `availableSizes` | array | Sizes currently in stock, in the store's own sizing labels |
| `availableOnline` | boolean | Whether the product is currently available online |
| `sellableOnline` | boolean | Whether the product can be bought online at all |
| `deliveryLeadTimes` | array | Delivery lead-time codes published by the store |
| `sellerName` | string | Who sells the item, e.g. `Decathlon` |
| `sellerType` | string | `FIRST_PARTY` for Decathlon's own stock, otherwise a marketplace partner |
| `sponsored` | boolean | Whether the store promoted this product in the results |

#### Full Detail Fields

Present when **Include Full Product Details** is switched on, and always for individual product links.

| Field | Type | Description |
|-------|------|-------------|
| `description` | string | Full product description, plain text |
| `specifications` | object | Technical specification pairs, e.g. upper material, sole, lining |
| `composition` | array | Materials breakdown by component |
| `careInstructions` | array | Washing and care guidance |
| `weight` | string | Product weight as published |
| `gtins` | array | GTIN/EAN barcodes, one per size variant |

#### Identifiers & Run Metadata

| Field | Type | Description |
|-------|------|-------------|
| `productId` | string | Decathlon's product identifier |
| `modelId` | string | Model identifier for this specific colourway |
| `sku` | string | Stock-keeping identifier for the representative variant |
| `country` | string | Store code the row came from, e.g. `co.uk` |
| `store` | string | Human-readable store name, e.g. `United Kingdom` |
| `sourceUrl` | string | The keyword or link that produced this row |
| `scrapedAt` | string | Timestamp of collection, in UTC |

### Tips for Best Results

- **Search in the store's language.** The German store indexes *laufschuhe*, not "running shoes"; the Czech store wants *boty*. Keywords in the wrong language are the single most common cause of thin results — the filters and audience options are translated for you, but the keyword is not.
- **Use a category page when you need volume.** A keyword search tops out around 1,000 products, while a category page keeps going for roughly 92 pages. If you want a whole range rather than a slice, paste the category link instead of guessing keywords.
- **Choosing any sort order narrows the pool to the top 1,000.** Sorting returns the store's global top results by that measure, so combine sorting with a modest `maxItems` for feeds, and leave it on **Recommended** when you want maximum breadth.
- **Keep full details off for price monitoring.** Prices, discounts, ratings, sizes and stock all arrive without it. Switch it on only when you need barcodes, specifications or the full gallery — it makes runs noticeably slower.
- **Run the same keyword against several stores to build a price map.** Currency and language come back per row, so a handful of runs gives you a like-for-like cross-market comparison with no manual conversion of store labels.
- **Combine Biggest Discount with a brand filter for clean deal alerts.** Sorting by discount and limiting to the two or three brands you care about turns a broad catalogue into a short, actionable list.
- **Start with `maxItems` at 10–50.** Confirm the rows look the way you expect for your chosen store and filters, then scale the same configuration up.

### Pricing

**From $3 per 1,000 results** — pay only for the products you actually collect. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee. Bronze, Silver and Gold subscribers pay progressively less; the table below shows the total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.36 | $0.34 | $0.32 | $0.30 |
| 1,000 | $3.60 | $3.40 | $3.20 | $3.00 |
| 10,000 | $36.00 | $34.00 | $32.00 | $30.00 |
| 100,000 | $360.00 | $340.00 | $320.00 | $300.00 |

A "result" is one product row in your dataset. Full product details cost the same as basic rows — enrichment is included in the per-result price.

### Integrations

Export your data as JSON, CSV, Excel, XML or RSS. Connect to 1,500+ apps:

- **Zapier** / **Make** / **n8n** — Trigger workflows when new products or price drops appear
- **Google Sheets** — Send product tables straight into a spreadsheet
- **Slack** / **Email** — Get notified when a run finishes or a deal threshold is hit
- **Webhooks** — Push results into your own systems as soon as a run completes
- **Apify API** — Full programmatic access to runs, schedules and datasets

### Legal & Ethical Use

This actor is built for legitimate price monitoring, market research, competitive analysis and product-catalogue enrichment. It collects only publicly visible product information — no customer data and no personal information. You are responsible for complying with applicable laws and Decathlon's Terms of Service, and for respecting copyright in product images and descriptions. Do not use the collected data for any unlawful purpose.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search on Decathlon, such as 'running shoes' or 'camping tent'. Each keyword runs its own search and every matching product is collected. Use words in the language of the store you picked below. Decathlon itself shows at most about 1,000 products per keyword — add more keywords, or use a category URL below, to go deeper. A product that matches several of your keywords is collected once, listed against the first keyword that found it.

## `startUrls` (type: `array`):

Paste Decathlon page URLs — a search results page, a whole category (for example a 'Running Shoes' page), or an individual product page. The scraper works out the page type automatically and collects every product it finds. Any supported store works.

## `country` (type: `string`):

Which Decathlon store to read from. This sets the prices, currency, availability and product language you get back. Prices and range differ between stores, so pick the market you actually care about.

## `brands` (type: `array`):

Only collect products from these brands — for example 'Quechua', 'Kiprun', 'Domyos', 'Nike' or 'Adidas'. Brand names are written the same way in every store. Leave empty to include all brands.

## `sports` (type: `array`):

Only collect products tagged with these sports, for example 'hiking', 'fitness' or 'cycling'. Use the wording your chosen store uses. If a sport isn't recognised, the run tells you which ones are available.

## `gender` (type: `string`):

Only collect products made for this audience.

## `colors` (type: `array`):

Only collect products available in these colours. Leave empty to include every colour.

## `sortBy` (type: `string`):

Order in which products are collected. Pair this with a result limit to get exactly what you need — for example sort by biggest discount and take the top 100 to build a deals feed. On keyword searches Decathlon returns the top ~1,000 products for the chosen order. The Netherlands store does not offer 'Biggest Discount' — there it falls back to the recommended order and the run tells you so.

## `includeProductDetails` (type: `boolean`):

Also collect the full description, technical specifications, materials, care instructions, barcodes and every product image for each product. Gives you much richer rows, but makes the run noticeably slower. Leave off for fast price and stock monitoring. Individual product URLs always come with these details.

## `maxItems` (type: `integer`):

Stop after collecting this many products in total, across all keywords and URLs. Set to 0 to collect everything found. Results are collected a page at a time and the run always finishes the page it is on, so a run can end slightly above your limit — never below. Note that a single Decathlon keyword search returns up to about 1,000 products; category pages go deeper.

## Actor input object example

```json
{
  "searchQueries": [
    "running shoes"
  ],
  "startUrls": [],
  "country": "co.uk",
  "brands": [],
  "sports": [],
  "gender": "any",
  "colors": [],
  "sortBy": "relevance",
  "maxItems": 50
}
```

# Actor output Schema

## `overview` (type: `string`):

All collected products with name, brand, price, discount, rating and availability.

## `pricing` (type: `string`):

Price, original price, discount and promotion details for every product.

## `details` (type: `string`):

Description, specifications, materials, barcodes and category path — filled when full product details are switched 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 = {
    "searchQueries": [
        "running shoes"
    ],
    "startUrls": [],
    "country": "co.uk",
    "brands": [],
    "sports": [],
    "gender": "any",
    "colors": [],
    "sortBy": "relevance",
    "includeProductDetails": false,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/decathlon-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 = {
    "searchQueries": ["running shoes"],
    "startUrls": [],
    "country": "co.uk",
    "brands": [],
    "sports": [],
    "gender": "any",
    "colors": [],
    "sortBy": "relevance",
    "includeProductDetails": False,
    "maxItems": 50,
}

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

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

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

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "running shoes"
  ],
  "startUrls": [],
  "country": "co.uk",
  "brands": [],
  "sports": [],
  "gender": "any",
  "colors": [],
  "sortBy": "relevance",
  "includeProductDetails": false,
  "maxItems": 50
}' |
apify call solidcode/decathlon-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/decathlon-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Decathlon Scraper",
        "description": "[💰 $3 / 1K] Extract Decathlon products from 11 European stores — prices, discounts, brands, sizes, ratings, images, stock and seller. Search by keyword or paste search, category and product URLs.",
        "version": "1.0",
        "x-build-id": "AaqgGRXGKwn31mEOu"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~decathlon-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-decathlon-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~decathlon-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-decathlon-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~decathlon-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-decathlon-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQueries": {
                        "title": "Search Keywords",
                        "type": "array",
                        "description": "Keywords to search on Decathlon, such as 'running shoes' or 'camping tent'. Each keyword runs its own search and every matching product is collected. Use words in the language of the store you picked below. Decathlon itself shows at most about 1,000 products per keyword — add more keywords, or use a category URL below, to go deeper. A product that matches several of your keywords is collected once, listed against the first keyword that found it.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Decathlon URLs",
                        "type": "array",
                        "description": "Paste Decathlon page URLs — a search results page, a whole category (for example a 'Running Shoes' page), or an individual product page. The scraper works out the page type automatically and collects every product it finds. Any supported store works.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Decathlon Store",
                        "enum": [
                            "co.uk",
                            "fr",
                            "de",
                            "es",
                            "it",
                            "nl",
                            "be",
                            "pt",
                            "pl",
                            "ch",
                            "cz"
                        ],
                        "type": "string",
                        "description": "Which Decathlon store to read from. This sets the prices, currency, availability and product language you get back. Prices and range differ between stores, so pick the market you actually care about."
                    },
                    "brands": {
                        "title": "Brands",
                        "type": "array",
                        "description": "Only collect products from these brands — for example 'Quechua', 'Kiprun', 'Domyos', 'Nike' or 'Adidas'. Brand names are written the same way in every store. Leave empty to include all brands.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sports": {
                        "title": "Sports",
                        "type": "array",
                        "description": "Only collect products tagged with these sports, for example 'hiking', 'fitness' or 'cycling'. Use the wording your chosen store uses. If a sport isn't recognised, the run tells you which ones are available.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "gender": {
                        "title": "Audience",
                        "enum": [
                            "any",
                            "men",
                            "women",
                            "boys",
                            "girls",
                            "kids",
                            "unisex"
                        ],
                        "type": "string",
                        "description": "Only collect products made for this audience."
                    },
                    "colors": {
                        "title": "Colours",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only collect products available in these colours. Leave empty to include every colour.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "black",
                                "white",
                                "blue",
                                "grey",
                                "green",
                                "pink",
                                "yellow",
                                "red",
                                "orange",
                                "multicolour",
                                "beige",
                                "purple",
                                "brown"
                            ],
                            "enumTitles": [
                                "Black",
                                "White",
                                "Blue",
                                "Grey",
                                "Green",
                                "Pink",
                                "Yellow",
                                "Red",
                                "Orange",
                                "Multicolour",
                                "Beige",
                                "Purple",
                                "Brown"
                            ]
                        }
                    },
                    "sortBy": {
                        "title": "Sort Order",
                        "enum": [
                            "relevance",
                            "price_asc",
                            "price_desc",
                            "biggest_discount",
                            "best_rated"
                        ],
                        "type": "string",
                        "description": "Order in which products are collected. Pair this with a result limit to get exactly what you need — for example sort by biggest discount and take the top 100 to build a deals feed. On keyword searches Decathlon returns the top ~1,000 products for the chosen order. The Netherlands store does not offer 'Biggest Discount' — there it falls back to the recommended order and the run tells you so."
                    },
                    "includeProductDetails": {
                        "title": "Include Full Product Details",
                        "type": "boolean",
                        "description": "Also collect the full description, technical specifications, materials, care instructions, barcodes and every product image for each product. Gives you much richer rows, but makes the run noticeably slower. Leave off for fast price and stock monitoring. Individual product URLs always come with these details."
                    },
                    "maxItems": {
                        "title": "Maximum Products",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Stop after collecting this many products in total, across all keywords and URLs. Set to 0 to collect everything found. Results are collected a page at a time and the run always finishes the page it is on, so a run can end slightly above your limit — never below. Note that a single Decathlon keyword search returns up to about 1,000 products; category pages go deeper."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
