Nitori Japan Furniture & Home Goods Scraper at a glance
Nitori Japan Furniture & Home Goods Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes image, name, change type (incremental mode), product code and brand, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.50 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Ecommerce, Automation, Developer Tools
- Region
- Asia
- Pricing
- $2.50 per 1,000 results (Free plan), from $1.50 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 26 options
Scrape Nitori Japan (nitori-net.jp) furniture and home goods by keyword, category or pasted link. Filter by category, brand, colour and price. Returns name, code, price, original price, images, variants, specifications, delivery and assembly terms and reviews. Incremental mode tracks daily changes.
What Nitori Japan Furniture & Home Goods Scraper can do
- Two ways to find products. Search by keyword, browse a whole category with no keyword at all, or paste product, category and search links, mixed freely with bare product codes.
- The store's own filters, applied at the source. Category, brand, colour, price range, sale-only, stock and rating narrow the result count on the store's own catalogue, in both search and url mode.
- Full detail on demand. Switch on specifications, delivery and assembly terms, the full media gallery, colour and size variants, and the original pre-discount price, and pay the detail surcharge only when you use it.
- Customer reviews included. Average rating, the per-star breakdown, and individual review rows with author, date, rating, text, helpful count and photos.
- Native JPY pricing. This is a single-market, Japanese-language storefront, so every price and field comes back exactly as the store reports it, no currency conversion involved.
- Built for schedules. Incremental mode returns only new, updated and reappeared products on recurring runs, and a refused run fails loudly instead of returning an empty dataset.
Choose what to collect
These inputs let you configure Nitori Japan Furniture & Home Goods Scraper. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | Choose 'search' to search the catalogue by keyword and filters, or 'url' to scrape pasted links: product pages, category pages, search result pages and bare product codes are all accepted. |
queriesarray | Only used when mode = search, ignored in url mode. One or more keywords, for example ソファ (sofa), ベッド (bed) or カーテン (curtain). Leave empty to browse by Category, Brand or Colour alone. |
urlsarray | Only used when mode = url, ignored in search mode. Mix freely: product pages under /ec/product// , category pages under /ec/cat/... , search pages under /ec/search?q=... , or a bare product code such as 5612330s . |
categoriesarray | Optional. Keep only products in these store categories. Combine with a keyword, or use on its own to browse a whole category. Selecting several returns products matching all of them, so pick one top-level category unless you are deliberately narrowing. |
brandsarray | Optional. Keep only products from these store brands. Selecting several returns products from any of them, so picking more brands returns more products. Leave empty for all brands. |
colorsarray | Optional. Keep only products available in these colours. Selecting several returns products in any of them, so picking more colours returns more products. |
minPriceinteger | Optional. Keep only products priced at or above this amount, in Japanese yen. Applied by the store itself, so it narrows the result count at the source. |
Show 19 more inputs
| Input | What it controls |
|---|---|
maxPriceinteger | Optional. Keep only products priced at or below this amount, in Japanese yen. Applied by the store itself, so it narrows the result count at the source. |
onSaleOnlyboolean | Optional. Keep only products the store currently flags as reduced. Turn on Fetch product details as well to get the original pre-discount price and the discount amount, which the listing page does not carry. |
inStockOnlyboolean | Optional. Keep only products the store will currently accept an order for. Requires Fetch product details, because order availability is only published on the product page. |
minRatingstring | Optional. Keep only products whose average customer rating is at least this many stars. Products with no rating at all are excluded when this is set. |
sortBystring | The order the store returns results in. Recommended, most reviewed and newest are the store's own orderings. |
fetchDetailsboolean | Read each product's own page to add the description, full specifications (dimensions, material, weight, country of origin), delivery, assembly and returns terms, the full image gallery, videos, assembly manuals, the colour and size variants, and the original pre-discount price. Turn off for a faster, cheaper run that returns listing fields only. |
includeReviewsboolean | Add each product's customer reviews: average rating, the per-star breakdown, and the individual reviews (author nickname, date, rating, title, text, helpful count and any photos). Requires Fetch product details. A product with no reviews returns an empty reviews list. |
maxReviewsPerProductinteger | Cap on how many individual reviews are returned per product. The average rating, review count and per-star breakdown are always complete regardless of this cap. Capped at 1000 per product; 0 uses the default of 20. |
maxItemsinteger | Maximum number of products to return across the whole run. This is the run's cap. Use 0 for unlimited. |
maxPagesinteger | Maximum number of result pages read per keyword, category or link. 0 means no limit, which is the default: the run then stops only at Max products, at the end of the results, or when a page returns nothing new. |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue a large catalogue pull without returning or charging for products already collected there. Use this after an interrupted run. For recurring daily monitoring of the same search, use Incremental mode below instead. |
incrementalModeboolean | Turn this on for daily or recurring monitoring. The first run returns every matching product as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED products. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). State is kept separately for each search, filter and detail setup; use State key to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the search, filters and detail settings, so different searches never mix state with each other. |
emitUnchangedboolean | Off by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want the full snapshot every run. |
emitExpiredboolean | Off by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, so never when Max products capped it or when Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking. |
ignoreFieldsForChangesarray | Optional. Field names to exclude from UPDATED change detection, in addition to the built-in handling (reviews, the scrape time and the search route already never trigger a false UPDATED). Use this if another field in your setup turns out to be noisy, for example images or badges. A dotted name such as variants.image ignores that key inside every variant while the rest of each variant still counts. Ignored fields are still returned in the output. |
mcpConnectorsarray | Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
imageImage (image)nameNamechangeTypeChange type (incremental mode) (text)productIdProduct codebrandBrandpricePrice (JPY)originalPriceWas (JPY)discountPercentDiscount %currencyCurrencyonSaleReduced (boolean)inStockOrderable (boolean)ratingRatingShow 22 more fields
reviewCountReviewscategoryNameCategorycategoryPathCategory pathdimensionsDimensionsmaterialMaterialdeliveryMethodDeliveryurlURL (link)changedFieldsChanged fields (incremental mode) (array)firstSeenAtFirst seen (incremental mode) (date)lastSeenAtLast seen (incremental mode) (date)summarySummarydescriptionDescriptionpackingSizePacking sizeweightWeightcolorColourcountryOfOriginCountry of originwarrantyYearsWarranty (years)assemblyRequiredAssembly required (boolean)specificationsSpecificationsvariantsVariantsscrapedAtScraped at (date)reviewsreviewsExample output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"productId": "9987654s",
"name": "サンプルカウチソファ (EXAMPLE)",
"brand": "ニトリ",
"brandCode": "001",
"url": "https://www.nitori-net.jp/ec/product/9987654s/",
"breadcrumb": [
"ソファ",
"カウチソファ"
],
"categoryPath": "ソファ > カウチソファ",
"categoryName": "カウチソファ",
"price": 45800,
"priceFormatted": "¥45,800",
"originalPrice": 52800,
"discountAmount": 7000,
"discountPercent": 13.3,
"discountDate": "2026/03/01",
"currency": "JPY",
"onSale": true,
"isOutlet": false,
"loyaltyPoints": 208,
"inStock": true,
"rating": 4.2,
"reviewCount": 62,
"ratingBreakdown": {
"1": 2,
"2": 3,
"3": 8,
"4": 19,
"5": 30
},
"reviews": [
{
"reviewId": "EXAMPLE-REVIEW-0001",
"title": "満足しています (EXAMPLE)",
"text": "サイズ感もちょうど良く、組み立ても簡単でした (EXAMPLE)。",
"rating": 4,
"date": "2026-04-02T09:00:00Z",
"author": "サンプル利用者",
"authorGender": "女性",
"authorAgeGroup": "40代",
"helpfulCount": 2,
"images": [
"https://example.invalid/review-photo.jpg"
],
"variantName": "サンプルカウチソファ (EXAMPLE BE)"
}
],
"dimensions": "幅150×奥行80×高さ70cm",
"weight": "約38kg",
"material": "合成皮革",
"color": "ベージュ",
"countryOfOrigin": "ベトナム",
"warrantyYears": "3年",
"assemblyRequired": true,
"assemblyTime": "20分",
"deliveryMethod": "玄関先までのお届け (EXAMPLE)",
"shippingNote": "個別送料あり (EXAMPLE)",
"storePickup": "可能 (EXAMPLE)",
"returnsPolicy": "店舗ポリシーに準じます (EXAMPLE)",
"homeDeliveryAvailable": true,
"variants": [
{
"variantId": "EXAMPLE-VARIANT-01",
"skuCode": "EXAMPLE-SKU",
"optionType": "カラー",
"optionValue": "ベージュ",
"price": null,
"onSale": false,
"selected": true,
"image": "https://example.invalid/swatch.jpg"
}
],
"images": [
"https://example.invalid/product-01.jpg"
],
"videos": [],
"assemblyManuals": [
"https://example.invalid/manual.pdf"
],
"specifications": {
"size": "幅150×奥行80×高さ70cm",
"material": "合成皮革"
},
"searchMode": "search",
"scrapedAt": "2026-01-01T00:00:00Z"
}Ways to use this data
- Price and discount monitoring: track reduced-price products, the original versus current price, and discount timing across a category or search.
- E-commerce competitor research: benchmark Nitori's furniture and home-goods assortment, pricing and stock levels against your own catalogue.
- Product data feeds: build a JPY-priced product feed with specifications, images and colour or size variants for a comparison site or marketplace.
- Customer sentiment analysis: collect review text, ratings, photos and the per-star breakdown to track product reception over time.
- Recurring catalogue monitoring: schedule the actor to catch new arrivals, price changes and out-of-stock items as they happen, billed only for what changed.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Nitori Japan Furniture & Home Goods Scraper return?
The documented output for Nitori Japan Furniture & Home Goods Scraper includes image, name, change type (incremental mode), product code, brand, price (jpy), was (jpy) and discount %. Availability of each field depends on the source page and the selected mode.
How much does Nitori Japan Furniture & Home Goods Scraper cost?
It costs $2.50 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Can I get only new or changed products on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared products, and unchanged ones are not billed by default.
Does this cover Nitori's stores outside Japan?
No. nitori-net.jp is a single-market, Japanese-language catalogue priced only in JPY, and this actor is built for it specifically. Nitori's Taiwan, Singapore and Korea storefronts run on separate platforms with their own product data and URLs; this actor's addresses do not resolve on them.
Why did my run fail instead of returning an empty dataset?
If no results page could be loaded at all, the run fails with the message "Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search. Please try again later." so "no products matched" is never confused with "nothing could be read". If only some pages could be read, you still get what was found.
Why does a scheduled run sometimes mark a product EXPIRED even though it still looks available on the store?
This happens only with Incremental mode and Emit expired products both on, and only when a run has multiple overlapping keywords or links that scan some of the same products. See the tips under How to Use for the trigger and workaround; running each keyword as its own campaign avoids it.
