ZOOT Product Scraper

codemaster devops · @codemasterdevops

Extract ZOOT product names, prices, sizes, availability, and image URLs from category and product pages for fashion catalog research.

About

ZOOT Product Scraper

What does ZOOT Product Scraper do?

ZOOT Product Scraper reads server-rendered fashion catalog pages and saves one dataset row per product detail page it processes. Start from a category to discover products, or supply individual product URLs to inspect specific items.

Verified coverage
A hosted Bytewells smoke test verified product samples from Czechia, Slovakia, and Romania. The actor can complete ZOOT’s supported proof-of-work challenge and continue with the session issued by the site. Storefront access may vary, and product URLs that redirect to a non-product page are skipped.

What ZOOT data can you extract?

  • Product identity and navigation in url, name, brand, and breadcrumbs.
  • Pricing and promotions in priceCurrency, currentBestPrice, originalPrice, and saleCode when the page exposes them.
  • Product imagery in thumbnail and images.
  • Size options in sizes. The product-level available flag indicates that at least one parsed size is available.
  • Product copy in description and attributes when present in the HTML.

How to use ZOOT Product Scraper

  1. Add full ZOOT category or product URLs to startUrls. The dashboard uses plain URL strings. API input also accepts objects with a url field.
  2. Set maxItems to the maximum number of product rows to save. Set maxRequestsPerCrawl to limit category, pagination, and detail requests handled by the crawler. Retries and concurrent requests can add HTTP attempts.
  3. Run the actor and open the dataset. Export JSON for nested fields or CSV for a spreadsheet.
Example input
{
  "startUrls": ["https://www.zoot.cz/katalog/17504/zeny"],
  "maxItems": 10,
  "maxRequestsPerCrawl": 40,
  "maxConcurrency": 1,
  "proxyConfiguration": { "useApifyProxy": false }
}
Example output excerpt

The following example is from a live Bytewells smoke test.

{
  "url": "https://www.zoot.cz/damske/detail-vyrobku/636057-only-kremovy-upletovy-top-s-kratkym-rukavem-jdydicte/M/249727:bezova-birch/",
  "name": "ONLY - Krémový úpletový top s krátkým rukávem JDYDICTE",
  "priceCurrency": "CZK",
  "currentBestPrice": {
    "value": 524,
    "formattedPrice": "524 Kč"
  },
  "sizes": [
    {
      "size": "XS",
      "available": true
    },
    {
      "size": "S",
      "available": true
    },
    {
      "size": "M",
      "available": true
    },
    {
      "size": "L",
      "available": true
    },
    {
      "size": "XL",
      "available": true
    }
  ],
  "available": true
}
Coverage and limits

The Bytewells run defaults use 2 GB of memory and a 180-second timeout. Keep concurrency at 1 for small cross-storefront runs.

Category pagination follows the page links the actor recognizes, within the configured request and item limits. A run may save fewer rows than requested when pages have fewer products, individual requests fail, or the request limit is reached. A run with zero saved products fails. A run that saves products before other requests fail can return a partial dataset and logs a warning.

Product fields depend on the HTML that ZOOT returns. Unavailable fields can be null or empty. The available flag depends on parsed size options, so check sizes before treating false as confirmed out of stock. Direct connections are the default. A customer-supplied proxy is optional and may incur separate provider charges.

Independent tool for catalog research. Support is available from Quick Life Solutions.

FAQ

What does ZOOT Product Scraper collect?
It saves one row per processed product detail page, with the product URL, name, and available fields for prices, brands, sizes, images, and descriptions.
Which URLs can I use?
Use full product or category URLs on ZOOT.cz, ZOOT.sk, or ZOOT.ro in `startUrls`. Hosted product samples were verified for Czechia, Slovakia, and Romania.
Can I submit multiple categories and individual products together?
Yes. Add them to the same `startUrls` array. Each category is used to discover product links, and direct product links are parsed individually.
Does the actor follow category pagination?
Yes, when it recognizes the page links. The actor limits pagination based on the visible catalog and the requested product cap.
Will I always get the number of rows set in maxItems?
`maxItems` is the maximum number of product rows the actor can save. Available products, skipped or failed pages, and the request limit determine the actual count.
How does the actor determine availability?
It sets `available` to true when a parsed size is marked available. Check the `sizes` array for details, especially when the page provides no readable size options.
Why might some fields be empty?
Optional fields depend on the product HTML. A missing brand logo, description, price, or size list can produce a null or empty value.
Do I need credentials or a proxy?
A direct run requires no ZOOT login or API key. You can supply your own proxy through `proxyConfiguration.proxyUrls`. The actor can handle the supported ZOOT proof-of-work challenge when offered.
What happens if ZOOT blocks a request?
The actor attempts the supported proof-of-work challenge when offered. It skips pages where access remains blocked. If the run saves zero products, it fails. If it saves some products and other requests fail, it logs that the dataset is partial.
How do I export the results?
Open the dataset to export JSON or CSV. JSON preserves nested fields such as prices, sizes, and breadcrumbs.

More Actors from the same publisher.

View all from @codemasterdevops