Officeworks Products, Prices, Stock & Reviews Scraper
Pricing
from $1.00 / 1,000 product results
Officeworks Products, Prices, Stock & Reviews Scraper
Scrape Officeworks (officeworks.com.au) products: name, brand, price, GST, stock by state, category, images, specifications, identifiers, plus ratings and reviews with star distribution. Search by keyword with brand, price and rating filters, or paste product, search or category URLs.
Pricing
from $1.00 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
Officeworks Australia Scraper - Products & Reviews
Scrape Officeworks products from officeworks.com.au into a clean, structured dataset. Search by keyword with brand, price and rating filters, browse the Deals and Clearance specials collections, or paste product, search and category URLs directly. Capture the current price plus any was / original price and discount, a canonical product title, the variant matrix, and optionally the full product detail plus customer ratings and reviews with an aggregate rating summary and a star-rating distribution for every product.
Officeworks is Australia's leading retailer of office supplies, technology, furniture, print and stationery. This actor turns any Officeworks search, category or product page into structured rows you can analyse, monitor or feed into your own tools.
What you get
One flat record per product, including:
- Identity -
name,title(canonical, brand-prefixed),brand,sku,seoPath,urlKeyword,gtin,manufacturerPartNumber,productType - Price -
price,edlpPrice,gstRate,hasBusinessPrice,currency - Specials & discount -
isOnSpecial,promoLabel(the store's own badge, e.g. Deal / Clearance / Low Price),isNew, and, when a product is genuinely reduced below its everyday price,wasPrice,savingsAmount,savingsPercent - Availability -
availableStates(in-stock states),isAvailableInStore,availableOnline,isClearance - Variants -
variants(per-variant sku, url, distinguishing attributes and thumbnail),variantAxes,variantCount - Category -
category,categories(full breadcrumb path),categoryPath,categoryHierarchy(full category chains) - Descriptions -
shortDescription,longDescription,metaDescription,features(feature bullets) - Attributes -
specificationsandattributes(name/value pairs) - Media -
imageUrl,images(full gallery) - Ratings & reviews -
rating(0-5),reviewCounton every card, and with detail enrichment alsoratingDistribution,recommendedCountandreviews[]with per-review rating, title, body, author, ISO-8601 date, helpful count, pros/cons and secondary ratings, plusreviewsCollected - Resume & recurring updates (optional) - turn on Incremental mode to get
only NEW, UPDATED, and REAPPEARED products on every scheduled run, or resume
one specific interrupted crawl with
resumeFromRunId
Modes
Search by keyword + filters
Set Mode = search and add one or more Search keywords. Each keyword is searched separately. Refine with:
- Specials / offers collection - browse Deals or Clearance instead of (or alongside) your keywords; brand, price, rating and sort still apply
- Brand - keep only a given brand
- Minimum / maximum price (AUD)
- Minimum rating (1-5)
- Include unavailable products - on by default
- Sort by - relevance, newest, name A-Z, price low-to-high, price high-to-low, or rating low-to-high / high-to-low
Scrape pasted URLs
Set Mode = url and paste Officeworks URLs:
- A product URL (
/shop/officeworks/p/<slug>, e.g.https://www.officeworks.com.au/shop/officeworks/p/some-product-sku) returns that single product. - A search URL (e.g.
https://www.officeworks.com.au/shop/officeworks/search?q=laptop) or a category URL (e.g.https://www.officeworks.com.au/shop/officeworks/c/office-supplies/pens) returns multiple pages of results, continuing forward from the page in the URL. - A specials URL works the same way - paste
https://www.officeworks.com.au/shop/officeworks/c/dealsorhttps://www.officeworks.com.au/shop/officeworks/c/clearance.
Specials, was-price & discount
Officeworks groups its promotions into two storefront collections - Deals
(curated featured offers) and Clearance (reduced-to-clear stock). Pick one
in Specials / offers collection in search mode, or paste its URL in URL mode.
Each product carries isOnSpecial and the store's own promoLabel badge (e.g.
Deal, Clearance, Low Price).
Officeworks runs an every-day-low-price model and generally does not
publish a strike-through "was" price. When a product is genuinely reduced below
its everyday price, wasPrice, savingsAmount and savingsPercent are
populated; otherwise they stay null (they are never fabricated). The current
price is always present.
Ratings & reviews
Every product card already carries the aggregate rating (0-5) and
reviewCount. Keep Fetch full product detail + reviews on (the default) to
also attach each product's full detail, the star-rating distribution and its
customer reviews. Use Max reviews per product to cap how many are collected
per product (0 = all available).
For example, a popular product might carry reviewCount: 128 with a rating of
4.6 and a ratingDistribution of { "5": 96, "4": 20, "3": 6, "2": 3, "1": 3 },
each review including rating, title, body, author, date and a helpful count.
Products with no reviews simply leave rating, reviewCount,
ratingDistribution and reviews absent (these fields are never faked);
reviewsCollected reads 0. Some reviews are ratings-only, in which case only
the rating and date are present. Officeworks does not publish a verified-purchase
flag, so verifiedPurchase is omitted; where a reviewer indicated where they
bought the item, that appears as purchaseLocation.
Turn detail enrichment off for a faster, lower-cost run that returns the listing card fields only (name, brand, price, images, category, aggregate rating and review count) with no reviews.
Incremental mode note: rating, reviewCount, ratingDistribution,
recommendedCount, reviews and reviewsCollected are always returned, but
they do not drive changeType. Other shoppers post reviews independently
of and far more often than a product's own price/stock/specials change, so
counting them would mark almost every product UPDATED on every scheduled run
and defeat suppression. A genuine price, stock, or specials change still
triggers UPDATED as usual.
Output limits
- Max products - overall cap across the run (0 = unlimited)
- Max pages per search - safety cap on result pages per keyword / URL
Resume & recurring updates
There are two different things here - pick the one that matches what you're doing:
| Need | Use |
|---|---|
| A crawl stopped and should continue | resumeFromRunId / automatic checkpoint recovery |
| Run the same search every day and receive only changes | incrementalMode |
| Keep separate daily campaigns for similar searches | distinct stateKey values |
| Run a normal full snapshot | leave both off |
Resume (resumeFromRunId) continues one specific interrupted or previous large crawl: paste a run ID or dataset ID and this run skips products already collected there, returning only the remaining new products. An automatic same-run checkpoint also protects against platform migrations/Resurrects without any input needed.
Incremental mode (incrementalMode) is for a schedule (for example, daily): the actor remembers the previous run of the same search by itself, so you never paste a run ID. The first run returns everything as NEW. Later runs return only NEW, UPDATED, and REAPPEARED products by default - duplicates and unchanged products are suppressed (and not charged). Turn on emitUnchanged or emitExpired only when you also want those rows returned (and billed for). State is isolated per mode/search/URL/specials/brand/sort/price/rating/stock/detail setup automatically; set stateKey to name or deliberately share a monitoring campaign. EXPIRED is only synthesized once a run fully scans every keyword/URL/specials target (not capped by Max products/Max pages, not a Resume run).
When incrementalMode is on, every returned record also carries:
| Field | Description |
|---|---|
changeType | NEW | UPDATED | UNCHANGED | REAPPEARED | EXPIRED |
changedFields | Top-level fields that changed since last seen; non-empty only for UPDATED |
firstSeenAt | When this product was first observed by this monitoring campaign |
lastSeenAt | When this product was last observed |
Scheduled-run example - same search, run daily:
Day 1 (first run ever for this search):
{ "mode": "search", "queries": ["pen"], "incrementalMode": true }
→ every product comes back with "changeType": "NEW".
Day 2 (the schedule fires again, identical input):
{ "mode": "search", "queries": ["pen"], "incrementalMode": true }
→ products whose price/stock/specials/etc. changed come back as "changeType": "UPDATED" with changedFields listing what changed, brand-new products come back as "changeType": "NEW", products that vanished and came back come back as "changeType": "REAPPEARED" - and products that are still there, unchanged, are not returned at all (suppressed, not charged) unless emitUnchanged is on.
Send results into your apps (MCP connectors)
Optionally pipe results into the apps you already use via Model Context Protocol (MCP) connectors - Notion, Linear, Airtable or Apify. Authorize a connector under Apify → Settings → API & Integrations, then select it in the input. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. This never changes the dataset output.
Plan Requirement
Runs on any Apify plan. Using Apify Proxy is recommended for reliable results; on the free plan, coverage may be limited and some runs may return fewer results.
Example input
{"mode": "search","queries": [],"specialsCategory": "clearance","sortBy": "priceAsc","detailEnrichment": true,"maxReviewsPerProduct": 10,"maxItems": 50,"proxy": { "useApifyProxy": true }}
Example output
{"sku": "EXAMPLE123","name": "Example 14 inch Notebook 16GB 512GB","title": "Example Brand Example 14 inch Notebook 16GB 512GB","brand": "Example Brand","url": "https://www.officeworks.com.au/shop/officeworks/p/example-notebook-example123","price": 897.0,"edlpPrice": 897.0,"wasPrice": null,"savingsAmount": null,"savingsPercent": null,"isOnSpecial": true,"promoLabel": "Clearance","isNew": false,"gstRate": 10.0,"currency": "AUD","gtin": "9300000000000","availableStates": ["NSW", "VIC", "QLD", "WA", "SA"],"availableOnline": true,"isClearance": true,"category": "Laptops","categories": ["Technology", "Computers", "Laptops"],"categoryHierarchy": [["Technology", "Computers", "Laptops"]],"variantAxes": { "Colour": ["Silver", "Space Grey"] },"variantCount": 2,"variants": [{"sku": "EXAMPLE123","url": "https://www.officeworks.com.au/shop/officeworks/p/example-notebook-example123","attributes": { "Colour": "Silver" },"imageUrl": "https://www.officeworks.com.au/images/example-thumb.jpg"}],"shortDescription": "A lightweight everyday notebook.","features": ["14 inch display", "16GB memory", "512GB storage"],"specifications": { "Brand": "Example Brand", "Storage": "512GB" },"imageUrl": "https://www.officeworks.com.au/images/example.jpg","rating": 4.6,"reviewCount": 128,"ratingDistribution": { "5": 96, "4": 20, "3": 6, "2": 3, "1": 3 },"recommendedCount": 110,"reviews": [{"reviewId": "1000000001","rating": 5,"title": "Great value","body": "Fast and light, exactly what I needed.","author": "SampleReviewer","date": "2026-06-01T10:00:00.000+00:00","helpfulCount": 3}],"reviewsCollected": 1}