Article Furniture Scraper avatar

Article Furniture Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Article Furniture Scraper

Article Furniture Scraper

Scrape Article.com's furniture catalog - browse any room/category or search by keyword, get prices (incl. sale), color/finish variants, images, and full product detail (dimensions, materials, reviews) by product ID or URL.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrape Article.com — the direct-to-consumer modern furniture brand. Browse any room or category (Living Room, Bedroom, Dining & Kitchen, Home Office, Entryway, Outdoor, Decor), browse by named furniture collection/line, search by keyword, or look up full product detail by product ID/URL. Get prices (including active sale and clearance prices), color/finish variants, images, dimensions, materials, review ratings, related products, and alternate size/configuration options. HTTP-only — no login, no cookies, no proxy required.

What this actor does

  • Four modes: byCategory (51 curated rooms/categories), byCollection (any named furniture collection/line, e.g. "Timber", "Ceni"), search (free-text keyword), byProductId (direct product lookup)
  • Real-time pricing: current price, retail (list) price, active sale price, active clearance price, currency
  • Color & finish variants: every fabric/finish option for a product, each with its own product URL and image
  • Alternate configurations: non-color product options (e.g. Sofa vs. Loveseat size, Fabric vs. Leather material), each linked to its own product ID
  • Cross-sell data: related products (with price/image) and similar-SKU product IDs
  • Full product detail: dimensions (W/D/H in inches), materials, care instructions, features, package dimensions, packaged item quantity, assembly-instructions PDF, review count/rating, taxonomy attributes (material, seating type, comfort level, etc.), SEO meta title/description
  • Delivery/availability signals: in-stock status, availability status, delivery-risk flag, region shipping restrictions
  • Filters: price range, on-sale-only, on-clearance-only, sort order (popularity / price / newest)
  • Empty fields are omitted

Output: per-product (mode = byCategory / search / byCollection)

  • productId, baseProductId, sku, title, slug, productUrl
  • isBundle, onSale, onClearance, isNewProduct, isEtaAtRisk, badges[]
  • currency, price, retailPrice, salePrice, clearancePrice, bundlePrice (multi-item bundle listings only)
  • imageUrl, settingImageUrl, images[], videoUrl
  • colorVariants[] (each: productId, title, colorOrFinish, slug, productUrl, imageUrl), colorVariantCount
  • restrictedRegions[] (state/region codes where shipping is restricted — only present when applicable)
  • recordType: "product", scrapedAt

Output: full product detail (mode = byProductId)

  • productId, baseProductId, sku, title, marketingTitle, slug, productUrl
  • description, colorOrFinish, availableCountries[]
  • inStock, status, isMakeToOrder, onSale, onClearance, isNewProduct, isEtaAtRisk, badges[]
  • currency, price, retailPrice, salePrice, clearancePrice, bundlePrice (multi-item bundle products only)
  • collectionId, collectionName, collectionSlug, collectionProductCount
  • reviewCount, reviewRating
  • categoryName, categoryBreadcrumb[], categoryBrowseUrl
  • careInstructions[], features[], specifications[] (key/value spec sheet), generalDimensions, materials
  • widthIn, depthIn, heightIn, packageDimensions (widthIn/depthIn/heightIn), packagedItemQuantity
  • assemblyInstructionsUrl
  • metaTitle, metaDescription
  • images[], videoUrl
  • colorVariants[], colorVariantCount
  • configurationOptions[] (non-color alternate configurations — e.g. size/seating/material — each with attribute, value, productId)
  • configuratorEnabled
  • relatedProducts[] (each: productId, sku, title, slug, productUrl, imageUrl, price, currency), similarProductIds[]
  • restrictedRegions[]
  • taxonomyAttributes[] (attribute/value pairs — material, seating type, width bucket, comfort level, room, etc.)
  • recordType: "productDetail", scrapedAt

Input

FieldTypeDefaultDescription
modestringbyCategorybyCategory / byCollection / search / byProductId
categorystring224/living-furnitureRoom/category to browse (mode=byCategory) — 51 options covering every room
collectionIdstring228/timberNamed collection/line to browse (mode=byCollection), in <id>/<slug> format or a full collection URL
searchQuerystringsofaFree-text keyword (mode=search)
productIdsarrayNumeric product IDs or full product URLs (mode=byProductId)
sortBystringpopularitypopularity / price-low / price-high / newest
minPriceintDrop products priced below this (USD)
maxPriceintDrop products priced above this (USD)
onSaleOnlyboolfalseOnly emit products currently on sale
onClearanceOnlyboolfalseOnly emit products currently on clearance (permanently-discounted discontinuing stock — distinct from a temporary sale)
maxItemsint48Hard cap (1–1000)
proxyConfigurationobjectAUTOOptional; only used as a fallback if the site briefly rate-limits requests

Example: browse a category, cheapest first

{
"mode": "byCategory",
"category": "27/sofas-sectionals",
"sortBy": "price-low",
"maxItems": 50
}

Example: search with a price cap and on-sale filter

