World Market product scraper in n8n
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.
What this workflow does
Import it and n8n runs the World Market Product Scraper Actor on Apify every day at 08:00 with the starter input below. Each row comes back with title, price, original price, sale badge and 7 more; repeats with the same productUrl are dropped. A Google Sheets append is included and stays off until you add your sheet. The only credential it needs is your Apify API token.
Read from the workflow file, built for World Market Product Scraper version 1.2.1. Updated 2026-11-14.How the rows travel
6 nodes, in the order n8n runs them. The yellow stop is the call to the Apify Actor; the dashed stop is optional.
- Daily trigger Schedule trigger
- Configure input Code
- Run Apify Actor HTTP Request
- Normalize + dedupe Code
- Rows ready No operation
- Google Sheets (optional) Google Sheets, off until you switch it on
From the Short
This workflow is the one the video points to: the number in each video opens this page.
Input
The Configure input node holds the starter input. Change it there; every setting the Actor accepts is listed below.
{
"maxItems": 25,
"mode": "search"
} | Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| mode | string | Yes | search | What to fetch. search uses a keyword, byCategory browses a department or collection, and byProductUrls reads the URLs you paste. One of: search, byCategory, byProductUrls. |
| searchQuery | string | No | candle | Keyword to search for (mode=search), e.g. candle, dining chair, chocolate. |
| category | string | No | – | A World Market department or curated collection. Use categoryUrl instead if you want a sub-category that is not listed here. 17 choices. |
| categoryUrl | string | No | – | A worldmarket.com category or collection URL, e.g. https://www.worldmarket.com/c/furniture/shop-all-furniture/. Takes priority over category. |
| productUrls | array | No | – | Direct worldmarket.com product-page URLs, e.g. https://www.worldmarket.com/p/-.html. Up to 500 unique URLs per run. |
| sortBy | string | No | bestselling | Sort order for search and department results. bestselling and newArrivals keep World Market's own listing order. One of: bestselling, newArrivals, ratingHighToLow, priceLowToHigh, priceHighToLow. |
| minPrice | integer | No | – | Drop products whose current price is below this amount. |
| maxPrice | integer | No | – | Drop products whose current price is above this amount. |
| maxItems | integer | No | 20 | Hard cap on emitted products (1–500). Search and department pages are read 120 tiles at a time. |
| storeId | string | No | – | A World Market store ID such as store398. Used only when includePickup is enabled. If omitted, the nearest store is resolved from postalCode. |
| postalCode | string | No | – | US ZIP code used to resolve the nearest store when storeId is not set and includePickup is enabled. |
| includeVariants | boolean | No | true | Include the selectable color, size or fragrance options for products that have them (up to 20). |
| includePickup | boolean | No | false | Add per-store pickup status, quantity and message. Requires storeId or postalCode. |
| proxyConfiguration | object | No | – | 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. |
What each row holds
Every field the Actor returns stays in the row (11 in its dataset schema). Normalize + dedupe trims text, drops empty fields, removes repeats with the same productUrl and adds _source and _scrapedAt. The main fields:
| Field | What it is |
|---|---|
| title | Title |
| price | Price |
| originalPrice | Original Price |
| saleBadge | Sale Badge |
| brand | Brand |
| sku | Sku |
| availability | Availability |
| pickupStatus | Pickup Status |
| rating | Rating |
| reviewCount | Review Count |
| productUrl | Product Url |
What the first run costs
With the starter input (maxItems = 25) a first run costs about $0.42 on the Apify Free plan: $0.40 to start the run at 4 GB of memory and $0.02 for the results, plus platform usage.
The Actor lists $0.99 per 1,000 results; its catalogue page breaks the price down by Apify plan. The Apify Free plan includes $5 of usage a month.
The Actor behind it
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.
The same job from an AI agent
The matching agent skill gives Claude Code, Codex, Cursor and other agents the same Actor, input and fields. Install it in one line:
npx skills add https://scraperfinder.com --skill world-market-product-scraper The world Market product scraper skill, with manual install and run steps
Questions people ask
How do I import this workflow into n8n?
Copy https://scraperfinder.com/n8n/world-market-product-scraper.json. In n8n, open a new workflow, click the three-dot menu, choose Import from URL and paste it. Or download the JSON file and use Import from File; both give the same 6 nodes.
Do I need an Apify account?
Yes. The workflow calls the World Market Product Scraper Actor through the Apify API with your own token, and each run is billed to your Apify account. The Free plan includes $5 of usage a month.
What does a run cost?
With the starter input (maxItems = 25) a first run costs about $0.42 on the Apify Free plan: $0.40 to start the run at 4 GB of memory and $0.02 for the results, plus platform usage. The Actor's Store page shows the current price.
Can I change what it collects?
Yes: edit the input object in the Configure input node. The Actor takes 14 settings; the table on this page lists each one with its default. Raise maxItems once the first rows look right.
Does it work without Google Sheets?
Yes. The rows wait in the Rows ready node, so you can connect any other node there: a database, Airtable, a webhook or an email. The Google Sheets node is only one option.