Skip to content
    ↑↓ to choose · Enter to open

    · 12 min read

    Woolworths Australia Scraper: 27 Data Fields per Record (2026)

    By CrawlerBros Engineering Team

    Each record carries 27 output fields, including real prices, discounts, GTIN barcodes, dietary attributes, and nutrition panels. A thousand results cost $5.00 on the free plan, with up to 1,000 results covered by Apify's free plan each month. This Actor lets you search by keyword, browse 19 departments, or filter current weekly specials without requiring store login or browser cookies. It is built for developers building price trackers or comparison apps; it is not for anyone needing store-specific inventory levels or local store availability, which these records do not include.

    Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 1,000 results at $0.005 each before platform usage. Open Woolworths Australia Scraper on Apify and run the prefilled example.

    How reliable is Woolworths Australia Scraper in production?

    Across the last 30 days of public runs on the Apify platform, Woolworths Australia Scraper recorded 117 runs with the following outcomes.

    Outcome Runs Share
    Succeeded 117 100.0%
    Failed 0 0.0%
    Aborted by the user 0 0.0%
    Timed out 0 0.0%
    Total 117 100.0%

    No run failed or timed out in the last 30 days. Keep a retry and an alert on scheduled runs all the same: a clean month is a record, not a guarantee.

    What does it cost to run Woolworths Australia Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    Worked example: collecting 10,000 results costs $50.00 in result charges before run-start fees and platform usage. No run failed or timed out in the last 30 days, so the list price is a fair budget; keep a retry in place all the same.

    The main driver of your run cost is maxItems, as result charges scale directly with the number of dataset items written. Keeping maxItems set to 30 on initial runs limits result charges to $0.15. Setting precise searchQuery strings or category selections reduces unnecessary pagination while keeping item yields focused.

    How do you run Woolworths Australia Scraper from the API?

    The schema marks 1 of its 9 controls as required: mode. Every value in the payload below comes from the published schema's own prefills, which means you can paste it, swap the token, and get a real result.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~woolworths-au-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"search","searchQuery":"milk","category":"1_6E4F4E4","onSaleOnly":false,"maxItems":30,"proxyConfiguration":{"useApifyProxy":true}}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "search",
      "searchQuery": "milk",
      "category": "1_6E4F4E4",
      "onSaleOnly": False,
      "maxItems": 30,
      "proxyConfiguration": {
        "useApifyProxy": True
      }
    }
    
    run = client.actor("crawlerbros~woolworths-au-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "search",
      "searchQuery": "milk",
      "category": "1_6E4F4E4",
      "onSaleOnly": false,
      "maxItems": 30,
      "proxyConfiguration": {
        "useApifyProxy": true
      }
    }
    
    const run = await client.actor('crawlerbros~woolworths-au-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    That endpoint blocks until the run completes. Fine while you are testing a handful of records, risky once a run takes minutes: a dropped connection loses the response even though the run itself finished. Switch to an asynchronous start with polling or a webhook before you schedule anything.

    Which Woolworths Australia Scraper inputs matter, and which can you skip?

    The required mode parameter dictates whether you perform a keyword search, browse a department, or extract weekly deals. Setting searchQuery is necessary for search mode, whereas category governs department sweeps across choices like Dairy, Eggs & Fridge or Bakery. Optional controls like brand, minPrice, and maxPrice should be left empty on initial runs until you need specific filtering.

    • mode (string): What to fetch. Default: "search".
    • searchQuery (string): Free-text product search, e.g. milk, chicken breast, chocolate. Default: "milk".
    • category (string): Woolworths department to browse or scan for specials. Default: "1_6E4F4E4".
    • minPrice (number): Drop products cheaper than this.
    • maxPrice (number): Drop products pricier than this.
    • onSaleOnly (boolean): Only emit products currently on special. Always applied in weeklyDeals mode. Default: false.
    • brand (string): Only emit products whose brand contains this text (case-insensitive), e.g. Dairy Farmers.
    • maxItems (integer): Hard cap on emitted records. The actor pages through results automatically (up to 8 pages of 36) to reach this many. Default: 30.
    • proxyConfiguration (object): Uses Apify's free datacenter proxy pool. A direct (no-proxy) fallback is used automatically if needed. Default: {"useApifyProxy":true}.

    Fixed-choice controls: mode accepts search (Search products), byCategory (Browse by department), weeklyDeals (Current specials); category accepts 19 values (default 1_6E4F4E4), including 1_6E4F4E4 (Dairy, Eggs & Fridge), 1-E5BEE36E (Fruit & Veg), 1_D5A2236 (Poultry, Meat & Seafood), 1_DEB537E (Bakery).

    What does Woolworths Australia Scraper return?

    Output records supply key grocery metadata including Australian Health Star Ratings, per-100g nutrition panels, unit prices, and GTIN barcodes suitable for comparison engines. They do not contain local store stock counts or physical store inventory status.

    • productId - Woolworths' Stockcode
    • name, brand, unit (pack size, e.g. 3L, 4 Pint)
    • price - current price (AUD)
    • originalPrice, discount, discountPercent - only present when the product is discounted
    • category - department name; subcategory - Woolworths' own fine-grained category (e.g. Full Cream Milk, Shampoo & Conditioner)
    • variant - flavor/variant descriptor (e.g. Berry, Mini Bars 12 pack)
    • barcode - the product's EAN/GTIN barcode
    • pricePerUnit - Woolworths' own per-unit price string (e.g. $1.72 / 1L)
    • description - product description, when published
    • purchaseLimit - maximum quantity purchasable per order
    • imageUrl, productUrl
    • isOnSale, inStock, isNew
    • ingredients, allergens - when Woolworths publishes ingredient/allergen data for the product
    • dietaryAttributes - e.g. Gluten Free, Vegetarian, Low Salt
    • healthStarRating - Australia's official 0.5-5 Health Star Rating, when published
    • nutrition - per-100g nutrition panel for food products (energyKj, protein, fat, saturatedFat, carbohydrates, sugars, sodium), when published
    • sourceUrl, scrapedAt, recordType: "product"

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Woolworths Australia Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Set mode to search, byCategory, or weeklyDeals depending on whether you want keyword matching, department browsing, or promotional lists.
    2. If using search mode, supply a searchQuery like milk; if using byCategory or weeklyDeals, pick a category identifier such as 1_6E4F4E4.
    3. Set maxItems between 1 and 200, keeping it at 30 for your first execution to cap result charges at $0.15.
    4. Apply optional numeric thresholds to minPrice or maxPrice if you need to scope products by AUD pricing bounds.
    5. Fill in brand with a substring like Dairy Farmers if you need to narrow output to a specific product maker.
    6. Toggle onSaleOnly to true if you are in search or byCategory mode and want only discounted records written to the dataset.
    7. Verify proxyConfiguration retains useApifyProxy set to true to leverage the free datacenter proxy pool.
    8. Run the Actor and inspect the dataset tab to confirm records carry expected attributes like productId, price, and productUrl.

    How do you apply it? Three worked playbooks

    These are Woolworths Australia Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Price monitoring

    Outcome: Track Woolworths AU prices and specials over time

    Configure: Set mode to "byCategory", category to "1_6E4F4E4", and maxItems to 200.

    Working method: Run an initial sweep over the chosen department to record baseline values, then trigger runs on a set schedule to track changes in price, originalPrice, and discount.

    Deliverable: A historical dataset of product records containing productId, price, originalPrice, discount, and scrapedAt timestamps.

    Stop condition: The returned dataset contains zero items or missing productId values across the whole department collection.

    Use case 2: Grocery comparison apps

    Outcome: Feed real Australian supermarket pricing into a comparison tool

    Configure: Set mode to "search", searchQuery to "butter", and maxItems to 50.

    Working method: Execute keyword queries for staple items, pull the barcode, price, and pricePerUnit fields, and match these values against external store catalogs.

    Deliverable: A structured JSON dataset containing product names, EAN/GTIN barcodes, current AUD prices, and unit pricing strings.

    Stop condition: More than 10% of returned records with valid barcodes lack the pricePerUnit string.

    Use case 3: Deal alerts

    Outcome: Surface products newly on special in a chosen department

    Configure: Set mode to "weeklyDeals", category to "1_5AF3A0A", onSaleOnly to true, and maxItems to 100.

    Working method: Pull current promotional items for a department, compare the returned productId list against saved historical runs, and flag newly present items.

    Deliverable: A dataset of discounted items detailing discount, discountPercent, price, and productUrl.

    Stop condition: The run finishes successfully but yields zero dataset records during an active promotional period.

    What breaks, and how do you design around it?

    • Over the last 30 days, 0.0% of public runs failed and 0.0% timed out. Build retries and alerting around those rates rather than assuming every run completes.

    Because maxItems caps single-run yields at 200 items, break broad collection goals into targeted category sweeps using category. When processing nutrition data, ensure your consumption pipeline handles missing attributes gracefully since empty fields are omitted rather than returned as null. If a run yields no items, check that brand or price filters like minPrice and maxPrice are not overly restrictive.

    When should you not use Woolworths Australia Scraper?

    Do not use this Actor if you require global supermarket coverage beyond Australia. For UK grocery monitoring, use Morrisons Groceries Scraper, and for US discount retail pricing, rely on Aldi US Scraper. Furthermore, if your primary goal is tracking government product safety enforcement rather than retail pricing, query official databases using Australia Product Safety Recalls Scraper.

    What should you check before trusting the output?

    • Confirm productId is populated on every dataset item.
    • Verify that discount and originalPrice are present whenever isOnSale is true.
    • Check that barcode is present when mapping output to external EAN catalog systems.
    • Validate that nutrition objects contain energyKj and protein fields for packaged food records.
    • Halt automated pipelines if recordType is missing or if dataset size exceeds your configured maxItems cap.

    None of this proves a record is correct. It gives a scheduled Woolworths Australia Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    How much does it cost to scrape 1,000 Woolworths products?

    It costs $5.00 per 1,000 results on the free tier, which equals $0.005 per item written to the dataset. Apify's free plan provides $5.00 of monthly usage, covering up to 1,000 results every month before platform usage costs.

    How reliable is the Woolworths Australia Scraper?

    In the last 30 days, 117 of 117 public runs finished successfully with 0 failed and 0 timed out. The Actor uses Apify's free datacenter proxy pool with an automatic direct connection fallback if needed.

    Does this scraper return product barcodes and nutrition info?

    Yes, whenever Woolworths publishes them. Records include EAN/GTIN barcode numbers, healthStarRating values, and a full nutrition panel detailing energyKj, protein, fat, saturatedFat, carbohydrates, sugars, and sodium.

    How do I fetch items that are currently on sale?

    Set the mode parameter to weeklyDeals or set onSaleOnly to true in search or byCategory modes. The input controls instruct the search query or department filter to emit items on special, returning discount and originalPrice fields.

    Can I scrape more than 200 items in a single run?

    The maxItems input parameter caps individual run output at 200 items. To collect larger datasets, schedule separate runs targeting different categories or distinct searchQuery terms.

    Where to go next

    When you are ready to run it, open Woolworths Australia Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the Woolworths Australia Scraper Actor page for the current input schema, pricing tier, and run history.

    Other Actors we maintain for related data:

    • Morrisons Groceries Scraper: Scrape Morrisons UK online groceries - search products, browse by department, or pull current promotions.
    • Aldi US Scraper: Scrape Aldi US groceries - search products by keyword, browse curated collections (Weekly Specials, ALDI Finds, Price Drops, ALDI Brands), real prices, discounts and images.
    • Australia Product Safety Recalls Scraper: Search Australia's official product recall register (ACCC Product Safety Australia).
    • Banggood Product & Price Scraper: Scrape Banggood.com - search by keyword, browse by category, or fetch full product detail by URL.

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-27.

    • Actor last updated by its maintainers on 2026-07-02.

    • Run outcome figures cover the 30 day public window ending 2026-09-27.

    • Woolworths Australia Scraper on Apify

    Featured actors

    Woolworths Australia Scraper

    Scrape Woolworths Australia groceries - search products by keyword, browse any of 19 departments, or pull current specials. Real prices, discounts, brands, nutrition, images and product URLs.

    Run on Apify ↗