We extract shade matrices, ingredient profiles, pricing, and stock status from NARS Cosmetics. Delivered as clean JSON, CSV, or Parquet to S3, BigQuery, or Snowflake on your cadence.
Structured, schema-consistent data across all major object types — delivered clean, typed, and ready to query.
Complete list of extractable fields for Product Listings objects from narsissist.com. All fields typed and schema-versioned.
"sku": "0194251000000", "name": "Light Reflecting Foundation", "category": "Makeup", "sub_category": "Face > Foundation", "price": 52.0, "currency": "USD", "rating": 4.6, "review_count": 3412
| # | sku | name | category | sub_category | price | currency |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Shade Variations objects from narsissist.com. All fields typed and schema-versioned.
"parent_sku": "0194251000000", "variant_sku": "0194251000017", "shade_name": "Mont Blanc", "shade_description": "Light with neutral undertones", "hex_code": "#F4D9C8", "in_stock": true, "price": 52.0
| # | parent_sku | variant_sku | shade_name | shade_description | hex_code | image_url |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Pricing & Stock objects from narsissist.com. All fields typed and schema-versioned.
"sku": "0194251000017", "base_price": 52.0, "discount_price": "None", "auto_replenish_price": 46.8, "stock_status": "IN_STOCK", "low_stock_warning": false, "limited_edition": false, "scraped_at": "2023-10-24T08:12:00Z"
| # | sku | base_price | discount_price | auto_replenish_price | stock_status | low_stock_warning |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Reviews objects from narsissist.com. All fields typed and schema-versioned.
"review_id": "REV_948123", "sku": "0194251000017", "rating": 5, "title": "Perfect match", "skin_type": "Combination", "skin_tone": "Light", "age_range": "25-34", "verified_buyer": true
| # | review_id | sku | author | rating | title | body |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Ingredients & Claims objects from narsissist.com. All fields typed and schema-versioned.
"sku": "0194251000000", "primary_ingredients": "['Biomimetic Oat', 'Japanese Lilyturf', 'Cacao Peptides']", "free_from_claims": "['Parabens', 'Mineral Oil', 'Silicone']", "finish_type": "Natural", "coverage_level": "Medium, Buildable", "skin_type_suitability": "['All Skin Types']"
| # | sku | primary_ingredients | full_ingredient_list | free_from_claims | benefits | finish_type |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Our narsissist.com pipeline handles the complexities of beauty retail data: parent-child shade matrices, dynamic inventory states, ingredient lists, and auto-replenish pricing models.
Extract products, collections, and limited edition drops across all makeup and skincare categories.
Capture parent-child relationships for complex shade ranges, including hex codes, undertone descriptions, and variant SKUs.
Monitor out-of-stock statuses and low-stock warnings across regional NARS storefronts.
Extract full INCI ingredient lists, active ingredient highlights, and clean beauty claims.
Capture base prices, promotional discounts, and subscription pricing tiers for recurring orders.
Extract review text, star ratings, and user attributes like skin tone, skin type, and age range.
Capture URLs for product imagery, swatches, and Virtual Try-On reference models.
Execute SPA state to extract dynamically loaded shade pickers and regional pricing widgets.
Hash-based diffing ensures we only emit records when stock, price, or formulation data changes.
Brief in. Clean data out.
Provide categories, SKUs, or specific product lines. We design the extraction schema together.
We configure Scrapy and Playwright crawlers, proxy rotation, and session management for narsissist.com.
Schema validation, null-rate checks, and shade mapping verification before full launch.
JSON, CSV, or Parquet pushed to your S3 bucket, BigQuery dataset, or Snowflake stage on agreed cadence.
Beauty retail sites rely on heavy JavaScript for shade selection and regional pricing. Here is how we maintain data accuracy.
NARS uses complex JavaScript for shade selection. We run full Playwright sessions to hydrate the DOM and extract every variant SKU, hex code, and stock state.
Prices and stock vary by region. Our residential proxy pools allow extraction from specific locales to capture accurate local data for global market analysis.
We bypass rate limits and fingerprinting using residential IPs, realistic browser headers, and randomised request intervals.
DOM structures for beauty sites change during promotional periods. We use multi-layer selectors to maintain extraction integrity when site layouts shift.
Track fast-moving inventory during product drops by only pushing diffs for stock and price changes, reducing your processing load.
Beauty brands track pricing, promotional discounts, and subscription models against their own product lines.
Retail analysts monitor shade availability and out-of-stock rates to optimise their own inventory distribution.
Identify popular shades, formulations, and limited edition drops to inform product development.
Map chemical compositions and clean beauty claims across the catalogue for formulation research.
Correlate skin types and age ranges with product satisfaction to improve marketing targeting.
Monitor grey market sellers by comparing their listings against the official narsissist.com catalogue data.
"Cosmetics data is highly dimensional. A single foundation might have 40 shades, each with unique stock states, pricing, and undertone metadata."
Extracting beauty catalogues requires handling complex parent-child variant structures and dynamically rendered shade pickers. DataFlirt manages the JavaScript execution and proxy rotation required to maintain accurate, daily snapshots of narsissist.com inventory, so your team can focus on analysis.
Everything supported by our narsissist.com scraper — rendered SPA elements, auth walls, rate-limit evasion and beyond.
Open-source tooling on proven cloud infra — no vendor lock-in, full observability.
Scrapy handles crawl orchestration and retry logic. Playwright handles JavaScript rendering, cookie sessions, and interaction flows for shade pickers.
We maintain pools of residential ISP proxies. Rotation happens per-request with sticky sessions where required for regional pricing accuracy.
Pipelines run on AWS Lambda and Kubernetes. Airflow handles scheduling and dependency management. All state is stored in managed Postgres.
Data delivered to where your team already works — no new tooling required.
About narsissist.com scraping, legality, and pipeline operations.
Ask us directly →Scraping publicly available information from retail sites is generally permissible. DataFlirt targets only public, non-authenticated product, pricing, and review data. We do not extract personal data or circumvent authentication walls.
We use Playwright to render the JavaScript shade picker, iterating through every available variant to capture its specific SKU, hex code, description, and stock status.
Yes. For high-priority releases, we configure high-frequency polling pipelines to capture inventory changes and out-of-stock events as they happen.
Yes, we capture the full INCI ingredient list, primary active ingredients, and any associated clean beauty or free-from claims.
Standard pipelines refresh daily. For specific tracking requirements, we can configure hourly runs on targeted SKU lists.
Yes. We provide a sample run of up to 100 SKUs as part of the pre-engagement scoping process so you can validate the schema and shade mapping logic.
20-minute scoping call. Pilot dataset within the week. Production within two. Whether you need a one-off catalogue dump or continuous stock monitoring across the entire NARS range, we build and operate the pipeline. Tell us what you need.