Nimbryxo Studio

World Market Product Scraper

Get product data from Cost Plus World Market, a US home decor, furniture, and specialty food retailer. Search by keyword or browse by department for price, brand, item number, category, images, availability, and ratings.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredWhat to fetch. `search` uses a keyword, `byCategory` browses a department or collection, and `byProductUrls` reads the URLs you paste.
searchQuerystringoptionalKeyword to search for (mode=search), e.g. `candle`, `dining chair`, `chocolate`.
categorystringoptionalA World Market department or curated collection. Use `categoryUrl` instead if you want a sub-category that is not listed here.
Show all input fields
FieldTypeRequiredDescription
modestringrequiredWhat to fetch. `search` uses a keyword, `byCategory` browses a department or collection, and `byProductUrls` reads the URLs you paste.
searchQuerystringoptionalKeyword to search for (mode=search), e.g. `candle`, `dining chair`, `chocolate`.
categorystringoptionalA World Market department or curated collection. Use `categoryUrl` instead if you want a sub-category that is not listed here.
categoryUrlstringoptionalA worldmarket.com category or collection URL, e.g. `https://www.worldmarket.com/c/furniture/shop-all-furniture/`. Takes priority over `category`.
productUrlsarrayoptionalDirect worldmarket.com product-page URLs, e.g. `https://www.worldmarket.com/p/<slug>-<id>.html`. Up to 500 unique URLs per run.
sortBystringoptionalSort order for search and department results. `bestselling` and `newArrivals` keep World Market's own listing order.
minPriceintegeroptionalDrop products whose current price is below this amount.
maxPriceintegeroptionalDrop products whose current price is above this amount.
maxItemsintegeroptionalHard cap on emitted products (1–500). Search and department pages are read 120 tiles at a time.
storeIdstringoptionalA World Market store ID such as `store398`. Used only when `includePickup` is enabled. If omitted, the nearest store is resolved from `postalCode`.
postalCodestringoptionalUS ZIP code used to resolve the nearest store when `storeId` is not set and `includePickup` is enabled.
includeVariantsbooleanoptionalInclude the selectable color, size or fragrance options for products that have them (up to 20).
includePickupbooleanoptionalAdd per-store pickup status, quantity and message. Requires `storeId` or `postalCode`.
proxyConfigurationobjectoptionalOptional. The actor connects directly first and only uses a proxy fallback if World Market blocks a request. Choose your own proxy to use it as that fallback, or leave it unset.

Download the published input schema

