# Euro Car Parts Product Scraper (`sian.agency/euro-car-parts-product-scraper`) Actor

Scrape Euro Car Parts products — prices in GBP, brands, images, specs & live stock. Keyword or part-number search, full detail enrichment, clean JSON/CSV, no code.

- **URL**: https://apify.com/sian.agency/euro-car-parts-product-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** E-commerce, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.70 / 1,000 overview 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## Euro Car Parts Product Scraper — Prices, Specs & Live Stock 🚗

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Home Depot Product Scraper](https://img.shields.io/badge/Store-Home%20Depot%20Scraper-F96302)](https://apify.com/sian.agency/home-depot-product-scraper?fpr=sian) [![Google Shopping Price Scraper](https://img.shields.io/badge/Store-Google%20Shopping%20Price%20Scraper-4285F4)](https://apify.com/sian.agency/google-shopping-price-scraper?fpr=sian) [![Walmart Product Scraper](https://img.shields.io/badge/Store-Walmart%20Product%20Scraper-0071CE)](https://apify.com/sian.agency/walmart-data-scraper?fpr=sian)

#### 🎉 Pull Euro Car Parts prices (GBP), brands, images, full specs, and live stock — by keyword or part number, no code
##### Built for parts retailers, garages, and automotive analysts who need fresh Euro Car Parts product data on demand

---

### 📋 Overview

**Track every price, part spec, and stock level on Euro Car Parts — without writing a single line of code.** This scraper turns any Euro Car Parts search or part-number lookup into a clean, structured spreadsheet of products, complete with prices in GBP, brands, images, and live network stock.

**Why automotive professionals choose us:**
- ✅ **Complete product data**: 35+ fields per product — price, was-price, saving, brand, manufacturer/OE code, images, delivery options, and more
- ⚡ **Fast search-first mode**: pull 24 products per page in seconds; scale to thousands across multiple searches
- 🔎 **Keyword & part-number search**: find products the same way customers do, or look up an exact part number
- 💰 **Pay only for results**: charged per product you actually receive — no wasted spend, free tier to test
- 💎 **Detail enrichment**: add the full specifications table, long description, category breadcrumbs, and live network stock with one switch
- 🇬🇧 **UK locale, GBP pricing**: data exactly as a UK shopper sees it

---

### ✨ Features

- 🔎 **Keyword & Part-Number Search**: scrape any Euro Car Parts search term or look up an exact SKU/part number
- 🏷️ **Full Pricing (GBP)**: current price, was/list price, and percentage saving
- 🚗 **Automotive Identifiers**: brand, manufacturer/OE code, SKU, and product kind for matching across catalogs
- 🏬 **Live Stock**: in-stock flag plus live network stock quantity (Detail mode)
- 🖼️ **Product Images**: all product image URLs, ready for catalogs or feeds
- 🧾 **Specifications Table**: full structured specs (Detail mode) — grade, type, dimensions, fitment attributes, and more
- 🧭 **Breadcrumbs & Categories**: the product's full category path for clean classification
- 🚚 **Delivery Options**: eligible fulfillment methods (home delivery, collection, branch delivery)
- 📦 **Clean Export**: results delivered as structured JSON or CSV, ready for Excel or your database
- 🚀 **No-Code Setup**: configure searches in a simple form — no scripts, no maintenance

---

### 🎬 Quick Start

Enter one or more search keywords or part numbers, pick a mode, and run. In under a minute you'll have a structured dataset of Euro Car Parts products you can download as JSON or CSV. No setup, no proxies, no code.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~euro-car-parts-product-scraper/runs?token=YOUR_TOKEN \
-H 'Content-Type: application/json' \
-d '{"keywords": ["brake pads"], "scrapeMode": "overview"}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Add Your Searches

Type one or more Euro Car Parts search keywords or part numbers (e.g. `brake pads`, `engine oil 5w30`, `SEAVS059`) — one per line.

#### Step 2: Choose Your Mode

Pick **Overview** for fast search results, or **Detail** to also pull the full specifications table, long description, and live network stock.

#### Step 3: Run & Download

Click **Start**, then export your results as JSON, CSV, or Excel from the Apify dataset.

**That's it! In just a few minutes, you'll have:**

- A clean table of Euro Car Parts products with prices in GBP
- Brands, manufacturer/OE codes, and product images
- Live stock and delivery options for every product

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| keywords | array | No | Euro Car Parts search terms or part numbers, one per item (e.g. `brake pads`) |
| skus | array | No | Detail mode — product SKUs to enrich directly, skipping the search step |
| scrapeMode | string | No | `overview` (fast search) or `detail` (adds specs table + description + live stock) |
| sort | string | No | `relevance`, `price_low`, `price_high`, or `top_sellers` |
| maxResults | integer | No | Maximum products to return across all searches |

**Example — fast search:**

```json
{
  "keywords": ["brake pads", "wiper blades"],
  "scrapeMode": "overview",
  "sort": "price_low",
  "maxResults": 100
}
```

**Example — full detail with specs:**

```json
{
  "keywords": ["engine oil 5w30"],
  "scrapeMode": "detail",
  "sort": "top_sellers",
  "maxResults": 50
}
```

**Example — enrich specific SKUs:**

```json
{
  "skus": ["521776061", "SEAVS059"],
  "scrapeMode": "detail"
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **35+ fields per product**, including:

| Field | Type | Description |
|-------|------|-------------|
| productTitle | string | Product name |
| brand | string | Product brand |
| manufacturer\_product\_code | string | Manufacturer / OE part number |
| sku | string | Euro Car Parts SKU |
| price | number | Current price (GBP) |
| was\_price | number | List/was price |
| percentage\_saving | number | Saving as a percentage |
| currency | string | ISO currency code (GBP) |
| in\_stock | boolean | Whether the product is in stock |
| total\_company\_stock | number | Live network stock quantity (Detail mode) |
| delivery\_methods | array | Eligible fulfillment options |
| images | array | All product image URLs |
| breadcrumbs | array | Full category path (Detail mode) |
| specs | object | Full specifications table (Detail mode) |
| description | string | Long product description (Detail mode) |

**Example:**

```json
{
  "sku": "521776061",
  "productTitle": "Triple QX Fully Syn C3 5W-30 Engine Oil 5L",
  "brand": "Triple QX",
  "manufacturer_product_code": "521776061",
  "price": 87.99,
  "was_price": 87.99,
  "percentage_saving": 0,
  "currency": "GBP",
  "in_stock": true,
  "total_company_stock": 20334,
  "delivery_methods": ["HOME_DELIVERY", "COLLECTION", "BRANCH_DELIVERY"],
  "images": ["https://lkqmedia.eurocarparts.com/product/521776061/..."],
  "breadcrumbs": ["Car Parts", "Car Lubricants and Fluids", "Engine Oil", "5W30 Engine Oil"],
  "specs": { "Grade": "5W-30", "Oil Type": "Full Synthetic Oil", "Size Ltr": "5 Litre", "ACEA": "C3" },
  "description": "Fully Syn C3 5W-30 Engine Oil 5L..."
}
```

***

### 💼 Use Cases & Examples

#### 1. Price Monitoring

**Parts retailers and garages tracking Euro Car Parts prices over time to stay competitive.**

**Input:** Your product keywords and a daily schedule
**Output:** Current price, was-price, and saving for every match
**Use:** Spot price drops, react to promotions, and keep your own pricing sharp.

#### 2. Competitive Analysis

**Distributors and brands benchmarking their products against the Euro Car Parts assortment.**

**Input:** Category keywords or part numbers
**Output:** Competitor prices, brands, and savings across the range
**Use:** Understand where you win or lose on price and availability.

#### 3. Catalog Building

**E-commerce teams and marketplaces building a clean parts catalog with images and specs.**

**Input:** Keywords or SKUs, in Detail mode
**Output:** Titles, brands, manufacturer/OE codes, images, and full specifications tables
**Use:** Populate your storefront or PIM with structured, ready-to-use product data.

#### 4. Part-Number Lookups

**Garages and parts desks resolving an exact part number to price, brand, and stock.**

**Input:** A list of part numbers in the keywords or SKUs field
**Output:** Matched product with price, stock, and specs
**Use:** Quote customers fast and confirm availability before ordering.

#### 5. Stock & Availability Research

**Buyers studying which parts carry live stock and the fastest delivery options.**

**Input:** Category keywords, in Detail mode
**Output:** Live network stock quantities and eligible delivery methods
**Use:** Plan assortment, identify stockouts, and find fast-moving lines.

#### 6. Market Research & Trend Spotting

**Analysts tracking best-sellers, pricing, and new lines across automotive categories.**

**Input:** Broad category keywords, sorted by top sellers
**Output:** Best-selling parts, pricing, and saving trends
**Use:** Surface emerging products and category trends before competitors do.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/euro-car-parts-product-scraper').call({
  keywords: ['brake pads'],
  scrapeMode: 'overview'
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/euro-car-parts-product-scraper').call(
    run_input={'keywords': ['brake pads'], 'scrapeMode': 'overview'}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~euro-car-parts-product-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"keywords": ["brake pads"], "scrapeMode": "overview"}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule (e.g. daily) or webhook
2. **HTTP Request**: Call the actor API with your keywords
3. **Process**: Handle the JSON results
4. **Action**: Save to a sheet, sync to a database, or send a price-drop alert

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 products** per run — full feature access, same data quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** products per run
- Run multiple searches and large categories in one go
- Pay-per-result: you're only charged for the products you actually receive

💰 **Best value on the market** — transparent pay-per-result pricing with no hidden proxy or subscription fees.

🔗 [View current pricing](https://apify.com/sian.agency/euro-car-parts-product-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many products can I scrape?**
A: FREE tier: 25 products per run. PAID tier: unlimited products across as many searches as you like.

**Q: Can I look up a specific part number?**
A: Yes — put the part number in the keywords field for a search, or in the SKUs field (Detail mode) for a direct lookup.

**Q: What's the difference between Overview and Detail mode?**
A: Overview is the fast path — search results with price, brand, images, and stock flag. Detail adds the full specifications table, the long description, category breadcrumbs, and live network stock for every product.

**Q: What currency are prices in?**
A: Prices are in GBP, exactly as shown on the UK Euro Car Parts site.

**Q: What output formats are available?**
A: JSON, CSV, and Excel — export directly from the Apify dataset.

**Q: Is this legal?**
A: Yes — we only extract publicly available product data. See the legal section below.

**Q: How fresh is the data?**
A: Every run pulls live data directly from Euro Car Parts at the moment you run it. Schedule runs to keep prices and stock up to date.

***

### 🐞 Troubleshooting

**No results returned**

- Check that your keywords or part numbers match real Euro Car Parts products
- Try a broader search term or a different sort order

**Missing specifications or description**

- Specs, descriptions, breadcrumbs, and live network stock only appear in **Detail** mode — switch `scrapeMode` to `detail`

**Fewer results than expected on the free tier**

- The FREE tier is capped at 25 products per run — upgrade to PAID for unlimited results

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what is publicly shared. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### ⚖️ Trademark Disclaimer

Euro Car Parts® is a trademark of LKQ Euro Car Parts Ltd. This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Euro Car Parts or LKQ.

***

### ⭐ Love This Tool?

If this actor saves you time, please [leave us a 5-star review](https://apify.com/sian.agency/euro-car-parts-product-scraper/reviews) — it helps other professionals discover it and helps us keep improving.

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

#### More from SIÁN Agency

- 🪚 [Home Depot Product Scraper](https://apify.com/sian.agency/home-depot-product-scraper?fpr=sian) — Home Depot prices, specs & store stock
- 🛍️ [Google Shopping Price Scraper](https://apify.com/sian.agency/google-shopping-price-scraper?fpr=sian) — track offers and price history across the web
- 🏪 [Walmart Product Scraper](https://apify.com/sian.agency/walmart-data-scraper?fpr=sian) — Walmart product and review data

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `keywords` (type: `array`):

🔍 **KEYWORD & PART-NUMBER SEARCH:** Free-text Euro Car Parts searches — exactly what you'd type into the site's search bar, or an exact part number for a direct lookup.

📝 **EXAMPLES:** `brake pads` · `engine oil 5w30` · `wiper blades` · `SEAVS059`

💡 **TIP:** Add one keyword per line — each runs as its own search and all results land in the same dataset.

🖊️ **BULK EDIT:** Click "Bulk edit" to paste many keywords at once (one per line).

✅ **IMPORTANT:** Provide keywords here (for either mode) or, for Detail mode only, a list of SKUs below.

## `skus` (type: `array`):

🆔 **DIRECT SKU LOOKUP (Detail mode):** Enrich specific products by their Euro Car Parts SKU — skips the search step and fetches each product page directly for the full specifications table, description, breadcrumbs and live stock.

📝 **EXAMPLE:** `521776061` · `SEAVS059`

💡 **TIP:** Find a SKU on any product page URL or in the output of an Overview run. Leave empty if you're searching by keyword.

🖊️ **BULK EDIT:** Add one SKU per line to enrich many products in one run.

## `scrapeMode` (type: `string`):

⚙️ **SCRAPE DEPTH:** Choose how much data to pull per product.

⚡ **Overview (fast):** Search results only — price (GBP), brand, images, part code, delivery options and live stock flag. Fastest and cheapest path.

🔬 **Detail (enriched specs):** Everything in Overview PLUS the full specifications table, long description, category breadcrumbs and live network stock scraped from each product page.

💡 **TIP:** Start with Overview to scope your catalog, then switch to Detail when you need the complete spec sheet for feeds or comparisons.

## `sort` (type: `string`):

🔃 **RESULT ORDERING:** Order search results using Euro Car Parts' own native sort options — so you get the same ranking real shoppers see.

🎯 **Relevance** is the default site ranking · 💲 **Price** sorts ascending or descending · 🏆 **Top sellers** surfaces the best-selling products first.

## `maxResults` (type: `integer`):

🔢 **RESULT CAP:** Maximum number of products to return across all searches and SKUs combined.

🎁 **TIER-BASED LIMITS:**

- **FREE users:** Up to 25 products per run
- **PAID users:** Unlimited — scrape entire catalogs in a single run

💡 **TIP:** Keep this low while you dial in your keywords, then raise it once the output looks right.

## Actor input object example

```json
{
  "keywords": [
    "brake pads"
  ],
  "scrapeMode": "overview",
  "sort": "relevance",
  "maxResults": 100
}
```

# Actor output Schema

## `euroCarPartsProducts` (type: `string`):

Scraped Euro Car Parts products with prices, brands, images, specs and live stock.

# 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 = {
    "keywords": [
        "brake pads"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/euro-car-parts-product-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 = {
    "keywords": ["brake pads"],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/euro-car-parts-product-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 '{
  "keywords": [
    "brake pads"
  ],
  "maxResults": 100
}' |
apify call sian.agency/euro-car-parts-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sian.agency/euro-car-parts-product-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Euro Car Parts Product Scraper",
        "description": "Scrape Euro Car Parts products — prices in GBP, brands, images, specs & live stock. Keyword or part-number search, full detail enrichment, clean JSON/CSV, no code.",
        "version": "1.0",
        "x-build-id": "LmiJrNbBgJizSEAdK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~euro-car-parts-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-euro-car-parts-product-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/sian.agency~euro-car-parts-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-euro-car-parts-product-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/sian.agency~euro-car-parts-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-euro-car-parts-product-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": {
                    "keywords": {
                        "title": "🔍 Search Keywords / Part Numbers",
                        "type": "array",
                        "description": "🔍 **KEYWORD & PART-NUMBER SEARCH:** Free-text Euro Car Parts searches — exactly what you'd type into the site's search bar, or an exact part number for a direct lookup.\n\n📝 **EXAMPLES:** `brake pads` · `engine oil 5w30` · `wiper blades` · `SEAVS059`\n\n💡 **TIP:** Add one keyword per line — each runs as its own search and all results land in the same dataset.\n\n🖊️ **BULK EDIT:** Click \"Bulk edit\" to paste many keywords at once (one per line).\n\n✅ **IMPORTANT:** Provide keywords here (for either mode) or, for Detail mode only, a list of SKUs below.",
                        "default": [
                            "brake pads"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "skus": {
                        "title": "🆔 Product SKUs (Detail mode)",
                        "type": "array",
                        "description": "🆔 **DIRECT SKU LOOKUP (Detail mode):** Enrich specific products by their Euro Car Parts SKU — skips the search step and fetches each product page directly for the full specifications table, description, breadcrumbs and live stock.\n\n📝 **EXAMPLE:** `521776061` · `SEAVS059`\n\n💡 **TIP:** Find a SKU on any product page URL or in the output of an Overview run. Leave empty if you're searching by keyword.\n\n🖊️ **BULK EDIT:** Add one SKU per line to enrich many products in one run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeMode": {
                        "title": "⚙️ Scrape Mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "⚙️ **SCRAPE DEPTH:** Choose how much data to pull per product.\n\n⚡ **Overview (fast):** Search results only — price (GBP), brand, images, part code, delivery options and live stock flag. Fastest and cheapest path.\n\n🔬 **Detail (enriched specs):** Everything in Overview PLUS the full specifications table, long description, category breadcrumbs and live network stock scraped from each product page.\n\n💡 **TIP:** Start with Overview to scope your catalog, then switch to Detail when you need the complete spec sheet for feeds or comparisons.",
                        "default": "overview"
                    },
                    "sort": {
                        "title": "🔃 Sort Order",
                        "enum": [
                            "relevance",
                            "price_low",
                            "price_high",
                            "top_sellers"
                        ],
                        "type": "string",
                        "description": "🔃 **RESULT ORDERING:** Order search results using Euro Car Parts' own native sort options — so you get the same ranking real shoppers see.\n\n🎯 **Relevance** is the default site ranking · 💲 **Price** sorts ascending or descending · 🏆 **Top sellers** surfaces the best-selling products first.",
                        "default": "relevance"
                    },
                    "maxResults": {
                        "title": "🔢 Max Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🔢 **RESULT CAP:** Maximum number of products to return across all searches and SKUs combined.\n\n🎁 **TIER-BASED LIMITS:**\n- **FREE users:** Up to 25 products per run\n- **PAID users:** Unlimited — scrape entire catalogs in a single run\n\n💡 **TIP:** Keep this low while you dial in your keywords, then raise it once the output looks right.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
