{
  "name": "Basketwise Cape Town",
  "checkedAt": "2026-10-25",
  "currency": "ZAR",
  "scope": "Cape Town City Bowl, Atlantic Seaboard, Southern and Northern Suburbs plus advertised wider collection routes; selected operators, not an exhaustive directory.",
  "method": "Operator-owned public sources checked 25 October 2026; three research exports merged, WashLab deduplicated. Unknown and conflicting terms are retained; no outreach, accounts, bookings or live quotations.",
  "providers": [
    {
      "id": "i-love-my-laundry",
      "name": "I Love My Laundry",
      "website": "https://ilovemylaundry.com/",
      "suburb": "Cape Town CBD / Green Point",
      "area": "City Bowl and Atlantic Seaboard",
      "phone": "+27 64 774 7655",
      "email": null,
      "dropoffAvailable": true,
      "services": [
        {
          "id": "wash-fold",
          "label": "Standard wash, dry & fold",
          "model": "per-kg",
          "rate": 34,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": 5,
          "minAcceptedKg": null,
          "minSpend": 170,
          "mode": "both",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Colour separation under 8 kg is charged as two minimum loads (R340)."
          ],
          "sourceIds": [
            "ilml-home"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Bulk wash, dry & iron",
          "model": "quote",
          "rate": null,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "both",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": false,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Only per-item ironing / wash-and-iron prices were found; do not create a bulk kg ironing rate."
          ],
          "sourceIds": [
            "ilml-home"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "unknown",
        "fee": null,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [
          "City Bowl",
          "Sea Point",
          "Green Point",
          "Camps Bay",
          "Observatory",
          "Woodstock"
        ],
        "restrictedAreas": false,
        "notes": [
          "Location-priced; normal amount unpublished in inspected text.",
          "Thursday Early Bird advertises free pickup and return: book Wednesday by 15:00, ready Thursday 07:00; limited slots, confirm route. Not a general free-delivery rule.",
          "Morning drop-off is mentioned without an exact standard cutoff."
        ],
        "cutoff": null,
        "turnaround": "Typically same day for standard loads dropped off in the morning. 3-4 hours at selected branches; price list says four hours maximum."
      },
      "vat": "unknown",
      "hours": "MondayFriday: 08:00-17:00; Saturday: 08:00-17:00; Sunday: Closed; publicHolidays: 09:00-13:00",
      "rateDate": null,
      "notes": [
        "Express wash/dry/fold is separately advertised at R68/kg; express minimum and exact booking terms are not established.",
        "Do not infer free normal delivery from a separate promotional image caption; main pricing and FAQ say location-priced.",
        "Fabric softener is listed separately at R18/load."
      ],
      "sources": [
        {
          "id": "ilml-home",
          "url": "https://ilovemylaundry.com/",
          "checkedAt": "2026-10-25",
          "title": "0-5kg charged at R170",
          "accessNote": null
        },
        {
          "id": "ilml-terms",
          "url": "https://ilovemylaundry.com/terms-conditions/",
          "checkedAt": "2026-10-25",
          "title": "Drivers will leave after 10 minutes",
          "accessNote": null
        }
      ]
    },
    {
      "id": "drs-laundry",
      "name": "DRS Laundry",
      "website": "https://www.drslaundry.co.za/",
      "suburb": "Kenilworth",
      "area": "Southern Suburbs; Cape Town collection service",
      "phone": "+27 61 271 4144",
      "email": "jasveer@drslaundry.co.za",
      "dropoffAvailable": false,
      "services": [
        {
          "id": "wash-fold",
          "label": "Wash, dry & fold",
          "model": "per-kg",
          "rate": 50,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": 8,
          "minAcceptedKg": null,
          "minSpend": 400,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [],
          "sourceIds": [
            "drs-prices",
            "drs-terms"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Wash, dry & iron",
          "model": "per-kg",
          "rate": 80,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": 8,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Terms say the minimum charge is 8 kg for each service; the ironing price page does not separately publish its minimum rand total."
          ],
          "sourceIds": [
            "drs-prices",
            "drs-terms"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "roundtrip",
        "fee": 100,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [
          "Cape Town"
        ],
        "restrictedAreas": false,
        "notes": [
          "Advertised as pickup and delivery across Cape Town; a combined service charge, with no per-leg split stated."
        ],
        "cutoff": null,
        "turnaround": "Price page advertises WDF within 24 hours; terms allow 24-48 hours from pickup and possible delays. 48 hours on price page."
      },
      "vat": "unknown",
      "hours": "MondayFriday: 08:00-19:00; Saturday: 08:00-19:00; Sunday: 08:00-19:00",
      "rateDate": null,
      "notes": [
        "Terms describe a virtual laundromat using laundry and courier partners.",
        "Final facility weight determines the charge; fractional precision is unstated.",
        "Minimum service charge is not proof that an under-8 kg load is accepted.",
        "Terms last updated 2026-02-13; this is not a tariff-effective date."
      ],
      "sources": [
        {
          "id": "drs-prices",
          "url": "https://www.drslaundry.co.za/laundry-service-prices",
          "checkedAt": "2026-10-25",
          "title": "Pickup and delivery across Cape Town - R100.",
          "accessNote": null
        },
        {
          "id": "drs-terms",
          "url": "https://www.drslaundry.co.za/terms",
          "checkedAt": "2026-10-25",
          "title": "a minimum charge of 8 KG for each service",
          "accessNote": null
        }
      ]
    },
    {
      "id": "supa-clean",
      "name": "Supa Clean Laundry Services",
      "website": "https://supacleanlaundry.co.za/",
      "suburb": "Sea Point",
      "area": "Atlantic Seaboard; greater Cape Town advertised",
      "phone": "+27 83 335 9567",
      "email": "lauren@supacleanlaundry.co.za",
      "dropoffAvailable": true,
      "services": [
        {
          "id": "wash-fold",
          "label": "Drop & collect, no colour split",
          "model": "package",
          "rate": null,
          "baseKg": 5,
          "basePrice": 160,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "dropoff",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [],
          "sourceIds": [
            "sc-prices"
          ]
        },
        {
          "id": "wash-fold",
          "label": "Collection & delivery, no colour split",
          "model": "blocks",
          "rate": null,
          "baseKg": 5,
          "basePrice": 240,
          "extraRate": null,
          "extraBlockKg": 5,
          "extraBlockPrice": 160,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [],
          "sourceIds": [
            "sc-prices"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Bulk wash, dry & iron",
          "model": "quote",
          "rate": null,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "dropoff",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": false,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "No combined kg tariff found; drop-and-collect ironing is per item (clothing R20, pillowcase R15, linen R30)."
          ],
          "sourceIds": [
            "sc-prices"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "included",
        "fee": null,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [
          "Atlantic Seaboard",
          "greater Cape Town"
        ],
        "restrictedAreas": false,
        "notes": [
          "The collection-and-delivery laundry bundle is R240 for five kg; do not add an invented separate delivery fee.",
          "Included delivery applies only to the separately labelled pickup service, not the drop-off option."
        ],
        "cutoff": null,
        "turnaround": null
      },
      "vat": "unknown",
      "hours": "MondayFriday: 08:00-18:00; Saturday: 08:00-18:00; Sunday: 08:00-17:00",
      "rateDate": "2025-11-01",
      "notes": [
        "The dated 2025 price list remains linked by the operator's resident-services page when checked.",
        "Five-kg blocks are published, but acceptance below five kg and partial-block rounding are not explained.",
        "Customer reviews are not used as turnaround policy."
      ],
      "sources": [
        {
          "id": "sc-prices",
          "url": "https://supacleanlaundry.co.za/wp-content/uploads/2025/10/Supa-Clean-Prices-from-01-November-2025.pdf",
          "checkedAt": "2026-10-25",
          "title": "Resident Services Prices from 01 November 2025",
          "accessNote": null
        },
        {
          "id": "sc-resident",
          "url": "https://supacleanlaundry.co.za/resident-services/",
          "checkedAt": "2026-10-25",
          "title": "Price List",
          "accessNote": null
        },
        {
          "id": "sc-contact",
          "url": "https://supacleanlaundry.co.za/contact-us/",
          "checkedAt": "2026-10-25",
          "title": "Monday - Saturday: 08:00 - 18:00",
          "accessNote": null
        },
        {
          "id": "sc-home",
          "url": "https://supacleanlaundry.co.za/",
          "checkedAt": "2026-10-25",
          "title": "Atlantic Sea board and greater Cape Town areas",
          "accessNote": "Primary indexed text used after direct homepage timeout."
        }
      ]
    },
    {
      "id": "wosh",
      "name": "Wosh",
      "website": "https://wosh.co.za/",
      "suburb": "Newlands / Cape Town CBD / Sea Point",
      "area": "Southern Suburbs, City Bowl and Atlantic Seaboard",
      "phone": "+27 21 425 6775",
      "email": "online@wosh.co.za",
      "dropoffAvailable": true,
      "services": [
        {
          "id": "wash-fold",
          "label": "Wash, dry & fold: conflicting primary tariffs",
          "model": "quote",
          "rate": null,
          "baseKg": 5,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "both",
          "priceConflict": true,
          "fromPrice": false,
          "exactService": false,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Conflicting operator schedules: R250 for 5 kg then R50 per extra kg versus R275 for 5 kg. Confirm which applies."
          ],
          "sourceIds": [
            "w-product-fold",
            "w-pricing",
            "w-order"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Wash, dry, iron & fold: conflicting primary tariffs",
          "model": "quote",
          "rate": null,
          "baseKg": 5,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "both",
          "priceConflict": true,
          "fromPrice": false,
          "exactService": false,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Conflicting operator schedules: R390 for 5 kg then R78 per extra kg versus R420 for 5 kg. Confirm which applies."
          ],
          "sourceIds": [
            "w-product-iron",
            "w-pricing",
            "w-order"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "included",
        "fee": null,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [
          "Within 10 kilometres of selected store"
        ],
        "restrictedAreas": true,
        "notes": [
          "Online laundry prices include collection and delivery; walk-in prices may differ.",
          "Pickup point must be within 10 km of selected store; road vs straight-line method unstated."
        ],
        "cutoff": null,
        "turnaround": "Order page says Saturday orders are delivered late Monday or early Tuesday."
      },
      "vat": "unknown",
      "hours": "MondayFriday: 08:00-17:00 office hours for listed branches; Sunday: Closed; publicHolidays: Closed",
      "rateDate": null,
      "notes": [
        "Driver weighs basket; product pages charge excess above five kg, so rounding all loads to complete five-kg baskets is unsupported.",
        "No fractional-kg rounding rule found.",
        "Do not infer collection eligibility from suburb alone; the selected-store distance condition applies.",
        "Separate pricing page gives R275/R420 per five kg. Product pages and order catalogue give R250/R390. Dates do not establish which is current; a single current base charge is left null.",
        "Product pages say loads are not colour separated and customers should separate beforehand; FAQ says wash items are separated by colour. Confirm treatment and whether separate baskets are charged."
      ],
      "sources": [
        {
          "id": "w-pricing",
          "url": "https://wosh.co.za/laundry-dry-cleaning-services-in-cape-town-pricing/",
          "checkedAt": "2026-10-25",
          "title": "1 basket = 5kg's",
          "accessNote": null
        },
        {
          "id": "w-product-fold",
          "url": "https://wosh.co.za/product/wash-dry-fold/",
          "checkedAt": "2026-10-25",
          "title": "For every kg over 5kg’s, there will be a R50 charge",
          "accessNote": null
        },
        {
          "id": "w-product-iron",
          "url": "https://wosh.co.za/product/wash-dry-iron-fold-per-5kg-basket/",
          "checkedAt": "2026-10-25",
          "title": "For every kg over 5kg’s, there will be a R78 charge",
          "accessNote": null
        },
        {
          "id": "w-order",
          "url": "https://wosh.co.za/wosh-laundry-dry-cleaning-services-in-cape-town-order/",
          "checkedAt": "2026-10-25",
          "title": "All orders received on a Saturday",
          "accessNote": null
        },
        {
          "id": "w-contact",
          "url": "https://wosh.co.za/contact/",
          "checkedAt": "2026-10-25",
          "title": "Mon - Fri 8:00am - 5:00pm",
          "accessNote": null
        },
        {
          "id": "w-faq",
          "url": "https://wosh.co.za/faq/",
          "checkedAt": "2026-10-25",
          "title": "We wash the items by colour (whites and darks).",
          "accessNote": null
        }
      ]
    },
    {
      "id": "washlab",
      "name": "WashLab",
      "website": "https://wash-lab.co.za/",
      "suburb": "Milnerton Rural / northern coastal service area",
      "area": "Cape Town Northern Suburbs / northern coastal service area",
      "phone": "063 589 1219",
      "email": "info@wash-lab.co.za",
      "dropoffAvailable": null,
      "services": [
        {
          "id": "wash-fold",
          "label": "Wash, Dry & Fold",
          "model": "package",
          "rate": null,
          "baseKg": 5,
          "basePrice": 275,
          "extraRate": 55,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": 5,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": true,
          "fromPrice": true,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Booking portal figures; main-site prices differ. Confirm applicable schedule.",
            "Terms say five-kilogram minimum is charged, with excess based on actual weighed amount. Do not interpret as rejection of all smaller bags.",
            "Optional requested colour separation is advertised at R50; exact unit requires confirmation."
          ],
          "sourceIds": [
            "washlab-source-1",
            "washlab-source-2"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Wash, Dry, Iron & Fold",
          "model": "package",
          "rate": null,
          "baseKg": 5,
          "basePrice": 350,
          "extraRate": 67,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": 5,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": true,
          "fromPrice": true,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Service card specifies R67/kg excess; generic booking FAQ says R55/kg. Excess rate requires confirmation.",
            "Main-site pricing page has different basket and excess rates.",
            "Optional requested colour separation is advertised at R50; exact unit requires confirmation."
          ],
          "sourceIds": [
            "washlab-source-1"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "included",
        "fee": null,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [
          "Milnerton",
          "Milnerton Ridge",
          "Century City",
          "Blouberg",
          "Bloubergstrand",
          "Melkbos",
          "Woodbridge Island",
          "Lagoon Beach",
          "Cape Farms",
          "Sandown",
          "Sunset Beach",
          "Dolphin Beach",
          "Table View",
          "Flamingo Vlei",
          "West Beach",
          "Sunningdale",
          "Big Bay",
          "Durbanville",
          "Atlantic Seaboard",
          "V&A Waterfront",
          "Green Point",
          "Sea Point",
          "Fresnaye",
          "Mouille Point",
          "Three Anchor Bay"
        ],
        "restrictedAreas": false,
        "notes": [],
        "cutoff": null,
        "turnaround": "Default 24 hours from collection; not guaranteed."
      },
      "vat": "included",
      "hours": null,
      "rateDate": null,
      "notes": [
        "Merged the south and north research records for the same WashLab operator.",
        "Booking portal has R275/R350 five-kg bases; indexed main-site regular schedule has R310/R420 and promotional R210/R320. Promotion expired 2026-09-30. South opened main page also showed R275/R350. Current applicability unresolved.",
        "Service-specific ironing overage R67/kg conflicts with generic FAQ R55/kg and indexed main-site R65/kg.",
        "Applicable taxes are stated included in terms; VAT registration was not independently verified.",
        "Published facility: Sandown Square Business Park, Milnerton Rural, Cape Town, 7441. Drop-off acceptance is not verified.",
        "No booking selections, form submission or payment performed.",
        "Do not advertise expired reduced prices as current; current exact quote unresolved.",
        "Other published phone: 063 784 1282 (Terms, updated 14 August 2026; differs from portal)."
      ],
      "sources": [
        {
          "id": "washlab-source-1",
          "url": "https://booking.wash-lab.co.za/",
          "checkedAt": "2026-10-25",
          "title": "Booking schedule, included transport, service-area list, separation charge and earliest delivery.",
          "accessNote": "direct_public_page"
        },
        {
          "id": "washlab-source-2",
          "url": "https://booking.wash-lab.co.za/policies/terms-of-service",
          "checkedAt": "2026-10-25",
          "title": "Charged minimum, excess weighing, address, default turnaround and applicable-tax inclusion.",
          "accessNote": null
        },
        {
          "id": "washlab-source-3",
          "url": "https://wash-lab.co.za/pricing/",
          "checkedAt": "2026-10-25",
          "title": "Conflicting main-site price schedule.",
          "accessNote": "operator_page_search_index; direct_fetch_timed_out"
        },
        {
          "id": "washlab-source-4",
          "url": "https://wash-lab.co.za/",
          "checkedAt": "2026-10-25",
          "title": "Contact and promotion expiry.",
          "accessNote": "operator_page_search_index; direct_fetch_rate_limited"
        },
        {
          "id": "wl-service",
          "url": "https://wash-lab.co.za/services/laundry-collection-and-delivery/",
          "checkedAt": "2026-10-25",
          "title": "a 24-hour turnaround",
          "accessNote": "Primary indexed text available; direct fetch returned 429. No bypass attempted."
        }
      ]
    },
    {
      "id": "home-2-home",
      "name": "Home 2 Home Laundry",
      "website": "https://home2homeservices.co.za/",
      "suburb": "Table View / northern coastal service area; premises unspecified",
      "area": "Cape Town Northern Suburbs / northern coastal service area",
      "phone": "082 975 5861",
      "email": null,
      "dropoffAvailable": null,
      "services": [
        {
          "id": "wash-fold",
          "label": "Wash/Dry/Fold",
          "model": "per-kg",
          "rate": 32,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": 140,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "R140 is a minimum monetary charge, not a published minimum accepted weight. Terms apply."
          ],
          "sourceIds": [
            "home-2-home-source-1"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Wash/Dry/Iron",
          "model": "per-kg",
          "rate": 38,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": 140,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Folding not expressly included in this label."
          ],
          "sourceIds": [
            "home-2-home-source-1"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "unknown",
        "fee": null,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [
          "Melkbosstrand",
          "Big Bay",
          "West Beach",
          "Sunningdale",
          "Parklands",
          "Table View",
          "Flamingo Vlei"
        ],
        "restrictedAreas": false,
        "notes": [],
        "cutoff": null,
        "turnaround": null
      },
      "vat": "unknown",
      "hours": null,
      "rateDate": null,
      "notes": [
        "Free/twice-weekly transport is advertised only for monthly ironing packages, not these ordinary laundry rates.",
        "Ordinary laundry delivery charge unknown.",
        "Pensioner promotion is separate: R120 for 5kg, then additional kg R32; not used as standard household price.",
        "No published rounding unit or fee effective date found."
      ],
      "sources": [
        {
          "id": "home-2-home-source-1",
          "url": "https://home2homeservices.co.za/",
          "checkedAt": "2026-10-25",
          "title": "Rates, monetary minimum, named areas and ironing-package transport scope.",
          "accessNote": "operator_page_search_index; repeated_direct_fetches_timed_out"
        }
      ]
    },
    {
      "id": "luxury-laundry",
      "name": "Luxury Laundry",
      "website": "https://www.luxlaundry.co.za/",
      "suburb": "Durbanville service area; premises unspecified",
      "area": "Cape Town Northern Suburbs / northern coastal service area",
      "phone": "077 391 7803",
      "email": "info@luxlaundry.co.za",
      "dropoffAvailable": null,
      "services": [
        {
          "id": "wash-fold",
          "label": "Wash & Fold",
          "model": "per-kg",
          "rate": 55,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": true,
          "exactService": false,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Drying is not expressly stated; do not silently relabel as wash/dry/fold."
          ],
          "sourceIds": [
            "luxury-laundry-source-1"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Wash, Iron & Fold",
          "model": "per-kg",
          "rate": 85,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": true,
          "exactService": false,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Drying not expressly stated."
          ],
          "sourceIds": [
            "luxury-laundry-source-1"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "threshold",
        "fee": null,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": 300,
        "thresholdInclusive": false,
        "thresholdBasis": "unknown",
        "belowFee": 70,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [
          "Durbanville",
          "Brackenfell",
          "Kraaifontein"
        ],
        "restrictedAreas": false,
        "notes": [
          "Over R300: included/free; under R300: R70 surcharge.",
          "Exactly R300 and the threshold's pre/post-discount/tax basis are not stated."
        ],
        "cutoff": null,
        "turnaround": "Wash/fold 24 hours; wash/iron/fold 24-48 hours. Same-day express on request, R200 extra."
      },
      "vat": "unknown",
      "hours": "Monday-Saturday 07:00-19:00; Sunday not established.",
      "rateDate": null,
      "notes": [
        "Pet-related laundry is not accepted.",
        "Turnaround and collection availability were not confirmed directly.",
        "Do not assume drying or infer a minimum accepted bag size."
      ],
      "sources": [
        {
          "id": "luxury-laundry-source-1",
          "url": "https://www.luxlaundry.co.za/",
          "checkedAt": "2026-10-25",
          "title": "Published service labels and from-rates, collection/return rules, areas, hours and timing.",
          "accessNote": "direct_public_page"
        }
      ]
    },
    {
      "id": "the-load-out",
      "name": "The Load Out",
      "website": "https://theloadout.co.za/",
      "suburb": "Ridgeworth, Bellville",
      "area": "Cape Town Northern Suburbs / northern coastal service area",
      "phone": "021 203 5184",
      "email": "info@theloudout.co.za",
      "dropoffAvailable": true,
      "services": [
        {
          "id": "wash-fold",
          "label": "Wash, Dry & Fold",
          "model": "bands",
          "rate": 49,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [
            {
              "min": 0,
              "max": 4,
              "price": 240
            }
          ],
          "perKgFrom": 5,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "both",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Page states minimum 5kg but also publishes R240 for 0-4kg.",
            "Between 4kg and 5kg, charging/rounding is not explained. Do not invent a whole-kg ceiling or reject small bags automatically.",
            "Clothing, bedroom linen, bath towels and bath mats are listed together; bulky/special items have separate tariffs.",
            "Dry-weight basis. 4 < weight < 5 kg has no published formula; request quote. Customer supplies hangers for ironing."
          ],
          "sourceIds": [
            "the-load-out-source-1"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Wash, Dry & Iron",
          "model": "bands",
          "rate": 59,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [
            {
              "min": 0,
              "max": 4,
              "price": 295
            }
          ],
          "perKgFrom": 5,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "both",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Same 5kg minimum versus 0-4kg flat-band ambiguity.",
            "Published turnaround 12 hours; customer supplies hangers for ironing.",
            "Dry-weight basis. 4 < weight < 5 kg has no published formula; request quote. Customer supplies hangers for ironing."
          ],
          "sourceIds": [
            "the-load-out-source-1"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "unknown",
        "fee": null,
        "pickupFee": 0,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [],
        "restrictedAreas": false,
        "notes": [
          "Homepage advertises free pickup without a service-area boundary or return-delivery price. Do not infer free round trip.",
          "Only pickup is explicitly advertised free; return availability and charge are unknown."
        ],
        "cutoff": "11:00",
        "turnaround": "Ironed service advertises 12 hours; selective same-day services before 11:00. Confirm scope."
      },
      "vat": "unknown",
      "hours": "Seven days; daily opening/closing hours not established.",
      "rateDate": null,
      "notes": [
        "Site alternates Load Out/Loud Out spelling. Public contact copied literally.",
        "Copyright 2025 is not treated as a price-effective year.",
        "Published email uses 'loudout', while website domain uses 'loadout'; retained literally."
      ],
      "sources": [
        {
          "id": "the-load-out-source-1",
          "url": "https://theloadout.co.za/household-laundry/",
          "checkedAt": "2026-10-25",
          "title": "Per-kg/flat bands, dry-weight basis, 12-hour ironing, express and contacts.",
          "accessNote": "direct_public_page"
        },
        {
          "id": "the-load-out-source-2",
          "url": "https://theloadout.co.za/",
          "checkedAt": "2026-10-25",
          "title": "Selective same-day cutoff, seven-day operation and free-pickup marketing.",
          "accessNote": "operator_page_search_index; initial_direct_fetch_timed_out"
        }
      ]
    },
    {
      "id": "24-hour-laundry-edward-street",
      "name": "24 Hour Laundry - Edward Street",
      "website": "https://www.24hourlaundry.co.za/edward-street/",
      "suburb": "Edward Street / Durban Road, Northern Suburbs",
      "area": "Cape Town Northern Suburbs / northern coastal service area",
      "phone": "072 796 0443",
      "email": "admin@24hourlaundry.co.za",
      "dropoffAvailable": true,
      "services": [
        {
          "id": "wash-fold",
          "label": "Wash, dry and fold",
          "model": "per-kg",
          "rate": 37.5,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": 5,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "dropoff",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Minimum charge 5kg is a billing floor; smaller-order acceptance is not explicitly settled."
          ],
          "sourceIds": [
            "24-hour-laundry-edward-street-source-1"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Combined wash/dry/iron price",
          "model": "quote",
          "rate": null,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "dropoff",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": false,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "No combined package price found. Do not add WDF and ironing rates to invent a package."
          ],
          "sourceIds": [
            "24-hour-laundry-edward-street-source-1"
          ]
        }
      ],
      "delivery": {
        "available": null,
        "model": "unknown",
        "fee": null,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [],
        "restrictedAreas": false,
        "notes": [
          "Documented service is customer drop-off and customer collection. ‘Same day collection’ does not establish a home collection/delivery service."
        ],
        "cutoff": "11:00",
        "turnaround": "Same-day customer collection for loads dropped off before 11:00; no home transport confirmed."
      },
      "vat": "unknown",
      "hours": "Drop & Go Monday-Saturday 07:00-18:00; Sunday/public holidays 08:00-17:00. Self-service 24/7 is separate.",
      "rateDate": null,
      "notes": [
        "Iron-only R37.50/kg, minimum charge 2kg on Edward Street page; not added to WDF to fabricate a combined service.",
        "Branch source rechecked 2026-10-25: WDF R37.50/kg, minimum charge 5kg. No 10kg physical acceptance restriction found.",
        "24-hour access refers to self-service, not staffed drop-off processing.",
        "Bulky duvets/blankets priced separately; no per-kg rate transfer.",
        "Copyright 2026 does not prove a 2026 price-effective date.",
        "Other published phone: 076 390 2282 (Organization-wide enquiry contact)."
      ],
      "sources": [
        {
          "id": "24-hour-laundry-edward-street-source-1",
          "url": "https://www.24hourlaundry.co.za/edward-street/",
          "checkedAt": "2026-10-25",
          "title": "Branch WDF and ironing prices, billing minima, staffed hours and same-day cutoff.",
          "accessNote": "direct_public_page"
        },
        {
          "id": "24-hour-laundry-edward-street-source-2",
          "url": "https://www.24hourlaundry.co.za/",
          "checkedAt": "2026-10-25",
          "title": "General organization contact; branch-specific wording differs for ironing minimum.",
          "accessNote": "direct_public_page"
        }
      ]
    },
    {
      "id": "askus-cape-town-cleaning",
      "name": "Askus Custom Cleaning - Cape Town Cleaning",
      "website": "https://www.capetowncleaning.co.za/",
      "suburb": "Cape Town / Helderberg pickup service",
      "area": "Cape Town collection / wider routes",
      "phone": "087 265 4244",
      "email": "sales@capetowncleaning.co.za",
      "dropoffAvailable": null,
      "services": [
        {
          "id": "wash-iron",
          "label": "Clothing - wash, dry and iron",
          "model": "per-kg",
          "rate": 45,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "This is an ironed service, not a published wash/dry/fold-only rate."
          ],
          "sourceIds": [
            "askus-fishhoek"
          ]
        },
        {
          "id": "wash-fold",
          "label": "Wash, dry and fold only",
          "model": "quote",
          "rate": null,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": false,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "No separate WDF-only numeric rate on inspected page."
          ],
          "sourceIds": [
            "askus-fishhoek"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "regional",
        "fee": null,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [
          "Fish Hoek explicitly advertised",
          "Helderberg",
          "Winelands",
          "Cape Town and surrounds"
        ],
        "restrictedAreas": false,
        "notes": [
          "Combined 'Pickup & Delivery' table heading; separate per-leg wording not stated.",
          "Confirm which transport region applies to the actual address; no postcode/radius rules published on inspected page.",
          "Bookings one day or more in advance; same-day booking may not be possible."
        ],
        "cutoff": null,
        "turnaround": "Normal laundry: 48 hours from pickup; dry cleaning: 72 hours.",
        "regions": [
          {
            "name": "Helderberg",
            "fee": 100,
            "areas": []
          },
          {
            "name": "Winelands",
            "fee": 150,
            "areas": []
          },
          {
            "name": "Cape Town and surrounds",
            "fee": 200,
            "areas": []
          }
        ]
      },
      "vat": "unknown",
      "hours": "Collection and delivery Monday-Friday, 08:00-17:00",
      "rateDate": null,
      "notes": [
        "Fish Hoek page is one location page for the same operator, not a separately counted local laundry.",
        "Do not assume the R200 regional fee is per leg or a confirmed all-in address quote.",
        "Dry cleaning quoted per item.",
        "Bedding is separately priced: single duvet/inner R250; double/king/queen R350.",
        "Whites and other colours are separated as deemed necessary; no separate sorting surcharge stated.",
        "No financial minimum, weight-rounding or VAT treatment established."
      ],
      "sources": [
        {
          "id": "askus-fishhoek",
          "url": "https://www.capetowncleaning.co.za/fish-hoek-laundry-pickup-delivery/",
          "checkedAt": "2026-10-25",
          "title": "Operator branding/contact; R45/kg clothing WDI; regional transport R100/R150/R200; booking lead time, weekday 08:00-17:00 and 48-hour return.",
          "accessNote": null
        }
      ]
    },
    {
      "id": "cape-laundry-online",
      "name": "Cape Laundry Services (Pty) Ltd / Cape Laundry Online",
      "website": "https://www.capelaundryonline.com/",
      "suburb": "Cape Town-wide advertised service; base suburb unpublished",
      "area": "Cape Town collection / wider routes",
      "phone": "065 243 3494",
      "email": "capelaundryonline@gmail.com",
      "dropoffAvailable": null,
      "services": [
        {
          "id": "wash-fold",
          "label": "Standard WDF, 0-5kg price band",
          "model": "package",
          "rate": null,
          "baseKg": 5,
          "basePrice": 400,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": true,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": true,
          "notes": [
            "0-5kg is a published price band, not a physical minimum accepted weight.",
            "Do not add the separately published R150 transport fee again to this delivery-inclusive package.",
            "This published package explicitly includes delivery; do not add R150 again.",
            "Generic R350 order minimum has an unknown transport basis; not converted to a laundry-only floor."
          ],
          "sourceIds": [
            "cl-prices",
            "cl-faq",
            "cl-terms"
          ]
        },
        {
          "id": "wash-fold",
          "label": "Standard WDF advertised starting rate",
          "model": "per-kg",
          "rate": 50,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": true,
          "fromPrice": true,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": false,
          "notes": [
            "Do not assume this is an exact above-5kg marginal rate; page does not define that rule.",
            "Generic R350 order minimum has an unknown transport basis; not converted to a laundry-only floor."
          ],
          "sourceIds": [
            "cl-prices",
            "cl-faq",
            "cl-terms"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Wash, dry and iron, 0-5kg price band",
          "model": "package",
          "rate": null,
          "baseKg": 5,
          "basePrice": 500,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": true,
          "notes": [
            "Separate starting WDI rate R70/kg excludes delivery.",
            "This published package explicitly includes delivery; do not add R150 again.",
            "Generic R350 order minimum has an unknown transport basis; not converted to a laundry-only floor."
          ],
          "sourceIds": [
            "cl-prices"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Wash, dry and iron advertised starting rate",
          "model": "per-kg",
          "rate": 70,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": true,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": false,
          "notes": [
            "Generic R350 order minimum has an unknown transport basis; not converted to a laundry-only floor."
          ],
          "sourceIds": [
            "cl-prices",
            "cl-terms"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "unknown",
        "fee": 150,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": 350,
        "areas": [
          "Cape Town; 'any area' on price card, no precise geographic boundaries"
        ],
        "restrictedAreas": false,
        "notes": [
          "Pricing says R150 delivery on all orders/any area, while 0-5kg packages explicitly include delivery.",
          "Booking approval required; actual address eligibility not independently confirmed.",
          "FAQ advertises approvals in about 15-60 minutes and 24/7 order approval; this is not a guaranteed pickup window.",
          "Published order minimum; whether delivery counts is unstated. Do not treat as a proven laundry-subtotal floor."
        ],
        "cutoff": null,
        "turnaround": "Standard price card says next-day; terms/how-it-works say most bookings within 24 hours. FAQ also markets most orders same-day."
      },
      "vat": "unknown",
      "hours": null,
      "rateDate": null,
      "notes": [
        "Alternate public phone: 084 618 2820",
        "Ironing-only unit needs confirmation excluded from combined laundry comparison: Pricing card contains both R50/item and R50/kg; no exact ironing-only formula adopted.",
        "Price year not explicitly stated. Copyright years were not treated as fee-effective dates.",
        "Different timing claims and FAQ/pricing amount mismatch mean exact basket quote should be confirmed.",
        "Special stain treatment R100 in terms; exact per-item/order basis not specified.",
        "Same-day package 0-5kg R550 including delivery; starting rate R80/kg excluding delivery.",
        "Night service 0-5kg R575 including delivery; starting rate R85/kg excluding delivery.",
        "Missed handover/cancellation after approval may attract additional petrol/storage costs.",
        "Reception/security handover permitted if arranged; approval may be declined."
      ],
      "sources": [
        {
          "id": "cl-prices",
          "url": "https://www.capelaundryonline.com/pricing",
          "checkedAt": "2026-10-25",
          "title": "WDF/WDI packages and starting per-kg rates; R150 transport; conflicting ironing units.",
          "accessNote": null
        },
        {
          "id": "cl-faq",
          "url": "https://www.capelaundryonline.com/faq",
          "checkedAt": "2026-10-25",
          "title": "R350 minimum described as 5kg WDF; timing, approval and handover conditions.",
          "accessNote": null
        },
        {
          "id": "cl-terms",
          "url": "https://www.capelaundryonline.com/copy-of-faq",
          "checkedAt": "2026-10-25",
          "title": "R350 minimum, payment before release, extra-care timing and R100 stain treatment.",
          "accessNote": null
        },
        {
          "id": "cl-contact",
          "url": "https://www.capelaundryonline.com/contact",
          "checkedAt": "2026-10-25",
          "title": "Published organisation telephone and email.",
          "accessNote": null
        }
      ]
    },
    {
      "id": "washd-laundry",
      "name": "WASHD Laundry",
      "website": "https://www.washd.online/",
      "suburb": "Woodstock; City Bowl, Atlantic Seaboard and Southern Suburbs collection",
      "area": "Cape Town collection / wider routes",
      "phone": null,
      "email": null,
      "dropoffAvailable": null,
      "services": [
        {
          "id": "wash-fold",
          "label": "Wash, dry and fold",
          "model": "per-kg",
          "rate": 55,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Monetary order minimum, not an asserted 5kg physical minimum."
          ],
          "sourceIds": [
            "washd-prices",
            "washd-book"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Wash, dry, iron and fold",
          "model": "per-kg",
          "rate": 65,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [],
          "sourceIds": [
            "washd-prices",
            "washd-book"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "roundtrip",
        "fee": 60,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": 300,
        "areas": [
          "City Bowl",
          "Atlantic Seaboard",
          "Southern Suburbs",
          "V&A Waterfront",
          "Woodstock",
          "Gardens",
          "Sea Point",
          "Claremont",
          "surrounding areas subject to confirmation"
        ],
        "restrictedAreas": false,
        "notes": [
          "One R60 flat fee under the combined Pickup & Delivery heading; separate per-leg wording not present.",
          "Send exact location pin to confirm service area; broad suburb list is not address acceptance.",
          "Published order minimum; whether delivery counts is unstated. Do not treat as a proven laundry-subtotal floor."
        ],
        "cutoff": null,
        "turnaround": "Booking page: standard 1-2 business days; areas FAQ says usually next day."
      },
      "vat": "unknown",
      "hours": null,
      "rateDate": null,
      "notes": [
        "Published facility: Unit 1, 2 Draklow Street, Woodstock, Cape Town; customer drop-off acceptance not established.",
        "Phone/email were not exposed in the inspected primary pages; left null rather than sourced from unrelated listings.",
        "Bedding, dry cleaning and specialty items individually quoted, so do not apply clothing per-kg rate to these.",
        "Dry weight is explicitly used before processing; no fractional-weight rounding rule published.",
        "No VAT treatment or minimum-order spend basis found.",
        "Published address: Unit 1, 2 Draklow Street, Woodstock, Cape Town."
      ],
      "sources": [
        {
          "id": "washd-prices",
          "url": "https://www.washd.online/pricing-payment",
          "checkedAt": "2026-10-25",
          "title": "WDF R55/kg, WDIF R65/kg, R300 minimum order, R60 pickup/delivery; specialty items quoted.",
          "accessNote": null
        },
        {
          "id": "washd-areas",
          "url": "https://www.washd.online/areas-faqs",
          "checkedAt": "2026-10-25",
          "title": "Published areas and exact-location confirmation; usually next-day return.",
          "accessNote": null
        },
        {
          "id": "washd-book",
          "url": "https://www.washd.online/book-a-pickup",
          "checkedAt": "2026-10-25",
          "title": "Dry weighing, 1-2 business-day standard, same-day request and public contact form.",
          "accessNote": null
        }
      ]
    },
    {
      "id": "linen-club",
      "name": "The Linen Club",
      "website": "https://www.linenclub.co.za/",
      "suburb": "Maitland base; selected Southern Suburbs, City Bowl and Atlantic Seaboard routes",
      "area": "Cape Town collection / wider routes",
      "phone": "+27 77 440 6027",
      "email": "gary@linenclub.co.za",
      "dropoffAvailable": null,
      "services": [
        {
          "id": "wash-fold",
          "label": "Two loads for one - approximately 10kg",
          "model": "quote",
          "rate": null,
          "baseKg": null,
          "basePrice": 389,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": false,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Product title uses approximate kg; one load is described as roughly 5kg.",
            "Basket/bin-bag descriptions vary; do not turn 389/~10 into an exact R38.90/kg tariff.",
            "Approximate-weight or mixed-content bundle: known advertised package price retained without exact weight formula."
          ],
          "sourceIds": [
            "tlc-two",
            "tlc-households"
          ]
        },
        {
          "id": "wash-fold",
          "label": "Three loads for two - approximately 15kg",
          "model": "quote",
          "rate": null,
          "baseKg": null,
          "basePrice": 479,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": false,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "No exact excess-weight or part-load billing rule published in inspected product page.",
            "Approximate-weight or mixed-content bundle: known advertised package price retained without exact weight formula."
          ],
          "sourceIds": [
            "tlc-three"
          ]
        },
        {
          "id": "wash-iron",
          "label": "Five loads for three, some ironing - title approximately 25kg",
          "model": "quote",
          "rate": null,
          "baseKg": null,
          "basePrice": 729,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": null,
          "minAcceptedKg": null,
          "minSpend": null,
          "mode": "pickup",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": false,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "Actual contents specify two 10kg loads plus one washed/ironed bedding set and two pickup+delivery cycles; not 25kg arbitrary ironed clothing.",
            "Approximate-weight or mixed-content bundle: known advertised package price retained without exact weight formula."
          ],
          "sourceIds": [
            "tlc-five"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "included",
        "fee": null,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [
          "Selected Southern Suburbs",
          "City Bowl",
          "Atlantic Seaboard",
          "Claremont",
          "Newlands",
          "Rondebosch",
          "Constantia",
          "Bishopscourt",
          "Gardens",
          "Oranjezicht",
          "Tamboerskloof",
          "Sea Point",
          "Green Point"
        ],
        "restrictedAreas": false,
        "notes": [
          "Included, not an independently priced universally free service.",
          "Structured route days; confirm exact suburb/address and route before relying on offer."
        ],
        "cutoff": null,
        "turnaround": "Within 48 hours, often sooner, depending on collection time, route and volume."
      },
      "vat": "unknown",
      "hours": null,
      "rateDate": null,
      "notes": [
        "Use current product prices R389/R479; earlier search-index snippets displayed lower figures and one image alt says R380. These older representations do not override freshly retrieved product price.",
        "Do not compare these approximate bundles as exact kg formulas for arbitrary baskets.",
        "Ordinary household clothes, towels, sheets and pillowcases are within standard lane.",
        "Duvet inners, heavy blankets/comforters, ironing/pressing, extensive stain restoration, dry-clean-only and specialist items may be separately priced.",
        "Colour separation and customer-load separation included in described household bundles.",
        "Offers start around 10kg; this is a marketing/package starting point, not proof smaller loads are refused.",
        "Shopify product text contains both Sold out and Add service to cart; actual order availability not established.",
        "Published address: Unit 18, 14 7th Avenue, Maitlands (as published)."
      ],
      "sources": [
        {
          "id": "tlc-two",
          "url": "https://www.linenclub.co.za/products/2-loads-for-1-10kgs",
          "checkedAt": "2026-10-25",
          "title": "Fresh product price R389; approximate 10kg/two-load WDF bundle includes collection/delivery and colour split.",
          "accessNote": null
        },
        {
          "id": "tlc-three",
          "url": "https://www.linenclub.co.za/products/3-loads-for-2",
          "checkedAt": "2026-10-25",
          "title": "Fresh product price R479; approximately 15kg/three-load WDF bundle includes collection/delivery.",
          "accessNote": null
        },
        {
          "id": "tlc-five",
          "url": "https://www.linenclub.co.za/products/laundry-plus-bundle-25kgs-copy",
          "checkedAt": "2026-10-25",
          "title": "R729 mixed bundle: two10kg loads plus one pressed bedding set and two pickup/delivery cycles.",
          "accessNote": null
        },
        {
          "id": "tlc-households",
          "url": "https://www.linenclub.co.za/pages/q-a-for-households",
          "checkedAt": "2026-10-25",
          "title": "Roughly5kg/load; no extra colour-sorting fee; separate specialist items;48-hour route-dependent timing.",
          "accessNote": null
        },
        {
          "id": "tlc-pickup",
          "url": "https://www.linenclub.co.za/pages/laundry-pickup-delivery-cape-town",
          "checkedAt": "2026-10-25",
          "title": "Selected suburbs and route confirmation; broad household service scope.",
          "accessNote": null
        },
        {
          "id": "tlc-contact",
          "url": "https://www.linenclub.co.za/pages/contact",
          "checkedAt": "2026-10-25",
          "title": "Organisation phone/email and Maitlands address.",
          "accessNote": null
        }
      ]
    },
    {
      "id": "bubbles-beyond",
      "name": "Bubbles & Beyond Laundry Services",
      "website": "https://bubblesandbeyond.co.za/",
      "suburb": "Cape Town City Centre",
      "area": "Cape Town collection / wider routes",
      "phone": "+27 78 419 1361",
      "email": "info@bubblesandbeyond.co.za",
      "dropoffAvailable": true,
      "services": [
        {
          "id": "wash-fold",
          "label": "Wash, dry and fold",
          "model": "per-kg",
          "rate": 40,
          "baseKg": null,
          "basePrice": null,
          "extraRate": null,
          "extraBlockKg": null,
          "extraBlockPrice": null,
          "bands": [],
          "perKgFrom": null,
          "minBillableKg": 5,
          "minAcceptedKg": null,
          "minSpend": 200,
          "mode": "both",
          "priceConflict": false,
          "fromPrice": false,
          "exactService": true,
          "roundingKg": null,
          "transportIncluded": null,
          "notes": [
            "This is a financial minimum, not evidence that a 3kg load is rejected."
          ],
          "sourceIds": [
            "bb-prices"
          ]
        }
      ],
      "delivery": {
        "available": true,
        "model": "unknown",
        "fee": null,
        "pickupFee": null,
        "returnFee": null,
        "freeAbove": null,
        "thresholdInclusive": null,
        "thresholdBasis": "unknown",
        "belowFee": null,
        "atThresholdFee": null,
        "minAcceptedKg": null,
        "minSpend": null,
        "areas": [],
        "restrictedAreas": false,
        "notes": [
          "Collection/delivery offered on request, but precise coverage and address eligibility not published in inspected sources."
        ],
        "cutoff": null,
        "turnaround": null
      },
      "vat": "unknown",
      "hours": "Monday-Friday, 08:00-17:00",
      "rateDate": null,
      "notes": [
        "Ironing excluded from combined laundry comparison: Per-item ironing separately R30/item.",
        "Dry and iron excluded from combined laundry comparison: Does not include a stated wash step; not relabelled wash/dry/iron.",
        "Root homepage timed out on one direct retrieval, but separate operator pricing/contact pages retrieved successfully.",
        "This is the Cape Town .co.za operator, not unrelated US similarly named laundries.",
        "Stain treatment R55, unit not stated.",
        "Curtains and couch covers separately R140/kg; blankets/duvets priced per item.",
        "Household WDF does not imply specialty items qualify for same per-kg rate.",
        "No VAT statement, precise delivery fee, rounding rule or standard turnaround established.",
        "Published address: 46 Plein Street, Cape Town City Centre."
      ],
      "sources": [
        {
          "id": "bb-prices",
          "url": "https://bubblesandbeyond.co.za/prices.php",
          "checkedAt": "2026-10-25",
          "title": "WDFR40/kg with explicitR200 floor for5kg orless; ironR50/kg; dry+ironR55/kg; add-ons.",
          "accessNote": null
        },
        {
          "id": "bb-services",
          "url": "https://bubblesandbeyond.co.za/services.php",
          "checkedAt": "2026-10-25",
          "title": "Publicly offered collection/delivery on request; scope distinctions among services.",
          "accessNote": null
        },
        {
          "id": "bb-contact",
          "url": "https://bubblesandbeyond.co.za/contact.php",
          "checkedAt": "2026-10-25",
          "title": "Address, organisation phone/email and office hours.",
          "accessNote": null
        }
      ]
    }
  ]
}