{
"mode": "search",
"searchQuery": "dining table",
"maxPrice": 1500,
"onSaleOnly": true,
"maxItems": 30
}

Example: full product detail lookup

{
"mode": "byProductId",
"productIds": ["30333", "https://www.article.com/product/24154/timber-90-leather-sofa-charme-chocolat"]
}

Example: browse a named collection/line, clearance only

{
"mode": "byCollection",
"collectionId": "228/timber",
"onClearanceOnly": true,
"maxItems": 20
}

Use cases

  • Price monitoring — track sale/clearance pricing across Article's catalog over time
  • Competitive intelligence — benchmark DTC furniture pricing and product assortment
  • Interior design / sourcing — pull dimensions and materials for space planning
  • Affiliate / content sites — build furniture roundups with live pricing and images
  • Market research — analyze category breadth, new-arrival cadence, and review sentiment

FAQ

Is login required? No. All data is scraped from Article.com's public pages — no account, cookies, or API key needed.

Why do byCategory/search records have fewer fields than byProductId records? The category/search listing pages return a lighter product summary (price, images, color variants). Full specs — dimensions, materials, care instructions, review ratings — are only available on the live product-detail lookup, which the actor fetches directly per product ID.

What currency are prices in? USD. Article also serves Canada in CAD, but the CAD price isn't reachable via a plain URL parameter, so this actor reports US pricing only.

Why are salePrice/clearancePrice sometimes missing? They're only included when the product is actually discounted below its standard price. A product not currently on sale won't have those fields — that's expected, not a data gap.

What does colorVariantCount mean? The number of other color/finish options available for that product (e.g. a sofa offered in 4 fabrics). Each variant is listed in colorVariants[] with its own product URL.

Can I look up a product by URL instead of ID? Yes — mode=byProductId accepts either a bare numeric ID (e.g. 30333) or a full product URL.

What's the difference between byCategory and byCollection? byCategory browses by room/furniture type (e.g. "Sofas", "Coffee Tables") — the taxonomy Article's own navigation menu uses. byCollection browses by a named furniture line/design collection (e.g. "Timber", "Ceni") that can span multiple room categories and product types sharing the same design language. Find a collectionId by first running byCategory/search/byProductId and reading the collectionId/collectionSlug fields on any result, then feed <collectionId>/<collectionSlug> back in as collectionId.

What's the difference between onSaleOnly and onClearanceOnly? Sale items are temporarily discounted (the price recovers later); clearance items are permanently reduced because the SKU is being discontinued. A product can be on sale, on clearance, both, or neither — the two filters are independent and can be combined.

What are configurationOptions[]? Alternate non-color configurations of the same base design — most commonly size/seating variants (e.g. Sofa vs. Loveseat vs. Sectional) or material variants (e.g. Fabric vs. Leather) — each pointing at the specific product ID for that configuration. Color/finish variants are covered separately by colorVariants[] and aren't duplicated here.

What are relatedProducts[] and similarProductIds[]? Article's own "you may also like" and "similar items" recommendations for a product — useful for building product graphs or cross-sell suggestions without additional lookups.

Does byProductId work for bundles (e.g. a rug + rug pad set)? Bundle IDs look like BUNDLE-767. They resolve reliably from byCategory/search (as a lighter summary record), but Article's bundle detail pages don't expose the same structured product data as regular product pages, so byProductId can't return a full detail record for a bundle — it's skipped with a logged notice rather than returning partial/fabricated data.

Is this affiliated with Article? No. This is an independent, third-party actor that reads Article.com's public pages.

Limitations

  • Prices and stock reflect what Article's site shows at scrape time and can change without notice.
  • category covers 51 curated rooms/subcategories from Article's own navigation; a handful of very narrow sub-collections (e.g. seasonal campaign pages) aren't included.
  • collectionId isn't a closed dropdown (Article publishes 300+ collections and periodically adds/retires them), so it's entered as free text rather than a fixed list — get a current, valid value from any product's collectionId/collectionSlug output field.
  • restrictedRegions, isEtaAtRisk, configurationOptions, and relatedProducts are only present when Article's own data has something to report for that specific product (e.g. most products ship everywhere and aren't region-restricted) — this is expected, not a data gap.
  • The site applies a short-lived rate limit to bursts of rapid requests; the actor retries automatically and this is not user-visible under normal use.
  • The first page of results (~48-50 items) is always reliable for both byCategory and search. Article's own pagination backend intermittently (non-deterministically) takes a moment to make page 2+ available — a source-side quirk, not specific to this actor. The actor retries automatically and never returns duplicate records, but a run with a high maxItems can occasionally return somewhat fewer items than requested if a deep page doesn't become available within the retry budget. Re-running the same request typically fills in the gap.
  • sortBy=price-high/price-low reflects Article's own search ranking, which occasionally interleaves a small number of items slightly out of strict price order (e.g. bundled "sets" priced alongside individual pieces) — the actor passes the sort straight through without re-ordering client-side, so this matches what Article's own site shows for the same query.