# Ankorstore Product Search Scraper (`soft_alexist/ankorstore-product-search-scraper`) Actor

Scrape wholesale products from Ankorstore with 39+ data fields including pricing, inventory status, variants, and brand info. Perfect for retailers analyzing stock, comparing prices, and building product databases from Europe's largest B2B marketplace.

- **URL**: https://apify.com/soft\_alexist/ankorstore-product-search-scraper.md
- **Developed by:** [Soft Alexist](https://apify.com/soft_alexist) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Ankorstore Product Search Scraper: Extract Wholesale Product Data at Scale

***

### What Is Ankorstore?

Ankorstore is Europe's leading B2B marketplace connecting independent retailers with thousands of brands and suppliers. It hosts millions of product listings across categories like beauty, wellness, home, fashion, and more. Retailers use it to discover inventory, compare wholesale prices, and manage orders. Manually collecting product data is impractical — the **Ankorstore Product Search Scraper** automates this, delivering rich product records with pricing, variants, images, and stock status in structured format.

***

### Overview

The **Ankorstore Product Search Scraper** extracts detailed product listings from Ankorstore category and search pages, converting them into clean, machine-readable records. It is built for:

- **Retailers** analyzing supplier inventories and pricing strategies
- **Marketplace aggregators** feeding product data into their platforms
- **Market researchers** studying wholesale trends and brand distribution
- **Price comparison tools** tracking wholesale cost fluctuations
- **E-commerce platforms** syncing supplier catalogs

Key strengths include support for paginated search results, flexible item limits per URL, and robust error handling that continues scraping even when individual URLs fail.

***

### Input Format

The scraper accepts a JSON configuration with the following parameters:

```json
{
  "urls": [
    "https://www.ankorstore.com/shop/beauty-wellness-1279/bath-shower-1280?p=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
```

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | Product list or category page URLs from Ankorstore. Supports paginated results (e.g., `?p=2`, `?p=3`). Add multiple URLs to scrape different categories. |
| `max_items_per_url` | Integer | Maximum products to extract per URL. Default: `500`. Use `200` for focused runs. |
| `ignore_url_failures` | Boolean | If `true`, scraper continues if a URL fails. Recommended for bulk operations. |

> **Tip:** Chain multiple category URLs to gather comparative data across departments (beauty, home, fashion, etc.).

***

### Output Format

**Example output (abbreviated):**

```json
{
  "metadata": [],
  "id": 2555970,
  "uuid": "1eced5a6-1d84-6194-a282-cae8e9f75346",
  "margin": [
    "1.5_2.0"
  ],
  "retail_price": {
    "currency": "EUR",
    "amount": 895
  },
  "retail_prices": [],
  "wholesale_price": {
    "currency": "EUR",
    "amount": 0
  },
  "original_wholesale_price": {
    "currency": "EUR",
    "amount": 0
  },
  "discount_rate": 0,
  "unit_multiplier": 2,
  "tags_aggregatable": [],
  "tags": {
    "en": [
      "Organic",
      "Eco-Friendly"
    ]
  },
  "hierarchical_categories": [],
  "catalog_categories": [],
  "catalog_hierarchical_categories": [],
  "product_type": null,
  "link": "/brand/abellie-20512/gel-douche-hydratant-bio-400ml-2555970",
  "name": {
    "en": "Organic Moisturizing Shower Gel 400ml",
    "fr": "Gel Douche Hydratant Bio 400ml",
    "de": "Bio-Feuchtigkeitsduschgel 400 ml",
    "es": "Gel de ducha hidratante orgánico 400 ml",
    "it": "Gel doccia idratante biologico 400 ml"
  },
  "searchable_name": [],
  "description": {
    "en": "Enjoy a moisturizing bath with this certified organic moisturizing shower gel rich in organic French honey and organic apricot oil.\n\nSweet and fruity, this shower gel moisturizes and softens all skin types. Its notes of apricot & honey and the softness of its texture will offer you a real sweet break.\n\nThis shower gel is guaranteed free of sulfated surfactants and palm oil derivatives, ideal for respecting your skin and the planet!"
  },
  "out_of_stock": false,
  "is_new": false,
  "brand": {
    "id": 20512,
    "uuid": "1ed6b394-e573-6780-9020-567a60de2e1c",
    "name": "Abellie",
    "brand_location": {
      "lon": -1.0299930000000002,
      "lat": 47.090114
    },
    "link": "/brand/abellie-20512",
    "minimum": 10000,
    "country_code": "FR",
    "segment": "Viral",
    "source_zipcode": "49450",
    "min_lead_time": 3,
    "max_lead_time": 5,
    "is_open": true,
    "country": {
      "en": "France",
      "fr": "France",
      "de": "Frankreich",
      "es": "Francia",
      "nl": "Frankrijk",
      "it": "Francia",
      "sv": "Frankrike",
      "da": "France",
      "fi": "France",
      "pt": "France"
    },
    "opened_countries": [
      "AT",
      "BE",
      "BG",
      "HR",
      "CY",
      "DK",
      "EE",
      "FI",
      "FR",
      "GR",
      "HU",
      "IE",
      "IT",
      "LV",
      "LT",
      "LU",
      "MT",
      "NL",
      "PL",
      "PT",
      "RO",
      "SK",
      "SI",
      "ES",
      "SE",
      "CH",
      "GB"
    ],
    "images": {
      "squared": "/brands/squared/20512-47e85cecb3d857.jpg",
      "rounded": "/brands/rounded/20512-47e85cecb3e3a7.jpg",
      "large": "/brands/large/20512-47e85cecb3dfbb.jpg"
    },
    "business_events": {
      "194": {
        "id": 194,
        "discount": 0,
        "has_discount": false
      }
    },
    "business_events_eligible": [
      194
    ],
    "business_events_rankings": [],
    "location": [
      "c76",
      "r55"
    ],
    "shipping_lead_time": [
      "3_to_5"
    ],
    "brand_tags": [
      "BPG"
    ],
    "synonyms": [],
    "similar_brands": [],
    "aks_plus": []
  },
  "options": [
    {
      "id": 3527050,
      "variation": null,
      "ian": "3760343100252",
      "sku": "060169",
      "out_of_stock": false,
      "stock": {
        "id": 787094672,
        "is_always_in_stock": true,
        "inventory_policy": "deny",
        "available_quantity": null,
        "fulfillable_quantity": 0,
        "status": "in_stock"
      }
    }
  ],
  "variants": [
    {
      "id": 1305571,
      "uuid": "1ed48bcb-7530-698e-bdfe-46ea5f308482",
      "sku": "060169",
      "ian": "3760343100252",
      "out_of_stock": false,
      "retail_prices": {
        "e_u_r": 895,
        "g_b_p": 764,
        "s_e_k": 9895
      },
      "retail_price": {
        "currency": "EUR",
        "amount": 895
      },
      "wholesale_price": {
        "currency": "EUR",
        "amount": 0
      },
      "stock": {
        "id": 787094672,
        "is_always_in_stock": true,
        "inventory_policy": "deny",
        "available_quantity": null,
        "fulfillable_quantity": 0,
        "status": "in_stock"
      },
      "options": [],
      "estimated_delivery": {
        "min_days": null,
        "max_days": null,
        "qualification": "normal"
      },
      "available_at": null
    }
  ],
  "images": [
    "/products/images/2555970-47d6d0e96126aa.jpg"
  ],
  "discount_event_price": {
    "currency": null,
    "amount": null
  },
  "display_name": "Gel Douche Hydratant Bio 400ml",
  "target_gender": null,
  "age_group": null,
  "data_enrichment": [],
  "available_at": null,
  "attributes": [],
  "is_ad": false,
  "storage_temperature": null,
  "aks_systems": [
    "repeat_offers"
  ],
  "estimated_delivery": {
    "min_days": null,
    "max_days": null,
    "qualification": "normal"
  },
  "ad": null,
  "from_url": "https://www.ankorstore.com/shop/beauty-wellness-1279/bath-shower-1280?p=2"
}
```

Each product returns a comprehensive record with 39+ fields covering pricing, inventory, variants, and branding:

#### Product Identification

| Field | Meaning | Example |
|---|---|---|
| `ID` | Unique internal product identifier | `prod_12345abc` |
| `UUID` | Globally unique product identifier | `550e8400-e29b-41d4-a716-446655440000` |
| `Name` | Product display name | "Organic Lavender Bath Bomb Set" |
| `Searchable Name` | Name optimized for search indexing | `organic-lavender-bath-bomb-set` |
| `Display Name` | Formatted name shown to customers | "Organic Lavender Bath Bomb Set" |
| `Link` | Direct product page URL | `https://www.ankorstore.com/product/...` |

#### Pricing & Commercial Terms

| Field | Meaning | Example |
|---|---|---|
| `Retail Price` | Recommended retail price to end customers | `€24.99` |
| `Retail Prices` | Multiple retail prices (by region/variant) | `[€24.99, €22.99]` |
| `Wholesale Price` | Current B2B wholesale cost | `€12.50` |
| `Original Wholesale Price` | Original price before discounts | `€15.00` |
| `Discount Rate` | Current discount percentage | `16.7%` |
| `Margin` | Typical profit margin for retailers | `50%` |
| `Discount Event Price` | Price during promotional periods | `€11.50` |

#### Inventory & Availability

| Field | Meaning |
|---|---|
| `Out of Stock` | Boolean indicating stock status |
| `Is New` | Whether this is a newly listed product |
| `Available At` | List of warehouses/locations with stock |
| `Estimated Delivery` | Expected delivery timeframe to retailers |
| `Unit Multiplier` | Minimum order quantity (MOQ) |

#### Product Details

| Field | Meaning |
|---|---|
| `Description` | Full product description and benefits |
| `Product Type` | Category (e.g., "Bath & Body", "Skincare") |
| `Brand` | Supplier or brand name |
| `Tags` | Searchable tags (e.g., "organic", "eco-friendly") |
| `Tags Aggregatable` | Tags suitable for filtering |
| `Attributes` | Additional product specs (size, scent, material) |
| `Options` | Customizable choices (color, fragrance variant) |
| `Variants` | Different SKUs/variations of the product |

#### Categorization

| Field | Meaning |
|---|---|
| `Hierarchical Categories` | Full category path (e.g., "Beauty > Bath & Body > Bath Bombs") |
| `Catalog Categories` | Supplier's internal category structure |
| `Catalog Hierarchical Categories` | Full hierarchy from supplier catalog |

#### Targeting & Demographics

| Field | Meaning |
|---|---|
| `Target Gender` | Intended audience (Unisex, Men, Women) |
| `Age Group` | Target age range (e.g., "18-35", "All Ages") |

#### Media & Enrichment

| Field | Meaning |
|---|---|
| `Images` | Array of product image URLs |
| `Data Enrichment` | Enriched metadata (certifications, compliance flags) |

#### Operational Flags

| Field | Meaning |
|---|---|
| `Is Ad` | Whether the listing is a paid advertisement |
| `Ad` | Ad placement details if applicable |
| `Storage Temperature` | Required storage conditions (e.g., "Room Temp", "Refrigerated") |
| `AKS Systems` | Internal Ankorstore system flags |
| `Metadata` | Additional unstructured metadata |

***

### How to Use

1. **Identify URLs** — Navigate to Ankorstore category or search pages (e.g., Beauty > Bath & Shower). Copy the URL including any page parameters (`?p=1`, `?p=2`, etc.).

2. **Prepare input** — Add URLs to the `urls` array. If scraping multiple pages of the same category, include each page URL separately:

```json
   "urls": [
     "https://www.ankorstore.com/shop/beauty-wellness-1279/bath-shower-1280?p=1",
     "https://www.ankorstore.com/shop/beauty-wellness-1279/bath-shower-1280?p=2"
   ]
```

3. **Configure limits** — Set `max_items_per_url` based on your needs (e.g., `200` for focused data, `500` for comprehensive catalogs).

4. **Enable resilience** — Set `ignore_url_failures: true` to skip problematic pages without interrupting the run.

5. **Execute & export** — Run the scraper and download results as JSON, CSV, or Excel.

**Best practices:**

- Scrape during off-peak hours to minimize load on Ankorstore servers.
- Use category URLs for themed datasets (e.g., "organic beauty" across multiple suppliers).
- Combine with price monitoring tools to track wholesale margin trends over time.

***

### Use Cases & Business Value

- **Price intelligence:** Monitor wholesale pricing across suppliers and spot arbitrage opportunities
- **Inventory syncing:** Auto-update retail catalogs with live Ankorstore products and availability
- **Competitive analysis:** Compare how different brands position products and pricing in wholesale channels
- **Trend spotting:** Identify emerging product categories and supplier growth on the platform
- **Supplier onboarding:** Build databases of new vendors and their product ranges for evaluation

The Ankorstore Product Search Scraper transforms manual browsing into data-driven insights, enabling retailers to make faster sourcing decisions and marketplace operators to maintain real-time product indexes.

***

### Conclusion

The **Ankorstore Product Search Scraper** is the essential tool for anyone needing structured wholesale product data from Europe's largest B2B marketplace. With 39+ fields covering pricing, variants, stock status, and branding, it delivers the intelligence needed to optimize sourcing, pricing, and catalog management. Start scraping today and unlock competitive advantages in B2B retail.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the product list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.ankorstore.com/shop/beauty-wellness-1279/bath-shower-1280?p=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 500
}
```

# 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 = {
    "urls": [
        "https://www.ankorstore.com/shop/beauty-wellness-1279/bath-shower-1280?p=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 500
};

// Run the Actor and wait for it to finish
const run = await client.actor("soft_alexist/ankorstore-product-search-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 = {
    "urls": ["https://www.ankorstore.com/shop/beauty-wellness-1279/bath-shower-1280?p=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 500,
}

# Run the Actor and wait for it to finish
run = client.actor("soft_alexist/ankorstore-product-search-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 '{
  "urls": [
    "https://www.ankorstore.com/shop/beauty-wellness-1279/bath-shower-1280?p=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 500
}' |
apify call soft_alexist/ankorstore-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,soft_alexist/ankorstore-product-search-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/WLaazbDrRmowFdQ6m/builds/MYLWgtfxXPtGNQmTB/openapi.json
