# Answear Scraper — Fashion Product Prices & Stock (`studio-amba/answear-scraper`) Actor

Scrape product data from answear.com, PL/CEE's leading online fashion retailer. Extract names, brands, prices, discounts, sizes, EANs, stock and images for any search term across hundreds of brands — no login, no proxy needed.

- **URL**: https://apify.com/studio-amba/answear-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 result scrapeds

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

## Answear Scraper

Pull product data from answear.com, PL/CEE's leading online multi-brand fashion retailer. This scraper reads directly from Answear's own on-site search backend, so it returns clean, structured data — name, brand, price, sizes, EANs, stock, images, full descriptions — for real search results, not a scraped screenshot of a page.

### How to scrape Answear data

Give the actor one or more search keywords (product types, brand names, or a mix — `"sukienka"` (dress), `"buty"` (shoes), `"Tommy Hilfiger"` all work, Polish or English) and it pages through Answear's search results until it hits `maxResults`. An optional `categorySlug` narrows any query to a specific department, e.g. `"ona/odziez/sukienki"` for women's dresses.

Answear.com sits behind Akamai's bot-management layer: a plain request to any answear.com path, including `robots.txt`, gets blocked at the edge. But Answear's own on-site search runs on Luigi's Box, a third-party search backend hosted separately from answear.com and reachable with a plain, stateless HTTP request — no proxy, no browser automation, no anti-bot workaround needed. This actor talks directly to that backend, which is also why it's fast: a single request returns up to 200 full product records at once, and a typical run finishes in a few seconds.

Each result carries the full data Answear's search index holds per product: current and pre-discount price, brand, breadcrumb category, a full-paragraph description, primary and additional images, available sizes, and a representative EAN barcode pulled from the product's size/SKU variants.

If you don't provide any input, it defaults to scraping Answear's "sukienka" (dress) search as a demo — a broad, evergreen term with hundreds of matches across dozens of brands.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `searchQueries` | array of strings | Search keywords to run on answear.com, e.g. `"sukienka"`, `"buty"`. Up to 25 per run. |
| `categorySlug` | string | Optional category filter applied on top of every query, e.g. `"ona/odziez/sukienki"` (women / clothing / dresses) |
| `maxResults` | integer | Cap on number of products returned across all search queries (default: 100) |
| `proxyConfiguration` | object | Not used — this actor reaches answear.com's search backend directly, no proxy needed. Kept for input-shape compatibility. |

### What you get back

| Field | Type | Example |
|-------|------|---------|
| `name` | string | `"Sukienka letnia z wiskozą"` |
| `brand` | string | `"Medicine"` |
| `price` | number | `139.90` |
| `originalPrice` | number | null | Pre-discount price, only present when Answear marks a markdown |
| `currency` | string | `"PLN"` — answear.com is a single-market, PLN-only storefront |
| `sku` | string | null | `"RW26-SUD011"` — manufacturer part number |
| `productId` | string | null | Answear's internal numeric product id |
| `ean` | string | null | Barcode of one in-stock size variant (each size has its own EAN, not one per product) |
| `inStock` | boolean | null | `true` when at least one size is purchasable, `false` when every known size is confirmed sold out, `null` only when the source doesn't confirm stock — never coerced to `false` |
| `url` | string | Full product page URL |
| `imageUrl` | string | null | Primary product image |
| `imageUrls` | array | Primary plus additional product angle images |
| `category` | string | null | Full breadcrumb, e.g. `"Ona / Odzież / Sukienki"` |
| `description` | string | null | Full product description (Polish) |
| `specs` | object | Available sizes plus a handful of product attributes (material, fit, pattern, neckline, etc) |
| `scrapedAt` | string | ISO timestamp |

### Sample output