View complete JSON
{
  "description": "Search worldmarket.com by keyword, browse a department or collection, or paste product URLs. Prices, sale savings, images, SKUs, variants and optional store pickup. No login or cookies required.",
  "properties": {
    "category": {
      "description": "A World Market department or curated collection. Use `categoryUrl` instead if you want a sub-category that is not listed here.",
      "editor": "select",
      "enum": [
        "bestSellers",
        "bath",
        "clothingAndJewelry",
        "decorAndPillows",
        "dining",
        "foodAndDrinks",
        "freeShipping",
        "furniture",
        "gifts",
        "holidays",
        "kitchen",
        "lighting",
        "newAndTrending",
        "outdoor",
        "rugs",
        "sale",
        "wallDecorAndMirrors"
      ],
      "enumTitles": [
        "Best Sellers",
        "Bath & Body",
        "Clothing & Jewelry",
        "Decor & Pillows",
        "Dining",
        "Food & Drinks",
        "Free Shipping",
        "Furniture",
        "Gifts",
        "Holidays",
        "Kitchen",
        "Lighting",
        "New & Trending",
        "Outdoor",
        "Rugs",
        "Sale / Clearance",
        "Wall Decor & Mirrors"
      ],
      "title": "Department or collection (mode=byCategory)",
      "type": "string"
    },
    "categoryUrl": {
      "description": "A worldmarket.com category or collection URL, e.g. `https://www.worldmarket.com/c/furniture/shop-all-furniture/`. Takes priority over `category`.",
      "editor": "textfield",
      "title": "Custom category or collection URL (mode=byCategory)",
      "type": "string"
    },
    "includePickup": {
      "default": false,
      "description": "Add per-store pickup status, quantity and message. Requires `storeId` or `postalCode`.",
      "prefill": false,
      "title": "Include store pickup availability",
      "type": "boolean"
    },
    "includeVariants": {
      "default": true,
      "description": "Include the selectable color, size or fragrance options for products that have them (up to 20).",
      "prefill": true,
      "title": "Include variant options",
      "type": "boolean"
    },
    "maxItems": {
      "default": 20,
      "description": "Hard cap on emitted products (1–500). Search and department pages are read 120 tiles at a time.",
      "maximum": 500,
      "minimum": 1,
      "prefill": 1,
      "title": "Max items",
      "type": "integer"
    },
    "maxPrice": {
      "description": "Drop products whose current price is above this amount.",
      "maximum": 100000,
      "minimum": 0,
      "title": "Maximum price (USD)",
      "type": "integer"
    },
    "minPrice": {
      "description": "Drop products whose current price is below this amount.",
      "maximum": 100000,
      "minimum": 0,
      "title": "Minimum price (USD)",
      "type": "integer"
    },
    "mode": {
      "default": "search",
      "description": "What to fetch. `search` uses a keyword, `byCategory` browses a department or collection, and `byProductUrls` reads the URLs you paste.",
      "editor": "select",
      "enum": [
        "search",
        "byCategory",
        "byProductUrls"
      ],
      "enumTitles": [
        "Search by keyword",
        "Browse a department or collection",
        "Look up product URLs"
      ],
      "prefill": "search",
      "title": "Mode",
      "type": "string"
    },
    "postalCode": {
      "description": "US ZIP code used to resolve the nearest store when `storeId` is not set and `includePickup` is enabled.",
      "editor": "textfield",
      "title": "ZIP / postal code (optional, pickup only)",
      "type": "string"
    },
    "productUrls": {
      "default": [],
      "description": "Direct worldmarket.com product-page URLs, e.g. `https://www.worldmarket.com/p/<slug>-<id>.html`. Up to 500 unique URLs per run.",
      "editor": "stringList",
      "title": "Product URLs (mode=byProductUrls)",
      "type": "array"
    },
    "proxyConfiguration": {
      "description": "Optional. The actor connects directly first and only uses a proxy fallback if World Market blocks a request. Choose your own proxy to use it as that fallback, or leave it unset.",
      "editor": "proxy",
      "sectionCaption": "Advanced",
      "sectionDescription": "Proxy settings.",
      "title": "Proxy configuration",
      "type": "object"
    },
    "searchQuery": {
      "default": "candle",
      "description": "Keyword to search for (mode=search), e.g. `candle`, `dining chair`, `chocolate`.",
      "editor": "textfield",
      "prefill": "candle",
      "title": "Search query",
      "type": "string"
    },
    "sortBy": {
      "default": "bestselling",
      "description": "Sort order for search and department results. `bestselling` and `newArrivals` keep World Market's own listing order.",
      "editor": "select",
      "enum": [
        "bestselling",
        "newArrivals",
        "ratingHighToLow",
        "priceLowToHigh",
        "priceHighToLow"
      ],
      "enumTitles": [
        "Bestselling",
        "New Arrivals",
        "Rating: High to Low",
        "Price: Low to High",
        "Price: High to Low"
      ],
      "title": "Sort order",
      "type": "string"
    },
    "storeId": {
      "description": "A World Market store ID such as `store398`. Used only when `includePickup` is enabled. If omitted, the nearest store is resolved from `postalCode`.",
      "editor": "textfield",
      "title": "Store ID (optional, pickup only)",
      "type": "string"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "World Market Product Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
productsstringoptionalDataset containing all scraped World Market products.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "World Market products with exact current price, original price and discount, sale badges, brand, SKU and master ID, rating, images, variants, category, availability and optional store pickup status.",
  "properties": {
    "products": {
      "description": "Dataset containing all scraped World Market products.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "World Market products",
      "type": "string"
    }
  },
  "title": "World Market Product Scraper Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Products",
      "transformation": {
        "fields": [
          "title",
          "price",
          "originalPrice",
          "saleBadge",
          "brand",
          "sku",
          "availability",
          "pickupStatus",
          "rating",
          "reviewCount",
          "productUrl"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

World Market Product Prices, Sale & Store Pickup Scraper

Scrape Cost Plus World Market (worldmarket.com) for the exact lowest current price, original price and sale savings, brand, SKU, rating, image gallery, variant options and optional per-store pickup status. Search by keyword, browse a department or collection, or paste product URLs. No login, cookies or account is required.

What this actor does

  • Three modes: search (keyword), byCategory (department or collection), byProductUrls (direct product pages)
  • Accurate sale pricing: reads the tile's list and sale price blocks, so a sale range such as $4.00–$34.99 returns price: 4.00, priceMax: 34.99 and originalPrice: 4.99 instead of the highest value
  • Sale and clearance detail: onSale, saleBadge, discountAmount, discountPercent and product badges such as Sale, Clearance, New, Best Seller and Top Rated
  • Rich product data: brand or sub-brand, full category path, description, rating and review count, up to 10 images, master ID, selected SKU, all SKUs and up to 20 variant options
  • Optional store pickup: add storeId or postalCode with includePickup to get available, delayed or out pickup status, quantity and message for each product
  • Canonical dedupe: collection tiles and individual product tiles that share a master product are emitted once, preferring the individual product URL
  • Caps for predictable runs: 500 products, 120 tiles per listing page, 6 parallel detail requests, 10 images, 20 variant options and 500 product URLs
  • Empty fields are omitted — every record only contains fields that were actually found

Output per product

  • title — product name
  • brand — sub-brand when World Market lists one (e.g. Apothecary), otherwise World Market
  • description — product description
  • category — full breadcrumb path (e.g. Furniture > Dining Room Furniture > Dining Chairs)
  • masterId — World Market master product ID used for canonical dedupe
  • sku — selected SKU for this product record
  • skus[] — all SKUs that belong to the master product (up to 50)
  • itemNumber — the selected SKU, kept for compatibility with older datasets
  • price — exact lowest current price in USD
  • priceMax — highest price when the product or its variants span a price range
  • originalPrice — list price before the sale, only when the product is discounted
  • discountAmount, discountPercent — savings versus originalPrice, only when discounted
  • currency — USD
  • onSale — true when the product is discounted or flagged as a sale item
  • saleBadge — Sale or Clearance when applicable
  • badges[] — other merchandising badges (New, Best Seller, Top Rated)
  • rating — average customer rating (1–5), only when the product has reviews
  • reviewCount — number of customer reviews, only when the product has reviews
  • imageUrls[] — up to 10 product images
  • imageCount — number of images returned
  • availability — In Stock or Out of Stock
  • inStock — boolean availability
  • variants[] — selectable options (up to 20), each with attribute, label and selected when applicable
  • variantCount — number of SKUs or options when the product has more than one
  • productUrl — canonical World Market product URL
  • storeId, storeName — resolved store, only when pickup is enabled
  • pickupAvailable — true when the item can be picked up at the resolved store
  • pickupStatus — available, delayed or out
  • pickupMessage — the site's pickup message (e.g. Available today or Available Nov 3 - 13 at)
  • storeQty — store inventory quantity when pickup is enabled
  • recordType: "product", scrapedAt — UTC ISO timestamp

Input

Field Type Default Description
mode string search search / byCategory / byProductUrls
searchQuery string candle Keyword to search for (mode=search)
category string – Department or collection to browse (mode=byCategory)
categoryUrl string – Custom worldmarket.com category or collection URL (mode=byCategory); takes priority over category
productUrls array – Direct product URLs (mode=byProductUrls); up to 500 unique URLs
sortBy string bestselling bestselling / newArrivals / ratingHighToLow / priceLowToHigh / priceHighToLow
minPrice int – Drop products below this current price (USD)
maxPrice int – Drop products above this current price (USD)
maxItems int 20 Hard cap on emitted products (1–500)
storeId string – Store ID such as store398 (pickup only)
postalCode string – US ZIP code used to resolve the nearest store (pickup only)
includeVariants boolean true Include selectable variant options
includePickup boolean false Add per-store pickup availability; requires storeId or postalCode
proxyConfiguration object – Optional proxy fallback; the actor connects directly first

category accepts: bestSellers, bath, clothingAndJewelry, decorAndPillows, dining, foodAndDrinks, freeShipping, furniture, gifts, holidays, kitchen, lighting, newAndTrending, outdoor, rugs, sale, wallDecorAndMirrors.

Example: keyword search with sale prices

{
  "mode": "search",
  "searchQuery": "candle",
  "sortBy": "priceLowToHigh",
  "maxItems": 50
}

Example: browse a department with a price range

{
  "mode": "byCategory",
  "category": "furniture",
  "sortBy": "priceLowToHigh",
  "minPrice": 100,
  "maxPrice": 500,
  "maxItems": 100
}

Example: custom collection URL

{
  "mode": "byCategory",
  "categoryUrl": "https://www.worldmarket.com/c/sale/clearance/shop-all-clearance/",
  "maxItems": 60
}

Example: direct product URLs with store pickup

{
  "mode": "byProductUrls",
  "productUrls": [
    "https://www.worldmarket.com/p/apothecary-lavender-tonic-scented-candle-128547.html",
    "https://www.worldmarket.com/p/apothecary-holiday-mini-scented-candle-133564.html"
  ],
  "includePickup": true,
  "storeId": "store398"
}

Use cases

  • Price monitoring — track current and original prices, sale windows and clearance items over time
  • Promotion intelligence — quantify discount depth by department, brand or collection
  • Catalog enrichment — feed structured product, image, SKU and variant data into a PIM or storefront
  • Local availability checks — see which products are available today, delayed or out of stock for pickup at a chosen store
  • Gift and seasonal research — collect holiday, food, decor and best-seller assortments for content or merchandising
  • Affiliate and comparison sites — build up-to-date product pages with verified prices and images

Limitations

  • Prices are shown in USD and pickup covers US World Market stores.
  • Search and department runs stop at 500 products. For a larger catalog, split by department, collection or keyword.
  • Product URLs are capped at 500 per run; only the first maxItems unique URLs are fetched.
  • originalPrice, discountAmount and discountPercent appear only when World Market shows a higher list price.
  • rating and reviewCount are omitted for products with no reviews.
  • Pickup status is a snapshot for one store at run time. It needs a valid storeId or a US ZIP code.
  • worldmarket.com runs on Salesforce Commerce Cloud behind Cloudflare. If the site changes its page structure or blocks traffic, the actor retries and switches connection, and fails with a clear error instead of returning partial or invented data.

FAQ

Is this affiliated with World Market or Cost Plus World Market? No. This is an independent, third-party actor that reads the same public product pages any shopper sees. It is not affiliated with, endorsed by or connected to World Market.

Do I need to log in or provide cookies? No. World Market publishes prices, availability and product details on public pages without an account.

How is price chosen when a product has several sizes or a sale range? price is the lowest current price shown for the product. When a sale tile shows a range, the lowest sale value is used, and priceMax records the highest value. This avoids the common mistake of returning the highest price in a range.

Why do only some products have an originalPrice? Only discounted products show a higher list price. Products at their regular price omit originalPrice, discountAmount and discountPercent rather than repeating the current price.

Why are rating and reviewCount missing on some products? Those fields are only included when a product has at least one customer review. New or niche items may not have reviews yet, so the fields are omitted instead of showing a fake zero.

How do I get pickup availability? Set includePickup to true and provide either a storeId (for example store398) or a US postalCode. The actor resolves the store, then reports pickupStatus, pickupMessage, storeQty, storeId and storeName for each product. Without a store or ZIP, pickup is skipped.

What do the pickup statuses mean? available means the item can be picked up today. delayed means pickup is possible but the site shows a later date range. out means the item is not available for pickup at that store.

How many products can I scrape in one run? Up to 500 via maxItems, read 120 tiles at a time. For larger catalogs, split the work by department, collection or keyword. Direct URL mode accepts up to 500 unique URLs and fetches the first maxItems of them.

Does byCategory cover every sub-category? The dropdown covers 17 top-level departments and curated collections. For a narrower slice, paste its URL into categoryUrl or use a keyword search.

Are variant prices included for every option? variants[] lists the selectable options and which one is selected. price and priceMax describe the product's price range, and skus[] lists all SKUs. Per-option prices are not invented when the site does not show them on the product summary.

How fresh is the data? Every run reads live World Market pages. There is no cached catalog, so prices, sale badges and pickup status reflect the moment of the run.

Do I need to set up a proxy? No. The actor connects directly first and only uses a proxy fallback if World Market blocks a request. You can optionally choose your own proxy in the advanced settings.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build Z35VNzyO9WZcnVPjc. Documentation is regenerated from the default published build; private drafts are not included.