# Ankorstore Product Details Scraper (`soft_alexist/ankorstore-product-details-scraper`) Actor

Scrape detailed product information from Ankorstore.com directly. Collect pricing, variants, stock status, translations, images, and 40+ fields per product — built for B2B retailers, aggregators, and market researchers tracking European wholesale inventory.

- **URL**: https://apify.com/soft\_alexist/ankorstore-product-details-scraper.md
- **Developed by:** [Soft Alexist](https://apify.com/soft_alexist) (community)
- **Categories:** Agents, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 90.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 Scraper: Extract Wholesale Data at Scale

***

### What Is Ankorstore?

Ankorstore is Europe's leading B2B marketplace connecting independent retailers with vetted suppliers and brands. It hosts hundreds of thousands of products across beauty, home, fashion, and gift categories. For buyers and market researchers, extracting product-level data — pricing, variants, stock status, attributes — would typically require hours of manual work. The **Ankorstore Product Scraper** automates this, delivering structured wholesale product intelligence in minutes.

***

### Overview

The **Ankorstore Product Details Scraper** extracts comprehensive product data from individual Ankorstore listings, including pricing tiers, variants, inventory status, and metadata. It serves:

- **B2B buyers** monitoring product availability and wholesale pricing
- **Market researchers** analyzing European retail and gift markets
- **Aggregator platforms** building multi-source product catalogs
- **Price intelligence tools** tracking competitive positioning
- **Data analysts** studying product trends and supply chain patterns

The scraper captures 41 distinct fields per product, handling product variants, multi-language descriptions, and complex pricing rules — essential for wholesale operations where accuracy and completeness matter.

***

### Input Format

The scraper accepts a JSON configuration object:

```json
{
  "urls": [
    "https://www.ankorstore.com/brand/yesforlov-10318/le-must-have-de-lete-brume-intime-au-parfum-enivrant-793405",
    "https://www.ankorstore.com/brand/au-poil-30991/le-gel-lavant-100ml-corps-cheveux-et-barbe-3121977"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

| Field | Description |
|---|---|
| `urls` | Array of direct Ankorstore product URLs (detail pages only) |
| `max_items_per_url` | Maximum records to extract per URL (e.g., `200`) |
| `ignore_url_failures` | If `true`, continues scraping even if individual URLs fail |

> **Best practice:** Use full product URLs from the address bar. Search result pages will not work. Set `ignore_url_failures: true` for production runs to avoid interruptions.

***

### Output Format

**Sample output**

```json
{
  "type": "product",
  "id": 793405,
  "uuid": "1ec25205-fea1-6400-9b3d-a6b524aefa5b",
  "position": 50,
  "link": "/brand/yesforlov-10318/le-must-have-de-lete-brume-intime-au-parfum-enivrant-793405",
  "created_at": "2021-10-04T14:35:52+00:00",
  "name": "The summer must-have: Intimate mist with an intoxicating fragrance",
  "original_name": "Le Must-Have de l'été : BRUME INTIME au parfum enivrant",
  "unit_multiplier": 3,
  "retail_price": {
    "amount": 2490,
    "currency": "EUR"
  },
  "wholesale_price": {
    "amount": 0,
    "currency": "EUR"
  },
  "discount_rate": 0,
  "discount_type": null,
  "is_discount_editable": true,
  "original_wholesale_price": {
    "amount": 0,
    "currency": "EUR"
  },
  "images": [
    "/products/images/793405-47faa5bee5bf9c.jpg",
    "/products/images/793405-47faa5bee5bfcc.jpg",
    "/products/images/793405-47faa36c57076f.jpg"
  ],
  "discount_event_price": null,
  "description": "An intimate aphrodisiac mist, specifically designed to arouse bodies and make you irresistible and irresistible. Its formula has been tested under gynecological control to offer you an exquisite feeling of well-being and freshness, enveloping you throughout the day in infinite softness and unparalleled sensuality.  \r\n​Formulated with ingredients of natural origin, without parabens, alcohol and aluminium salts, the YESforLOV intimate mist respects the balance of your skin and the sensitivity of your precious mucous membranes. Its warm, irresistible and terribly intoxicating fragrance will become your new weapon of seduction.  \r\n​This perfume for the body and intimacy slips easily into a handbag, jeans or toiletry bag, and can be used anywhere, day or night, even on your finest lingerie.\n\n-Top, middle & base notes: White Tea, Vanilla, Thanaka Wood, Tiare Flower and Frangipani Flower.\n-90% naturally derived ingredients according to ISO 16128\n- Alcohol-free, aluminum salt-free, and free of controversial ingredients\n- Gynecologically tested\n- Vegan, no animal-derived ingredients\n- Made in France\n15ml - 0.5 fl ozoz",
  "product_variants_status": true,
  "attributes": [],
  "categories": [
    {
      "id": 1494,
      "created_at": "2024-01-17T06:37:01.000000Z",
      "updated_at": "2024-01-17T06:40:07.000000Z",
      "deleted_at": null,
      "parent_id": 1280,
      "order": 3,
      "active": 1,
      "new": 1,
      "tree": "v3",
      "name": {
        "de": "Körperdüfte",
        "en": "Body fragrance",
        "es": "Fragancias corporales",
        "fr": "Parfums pour le corps",
        "it": "Acqua profumata per il corpo"
      },
      "path": "/shop/beauty-wellness-1279/bath-shower-1280/body-fragrance-1494",
      "pivot": {
        "product_id": 793405,
        "created_at": "2021-10-04T14:35:52.000000Z",
        "updated_at": "2026-07-22T08:25:40.000000Z",
        "category_id": 1494
      }
    }
  ],
  "description_auto_translate": true,
  "description_original_content": "Une brume intime aphrodisiaque, spécifiquement conçue pour mettre les corps en émoi et vous rendre irrésistible et à croquer. Sa formule a été testée sous contrôle gynécologique afin de vous offrir une sensation exquise de bien-être et de fraîcheur, vous enveloppant tout au long de la journée d’une douceur infinie et d’une sensualité inégalée.\n\nFormulée avec des ingrédients d’origine naturelle, sans parabens, sans alcool ni sels d’aluminium, la brume intime YESforLOV respecte l’équilibre de votre peau et la sensibilité de vos précieuses muqueuses. Son parfum chaud, irrésistible et terriblement enivrant deviendra votre nouvelle arme de séduction.\n\nCe parfum pour le corps et l’intimité se glisse aisément dans un sac à main, un jean ou une trousse de toilette, et s’utilise n’importe où, de jour comme de nuit, même sur vos lingeries les plus fines.\n\n- Note de tête, coeur & fond  : Thé Blanc, Vanille, Bois de thanaka, Fleur de Tiaré et fleur de frangipanier.\n- 90% d’ingrédients d’origine naturelle selon la norme ISO 16128\n- Sans alcool, sans sels d’aluminium ni ingrédients controversés\n- Testé sous contrôle gynécologique\n- Vegan, sans ingrédient d'origine animale\n- Fabriqué en France\n15ml - 0,5fl.oz",
  "original_language": "fr",
  "original_language_label": "French",
  "out_of_stock": false,
  "is_new": false,
  "hs_code": null,
  "properties": [
    {
      "key": "dimensions",
      "name": "Dimensions",
      "value": "4.5 x 4.5 x 13.5",
      "original_content": "4,5 x 4,5 x 13,5",
      "auto_translate": true
    },
    {
      "key": "net_weight",
      "name": "Net weight",
      "value": "40g",
      "original_content": "40g",
      "auto_translate": true
    },
    {
      "key": "capacity",
      "name": "Volume",
      "value": "15mL",
      "original_content": "15ml",
      "auto_translate": true
    },
    {
      "key": "cosmetic_inci_list",
      "name": "INCI list",
      "value": "INGREDIENTS: AQUA (WATER), PARFUM (FRAGRANCE), PROPANEDIOL, GLYCERIN, CANANGA ODORATA OIL/EXTRACT, SODIUM BENZOATE, CITRIC ACID, SODIUM HYDROXIDE, ALPHA-ISOMETHYL IONONE, BENZYL BENZOATE, BENZYL SALICYLATE, BETA-CARYOPHYLLENE, CITRONELLOL, GERANIOL, ISOEUGENOL, LINALOOL, TERPINEOL, VANILLIN",
      "original_content": "INGREDIENTS: AQUA (WATER), PARFUM (FRAGRANCE), PROPANEDIOL, GLYCERIN, CANANGA ODORATA OIL/EXTRACT, SODIUM BENZOATE, CITRIC ACID, SODIUM HYDROXIDE, ALPHA-ISOMETHYL IONONE, BENZYL BENZOATE, BENZYL SALICYLATE, BETA-CARYOPHYLLENE, CITRONELLOL, GERANIOL, ISOEUGENOL, LINALOOL, TERPINEOL, VANILLIN",
      "auto_translate": true
    }
  ],
  "tags": [
    "Cruelty free",
    "Vegan"
  ],
  "made_in": {
    "type": "country",
    "id": 76,
    "name": "France",
    "iso_code": "FR",
    "calling_code": "33",
    "opened_to_retailers": true,
    "opened_to_brands": true
  },
  "product_type_id": 7536,
  "requires_category_update": false,
  "options": [
    {
      "id": 1094388,
      "sku": "YFL01B18",
      "unit_multiplier": 3
    }
  ],
  "variants": [
    {
      "id": 2606172,
      "uuid": "1ed4efdc-9588-65a4-af59-a26b0715e809",
      "sku": "YFL01B18",
      "ian": "3700444604143",
      "images": null,
      "created_at": "2022-10-18T15:59:03.000000Z",
      "name": "The summer must-have: Intimate mist with an intoxicating fragrance",
      "unit_multiplier": 3,
      "out_of_stock": false,
      "options": [],
      "price": {
        "currency": "EUR",
        "retail_price": {
          "amount": 2490,
          "currency": "EUR"
        },
        "wholesale_price": {
          "amount": 0,
          "currency": "EUR"
        },
        "original_wholesale_price": {
          "amount": 0,
          "currency": "EUR"
        },
        "discount_rate": 0,
        "discount_type": null
      },
      "stock": {
        "id": 4037694909,
        "is_always_in_stock": true,
        "inventory_policy": "deny",
        "available_quantity": null,
        "status": "in_stock"
      },
      "shape_properties": {
        "id": 2534372,
        "width": null,
        "height": null,
        "length": null,
        "dimensions_unit": null,
        "weight": null,
        "weight_unit": null,
        "capacity": null,
        "capacity_unit": null
      },
      "fulfillable_id": null,
      "is_sellable_as_classic_product": false,
      "estimated_delivery": {
        "min_days": null,
        "max_days": null
      }
    }
  ],
  "has_pending_draft": false,
  "ingestion_status": null,
  "ingestion_started_at": null,
  "ingestion_failures": null,
  "aks_systems": [],
  "shelf_life_days": null,
  "storage_temperature": null,
  "needs_fresh_input": false,
  "is_fresh": false,
  "brand": {
    "type": "brand",
    "id": 10318,
    "uuid": "1ed6b383-0d59-6e00-a84e-567a60de2e1c",
    "accepted_at": "2021-10-04T14:52:38+00:00",
    "active": true,
    "name": "YESforLOV",
    "link": "/brand/yesforlov-10318",
    "instagram_followers": null,
    "instagram_username": "yesforlov_official",
    "properties": {
      "since": 2008
    },
    "coming_soon": false,
    "minimum": {
      "amount": 10000,
      "currency": "EUR"
    },
    "minimum_order_values": [
      {
        "type": "discovery",
        "value": {
          "amount": 10000,
          "currency": "EUR"
        }
      },
      {
        "type": "reorder",
        "value": {
          "amount": 10000,
          "currency": "EUR"
        }
      }
    ],
    "images": {
      "squared": "/brands/squared/10318-47faedb0febd1f.jpg",
      "rounded": "/brands/rounded/10318-47dfcee7228670.jpg",
      "large": "/brands/large/10318-47faedb1051c7f.jpg"
    },
    "tags": [],
    "story": "Exquisitely chic & glamorous\nProud to be made in France\n\nFounded 18 years ago, YESforLOV is the pioneering French brand of intimate well-being for hedonists of love and lovers of pleasure, whether alone or with a partner.  \r\n​All our products are tested under gynecological and dermatological control.  ￼\nVegan and natural, they are designed to help you experience a free and fulfilling sexuality.  \r\n​To support our resellers, both loyal and new:\n\n✅ Free testers\n✅ Single-dose vials available at 0.€50 excl. VAT/unit\n✅ Free POS materials (shelf strip, A5 cards showcasing our different product ranges)\n✅ Packshot visuals, mood boards, videos, and training materials available via a shared drive\n✅ Product training available upon request",
    "story_auto_translate": true,
    "story_original_content": "Terriblement chic & glamour\nFière d’être made in France\n\t\t\t\t\t\t\t\t\t\t\t\t\nCréée il y a maintenant 18ans, YESforLOV est la marque pionnière française du bien-être intime pour les hédonistes de l’amour et les amoureux des plaisirs en solo ou à deux.\n\nTous nos produits sont testés sous contrôle gynécologique et dermatologique.\nVegans et naturels, ils sont conçus pour vous faire vivre une sexualité libre et épanouie.\n\nPour accompagner nos revendeurs, les plus fidèles comme les nouveaux :\n✅ Testeurs offerts\n✅ Monodoses disponibles à 0.50€ HT/ute\n✅ PLV offerte (réglette pour vos étagères, cartes au format A5 de nos différentes gammes)\n✅ Visuels packshots, moods, vidéos et fiches trainings disponibles via un Drive\n✅ Formation produits au besoin",
    "opened_countries": [
      "AT",
      "BE",
      "BG",
      "HR",
      "CY",
      "DK",
      "EE",
      "FI",
      "FR",
      "DE",
      "GR",
      "HU",
      "IE",
      "IT",
      "LV",
      "LT",
      "LU",
      "MT",
      "NL",
      "PL",
      "PT",
      "RO",
      "SK",
      "SI",
      "ES",
      "SE",
      "CH",
      "GB"
    ],
    "original_language": "fr",
    "original_language_label": "French",
    "first_accepted_at": "2021-10-04T14:52:38+00:00",
    "shipping_lead_time_details": {
      "type": "shipping_lead_time",
      "name": "0-2",
      "minimum": 0,
      "maximum": 2
    },
    "estimated_delivery": {
      "min_days": null,
      "max_days": null
    },
    "business_events": [],
    "monthly_follow_up": true,
    "discount": 0,
    "discount_type": "",
    "addresses": {
      "billing": {
        "type": "address",
        "id": 219769,
        "name": "Christian Palix",
        "organisation_name": "YESforLOV",
        "city": "Meythet Annecy",
        "postal_code": "74960",
        "street": "20 rue ambroise croizat",
        "country": {
          "type": "country",
          "id": 76,
          "name": "France",
          "iso_code": "FR",
          "calling_code": "33",
          "opened_to_retailers": true,
          "opened_to_brands": true
        }
      },
      "shipping": {
        "type": "address",
        "id": 1169598,
        "name": "YESforLOV",
        "organisation_name": "YESforLOV",
        "city": "Meythet Annecy",
        "postal_code": "74960",
        "street": "20 rue ambroise croizat",
        "country": {
          "type": "country",
          "id": 76,
          "name": "France",
          "iso_code": "FR",
          "calling_code": "33",
          "opened_to_retailers": true,
          "opened_to_brands": true
        }
      }
    },
    "display_address": {
      "city": "Meythet Annecy",
      "country": "France",
      "region": "Rhône-Alpes",
      "postal_code": "74960"
    },
    "brand_reco_tooltip_ak_seen": false,
    "country": {
      "id": 76,
      "iso_code": "FR",
      "calling_code": "33",
      "opened_to_retailers": true,
      "opened_to_brands": true,
      "display_made_in": true,
      "name": {
        "da": "",
        "de": "Frankreich",
        "en": "France",
        "es": "Francia",
        "fi": "",
        "fr": "France",
        "it": "Francia",
        "nl": "Frankrijk",
        "sv": "Frankrike"
      }
    },
    "is_product_variants_enabled": true,
    "multipage_reorganising_enabled": 1,
    "main_category": {
      "type": "category",
      "id": 1279,
      "full_name": "Beauty & Wellness",
      "name": "Beauty & Wellness",
      "path": "/shop/beauty-wellness-1279"
    },
    "is_catalog_integration_enabled": true,
    "is_catalog_export_enabled": true,
    "catalog_integration_uuid": "1ed779c7-5d3e-6712-b9ab-92f29beee497",
    "enable_fast_payment": false,
    "payment_method_override": null,
    "product_count": 36,
    "has_product_collection": true,
    "brand_tags": [],
    "fulfillment_enabled": false,
    "fulfillment_brand_uuid": null,
    "is_fulfillment_eligible": true,
    "automatic_order_validation_mode": "automatic-brand_control",
    "marketplace_stock_location": "brand",
    "first_preorder_product_available_at": null,
    "holiday_mode": {
      "enabled": false,
      "start_date": null,
      "end_date": null
    },
    "orderpay": {
      "eligible": true
    }
  }
}
```

Each scraped product returns a comprehensive record with 41+ fields:

#### Product Identification & Links

| Field | Meaning |
|---|---|
| `Type` | Product classification (e.g., physical good, digital item) |
| `ID` | Unique internal Ankorstore product identifier |
| `UUID` | Globally unique identifier for the product |
| `Position` | Display position in the product catalog or listing |
| `Link` | Canonical URL to the product page |
| `Brand` | Brand name or supplier name associated with the product |

#### Dates & Lifecycle

| Field | Meaning |
|---|---|
| `Created At` | Timestamp when the product was added to Ankorstore |
| `Ingestion Started At` | When the product data was last ingested/indexed |
| `Has Pending Draft` | Whether the product has unsaved changes pending review |

#### Pricing & Commercial

| Field | Meaning |
|---|---|
| `Retail Price` | Suggested retail price for end consumers |
| `Wholesale Price` | Base B2B wholesale price per unit |
| `Original Wholesale Price` | Previous/historical wholesale price |
| `Discount Rate` | Percentage discount applied (e.g., 10 for 10%) |
| `Discount Type` | Nature of discount (e.g., bulk, seasonal, loyalty) |
| `Is Discount Editable` | Whether the buying user can modify the discount |
| `Discount Event Price` | Temporary price during promotional events |
| `Unit Multiplier` | Minimum order quantity or bulk multiplier |

#### Inventory & Availability

| Field | Meaning |
|---|---|
| `Out Of Stock` | Boolean flag indicating zero available inventory |
| `Is New` | Whether the product was recently added to Ankorstore |
| `Shelf Life Days` | Expiration or recommended consumption time in days |
| `Storage Temperature` | Optimal storage conditions (e.g., room temperature, refrigerated) |
| `Needs Fresh Input` | Flag indicating missing or stale data requiring update |
| `Is Fresh` | Whether the product is fresh/perishable |

#### Product Details & Content

| Field | Meaning |
|---|---|
| `Name` | Current product name (potentially translated) |
| `Original Name` | Product name in the original language from supplier |
| `Description` | Full product description in the display language |
| `Description Original Content` | Description as provided by the brand/supplier |
| `Description Auto Translate` | Whether the description was auto-translated |
| `Original Language` | ISO language code of the supplier's original content |
| `Original Language Label` | Human-readable language name (e.g., "French") |
| `Images` | Array of product image URLs (thumbnails, full-size) |

#### Classification & Attributes

| Field | Meaning |
|---|---|
| `Categories` | Product category tags (e.g., Beauty, Skincare, Fragrances) |
| `Tags` | User-defined or auto-generated keyword tags |
| `Attributes` | Structured product attributes (e.g., size, color, scent) |
| `Properties` | Extended metadata (e.g., ingredients, certifications) |
| `HS Code` | Harmonized System code for customs/trade classification |
| `Made In` | Country of origin or manufacture |
| `Product Type ID` | Internal Ankorstore product type classification |

#### Variants & Options

| Field | Meaning |
|---|---|
| `Product Variants Status` | State of product variant management (active, disabled) |
| `Variants` | Array of available product variants (SKUs, sizes, colors) |
| `Options` | Customizable options buyers can select (e.g., personalization) |

#### Data Quality & Processing

| Field | Meaning |
|---|---|
| `Requires Category Update` | Flag if the product category needs review or correction |
| `Ingestion Status` | Current status of data ingestion (e.g., success, pending, failed) |
| `Ingestion Failures` | Count or log of failed ingestion attempts |
| `AKS Systems` | Internal Ankorstore knowledge system metadata |

***

### How to Use

1. **Identify product URLs** — Browse Ankorstore.com, open a product detail page, and copy the full URL from your browser's address bar.
2. **Prepare input** — Add URLs to the `urls` array. You can include one or dozens.
3. **Set parameters** — Leave `max_items_per_url` at 200 (covers all variants) and `ignore_url_failures: true` for robustness.
4. **Run the scraper** — Start the actor via the UI or API. Monitor the run log for status.
5. **Download results** — Export as JSON, CSV, or Excel. Join with other datasets as needed.

**Handling common issues:**

- If a product returns partial data, check that the URL is a live product page (not archived).
- Multi-variant products may return multiple records — this is expected.
- Language fields help identify original vs. translated content; use `Description Original Content` for consistency in international operations.

***

### Use Cases & Business Value

- **Procurement optimization** — Compare wholesale pricing across suppliers for the same product category
- **Competitive intelligence** — Monitor competitor product availability, pricing tiers, and discount strategies
- **Catalog enrichment** — Bulk-import Ankorstore product data into your own retail or wholesale platform
- **Market research** — Analyze trends in European B2B retail (growth of SKUs, price movements, new brands)
- **Inventory planning** — Track stock status and shelf life for perishable items in real time

By automating data extraction, teams eliminate manual work and gain fresh, structured market data to fuel strategy and operations.

***

### Conclusion

The **Ankorstore Product Details Scraper** is a powerful tool for anyone managing B2B procurement, retail operations, or market intelligence. With 41 fields capturing pricing, variants, stock, and multilingual content, it delivers the depth and accuracy wholesale operations demand. Start scraping today and transform raw Ankorstore listings into actionable business intelligence.

# Actor input Schema

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

Add the URLs of the Specific product 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.

## Actor input object example

```json
{
  "urls": [
    "https://www.ankorstore.com/brand/yesforlov-10318/le-must-have-de-lete-brume-intime-au-parfum-enivrant-793405",
    "https://www.ankorstore.com/brand/au-poil-30991/le-gel-lavant-100ml-corps-cheveux-et-barbe-3121977",
    "https://www.ankorstore.com/brand/wild-child-bougies-co-26854/sel-de-bain-bergamote-petit-grain-3941721",
    "https://www.ankorstore.com/brand/proposnature-16700/gel-lavant-bio-tres-doux-corps-cheveux-1l-1740759",
    "https://www.ankorstore.com/brand/aromawest-european-wholesale-distributor-55349/yara-mini-collection-by-lattafa-edp-4x5ml-gift-set-6765049"
  ],
  "ignore_url_failures": true
}
```

# 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/brand/yesforlov-10318/le-must-have-de-lete-brume-intime-au-parfum-enivrant-793405",
        "https://www.ankorstore.com/brand/au-poil-30991/le-gel-lavant-100ml-corps-cheveux-et-barbe-3121977",
        "https://www.ankorstore.com/brand/wild-child-bougies-co-26854/sel-de-bain-bergamote-petit-grain-3941721",
        "https://www.ankorstore.com/brand/proposnature-16700/gel-lavant-bio-tres-doux-corps-cheveux-1l-1740759",
        "https://www.ankorstore.com/brand/aromawest-european-wholesale-distributor-55349/yara-mini-collection-by-lattafa-edp-4x5ml-gift-set-6765049"
    ],
    "ignore_url_failures": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("soft_alexist/ankorstore-product-details-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/brand/yesforlov-10318/le-must-have-de-lete-brume-intime-au-parfum-enivrant-793405",
        "https://www.ankorstore.com/brand/au-poil-30991/le-gel-lavant-100ml-corps-cheveux-et-barbe-3121977",
        "https://www.ankorstore.com/brand/wild-child-bougies-co-26854/sel-de-bain-bergamote-petit-grain-3941721",
        "https://www.ankorstore.com/brand/proposnature-16700/gel-lavant-bio-tres-doux-corps-cheveux-1l-1740759",
        "https://www.ankorstore.com/brand/aromawest-european-wholesale-distributor-55349/yara-mini-collection-by-lattafa-edp-4x5ml-gift-set-6765049",
    ],
    "ignore_url_failures": True,
}

# Run the Actor and wait for it to finish
run = client.actor("soft_alexist/ankorstore-product-details-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/brand/yesforlov-10318/le-must-have-de-lete-brume-intime-au-parfum-enivrant-793405",
    "https://www.ankorstore.com/brand/au-poil-30991/le-gel-lavant-100ml-corps-cheveux-et-barbe-3121977",
    "https://www.ankorstore.com/brand/wild-child-bougies-co-26854/sel-de-bain-bergamote-petit-grain-3941721",
    "https://www.ankorstore.com/brand/proposnature-16700/gel-lavant-bio-tres-doux-corps-cheveux-1l-1740759",
    "https://www.ankorstore.com/brand/aromawest-european-wholesale-distributor-55349/yara-mini-collection-by-lattafa-edp-4x5ml-gift-set-6765049"
  ],
  "ignore_url_failures": true
}' |
apify call soft_alexist/ankorstore-product-details-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-details-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/syxAapbN2TMG5jJls/builds/EbXVUqWrobV9SgI3k/openapi.json