```json
{
  "name": "Sukienka letnia z wiskozą",
  "brand": "Medicine",
  "price": 139.9,
  "currency": "PLN",
  "url": "https://answear.com/p/medicine-sukienka-letnia-z-wiskoza-bezowa-gladka-1720119",
  "scrapedAt": "2026-09-07T14:18:24.371Z",
  "sku": "RW26-SUD011",
  "productId": "1720119",
  "ean": "5907842288229",
  "inStock": true,
  "imageUrl": "https://img2.ans-media.com/i/855x1290/RW26-SUD011-01X_F1.avif?v=1784538642",
  "imageUrls": [
    "https://img2.ans-media.com/i/855x1290/RW26-SUD011-01X_F1.avif?v=1784538642",
    "https://img2.ans-media.com/i/855x1290/RW26-SUD011-01X_F2.avif?v=1784538785"
  ],
  "category": "Ona / Odzież / Sukienki",
  "description": "Sukienka mini Medicine to trapezowa, letnia propozycja, która wyróżnia się gładką strukturą i cienkimi ramiączkami...",
  "specs": {
    "sizes": "S, L, XL, XS",
    "Długość fasonu": "mini",
    "Materiał": "wiskoza"
  }
}
```

### Use cases

- **Price monitoring** — track Answear's own price and markdown changes over time on the brands and styles you sell against.
- **Assortment research** — see which brands and products rank for a given search term on Poland's leading multi-brand fashion marketplace.
- **Market comparison** — Answear fills the gap next to Zalando, H\&M and Zara for CEE fashion pricing benchmarks.
- **Stock and size tracking** — `inStock` and the `sizes` spec flag when a product or a specific size run has sold through, with a real EAN for barcode-level joins.

### Coverage

answear.com is Answear's primary/parent storefront (Polish language, PLN pricing). Answear runs separate country domains (answear.de, answear.ro, answear.cz, and others) on the same underlying platform with localized catalogs and currencies — this actor is scoped to answear.com only.

### Performance and cost

This actor makes zero requests through Bright Data or any paid unblocking service — Answear's search backend (Luigi's Box) is open to plain HTTP requests, and a single call returns up to 200 products at once. A 100-product run typically completes in a few seconds. Infrastructure cost per result is effectively zero, which is why this actor is priced at $0.002 per result plus a $0.005 run-start fee — the standard e-commerce tier. Your run's usage cost only settles after the run reports SUCCEEDED — checking cost mid-run will undercount it.

### Limitations

- Input is search keywords (optionally narrowed by one category filter), not full category-tree browsing.
- `originalPrice` is only populated when Answear marks an item as discounted; full-price items will show it as absent, which is correct, not missing data.
- `ean` reflects one size variant's barcode, not a single product-level code — fashion items don't have one EAN across all sizes.
- Ratings and review counts aren't exposed on the search endpoint, so they're not included in the output.
- If Answear or Luigi's Box changes its search API shape, or the tracker id rotates, the actor will need updating — see the recon notes in `src/main.ts` for the harvest procedure.

### Related scrapers

If you're covering European fashion more broadly, also check out:

- [Zalando Scraper](https://apify.com/studio-amba/zalando-scraper) — Europe's largest online fashion retailer
- [Zara Scraper](https://apify.com/studio-amba/zara-scraper) — Inditex flagship, category-based catalog
- [Vinted Scraper](https://apify.com/studio-amba/vinted-scraper) — European resale/secondhand fashion

### Support

Found an issue or need a market that isn't resolving correctly? Open an issue on this actor's Apify Store page and we'll take a look.

# Actor input Schema

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

Search keywords to run on answear.com, e.g. "sukienka" (dress) or "buty" (shoes). Polish or English both work. Leave empty to use the default ("sukienka").

## `categorySlug` (type: `string`):

Optional category filter applied on top of every search query, e.g. "ona/odziez/sukienki" (women / clothing / dresses) or "on/buty" (men / shoes). Find slugs by browsing answear.com's menu — leave empty to search the whole catalog.

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

Maximum number of products to scrape across all search queries

## `proxyConfiguration` (type: `object`):

Not used — answear.com's search data comes from an open Luigi's Box API endpoint (live.luigisbox.com) that isn't behind the site's Akamai protection, so no proxy is needed at all. Kept for input-shape compatibility.

## Actor input object example

```json
{
  "searchQueries": [
    "sukienka"
  ],
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

# 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": [
        "sukienka"
    ],
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/answear-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": ["sukienka"],
    "maxResults": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/answear-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 '{
  "searchQueries": [
    "sukienka"
  ],
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call studio-amba/answear-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,studio-amba/answear-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/X74FYdTG1lT1jOGRi/builds/bjfG2Gb5oPVqOTgaW/openapi.json
