We extract product listings, fabric variants, campaign pricing, and regional store stock from mio.se. 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 Furniture Listings objects from mio.se. All fields typed and schema-versioned.
"product_id": "80912", "title": "Sunday Sofa", "category": "Sofas", "base_price": 14995.0, "current_price": 12995.0, "currency": "SEK", "assembly_required": true
| # | product_id | title | category | sub_category | base_price | current_price |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Variants & Materials objects from mio.se. All fields typed and schema-versioned.
"variant_id": "80912-A", "colour": "Beige", "material": "Velvet", "fabric_name": "Cortina", "price_modifier": 0.0, "stock_status": "In Stock"
| # | variant_id | parent_id | colour | material | fabric_name | leg_style |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Store Inventory objects from mio.se. All fields typed and schema-versioned.
"store_id": "MIO-STHLM", "store_name": "Mio Stockholm Sveavägen", "city": "Stockholm", "stock_quantity": 4, "display_item_available": true, "click_and_collect_time": "2 hours"
| # | store_id | store_name | city | product_id | variant_id | stock_quantity |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Campaigns & Pricing objects from mio.se. All fields typed and schema-versioned.
"product_id": "80912", "campaign_name": "Autumn Sale", "discount_pct": 15, "discount_abs": 2000.0, "member_price_only": false, "start_date": "2023-09-01"
| # | product_id | campaign_name | discount_pct | discount_abs | start_date | end_date |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Dimensions & Specs objects from mio.se. All fields typed and schema-versioned.
"product_id": "80912", "width_cm": 210, "height_cm": 85, "depth_cm": 95, "seat_height_cm": 45, "seat_depth_cm": 60
| # | product_id | width_cm | height_cm | depth_cm | seat_height_cm | seat_depth_cm |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Our mio.se pipeline maps the complete product taxonomy, resolving complex fabric matrices, regional store stock availability, and dynamic campaign pricing.
Extract sofas, beds, dining tables, and decor with full metadata including designer names and care instructions.
Map parent models to hundreds of fabric and colour combinations, capturing specific price modifiers for each.
Query regional stock APIs for over 70 Swedish stores to determine local availability and display item status.
Track base prices versus active campaign prices, calculating exact discount percentages and validity dates.
Extract exact width, height, depth, and seating dimensions normalised into standard metric units.
Capture dynamic lead times based on variant selection and regional warehouse proximity.
Extract direct PDF URLs for assembly guides and technical material specifications.
Capture Swedish customer reviews, star ratings, and verified purchase flags.
Extract high resolution image URLs for every specific fabric and leg style variant.
Preserve Mio's exact taxonomy from top level departments down to specific subcategories.
Brief in. Clean data out.
Provide category URLs, specific product IDs, or store locations. We design the extraction schema together.
We configure Playwright crawlers to handle JavaScript rendering, variant hydration, and local store API queries.
Schema validation, null-rate checks, and variant mapping verification before full launch.
JSON, CSV, or Parquet pushed to your S3 bucket, BigQuery dataset, or Snowflake stage on agreed cadence.
Extracting furniture data requires more than simple HTML parsing. Here is how we handle complex matrices and regional APIs.
Mio uses localized stock queries requiring specific HTTP headers and session tokens. We map these endpoints to extract exact stock counts across 70+ retail locations.
A single sofa model can spawn hundreds of SKUs depending on fabric, colour, and leg choices. We traverse the entire configuration matrix to build a relational dataset of all possible variants.
We handle UTF-8 encoding for Swedish characters (å, ä, ö) ensuring downstream databases receive clean, properly formatted text without encoding artifacts.
Campaign prices load via JavaScript rather than static HTML. We use full Playwright sessions to render the DOM and capture the final calculated price presented to the user.
Furniture catalogues change slowly, but stock and campaigns change daily. We use hash based diffing to only emit records when price or stock values shift.
Retailers track Mio's campaign cycles and base pricing to adjust their own promotional calendars.
Merchandisers analyse fabric trends, colour availability, and category depth to inform purchasing decisions.
Logistics teams monitor lead times and stock availability across regional stores to identify supply chain bottlenecks.
Analysts track review velocity and rating trends to evaluate brand perception and product durability.
Platforms ingest dimensional data and high resolution images to populate 3D room planning software.
Real estate and retail analysts track stock depth per store to estimate regional sales velocity.
"Mio.se holds the definitive catalogue for Swedish home furnishings, but extracting the multidimensional matrix of fabrics, store stock, and campaigns requires specialised infrastructure."
Most teams fail at the variant level. A single sofa model on mio.se can spawn hundreds of SKUs depending on fabric, colour, and leg choices. DataFlirt maps this entire matrix, hydrating prices and stock levels across 70 local stores, delivering clean relational data.
Everything supported by our mio.se 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 deduplication. Playwright handles JavaScript rendering, variant hydration, and interaction flows.
We maintain pools of residential ISP proxies across European regions to ensure consistent access to regional APIs without rate limiting.
Pipelines run on AWS Lambda and ECS. Airflow handles scheduling, dependency management, and SLA alerting.
Data delivered to where your team already works — no new tooling required.
About mio.se scraping, legality, and pipeline operations.
Ask us directly →Scraping publicly available information from mio.se is generally permissible under applicable law. DataFlirt targets only public, non-authenticated product, pricing, and store data. We do not extract personal data or circumvent authentication walls.
Yes. We map the internal store IDs and query the regional stock APIs to extract exact inventory counts and display item availability for any specific Mio location.
We build a configuration matrix during the crawl phase, iterating through every available fabric, leg style, and colour combination to generate a distinct record for each SKU.
By default, we extract data in its native Swedish to preserve accuracy. We ensure proper UTF-8 encoding. Translation steps can be added to the pipeline via external APIs upon request.
Campaigns and pricing can be refreshed daily or weekly depending on your requirements. We use change detection to only deliver records where pricing has shifted.
Yes. We capture the direct PDF URLs for assembly manuals, technical specifications, and care instructions associated with each product.
20-minute scoping call. Pilot dataset within the week. Production within two. Whether you need a one-off catalogue dump or a continuous price monitoring feed across thousands of furniture variants, we scope, build, and operate the pipeline. Tell us what you need.