Skip to content
    ↑↓ to choose · Enter to open

    · 14 min read

    Chairish Furniture Scraper: 36 Data Fields per Record (2026)

    By CrawlerBros Engineering Team

    Each record carries 36 output fields, capturing dimensions in inches, condition, material, pricing, seller location, and image arrays. At the free-plan price of $5.00 per 1,000 results, this Actor provides structured catalog data straight from public listing markup across 4 distinct browse and lookup modes. It is built for interior designers, stylists, and antique dealers needing item measurements and seller details for sourcing projects. It is not for anyone who needs buyer contact details, which the records do not include, nor for operators needing direct seller email addresses or phone numbers.

    Try it: open Chairish Furniture Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try Chairish Furniture Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Chairish Furniture Scraper a month, before run-start charges and platform usage.

    Chairish Furniture Scraper was last updated on 2026-08-03. It is one of 1,724 Actors CrawlerBros publishes on Apify, which together have 734,650 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run Chairish Furniture Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    The maxItems setting directly controls the volume of results written to your dataset, while the run-start fee applies every time a run begins. Keeping maxItems low during initial tests lets you verify your collection handle or search keywords before scaling up dataset output. Testing filters with short runs also lets you observe server-side facet behavior before accumulating larger result fees.

    How do you run Chairish Furniture Scraper from the API?

    The schema marks 1 of its 25 controls as required: mode. Every value in the payload below comes from the published schema's own prefills, which means you can paste it, swap the token, and get a real result.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~chairish-furniture-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"collection","sellerSlug":"schumacher"}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "collection",
      "sellerSlug": "schumacher"
    }
    
    run = client.actor("crawlerbros~chairish-furniture-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "collection",
      "sellerSlug": "schumacher"
    }
    
    const run = await client.actor('crawlerbros~chairish-furniture-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    That endpoint blocks until the run completes. Fine while you are testing a handful of records, risky once a run takes minutes: a dropped connection loses the response even though the run itself finished. Switch to an asynchronous start with polling or a webhook before you schedule anything.

    Which Chairish Furniture Scraper inputs matter, and which can you skip?

    The mode parameter is the only required input among the 25 controls, choosing between category browsing, keyword search, seller shops, or direct URLs. When running mode set to collection, collectionHandle determines which taxonomy path to fetch. Most first runs should leave dimension sliders, color facets, and refurbished overrides blank until baseline results are confirmed.

    • mode (string): What to fetch. Default: "collection".
    • sellerSlug (string): Chairish seller/dealer shop slug (e.g. schumacher) or a full chairish.com/shop/<slug> URL. Required for mode=bySeller. Returns that seller's real catalog, paginated, with the same price/color/style/sort filters as collection/search. Default: "".
    • collectionHandle (string): Category to browse, from Chairish's own collection facets. Required for mode=collection. (Only the listed values are accepted -- the platform's input validation rejects any other slug, even though chairish.com hosts additional collection pages; use mode=byUrls to fetch one of those directly.) Default: "sofas".
    • searchQuery (string): Free-text keyword search, e.g. mid century credenza, walnut desk, art deco mirror. Default: "mid century credenza".
    • productUrls (array): Exact chairish.com product or collection URLs to fetch directly. Default: [].
    • minPrice (integer): Drop listings priced below this. Applied server-side via Chairish's own "Price" facet (mode=collection, search, bySeller), so it narrows the source results (not just a post-filter); always applied as a post-filter too.
    • maxPrice (integer): Drop listings priced above this. Applied server-side via Chairish's own "Price" facet (mode=collection, search, bySeller), so it narrows the source results (not just a post-filter); always applied as a post-filter too.
    • condition (string): Restrict results to one item condition. New and Used are applied server-side via Chairish's own item_type facet (narrows the source results, not just a post-filter); Refurbished is a post-filter only (Chairish has no server-side facet for it). Not available in mode=byUrls. Default: "".
    • color (string): Restrict results to one Chairish color-swatch facet. Applied server-side on collection/search (narrows the source results, not just a post-filter); also used as a substring post-filter against the listing's color field in every mode. Default: "".
    • freeShippingOnly (boolean): Restrict results to items with free shipping. Applied server-side via Chairish's own shipping-options facet, so it narrows the source results (not just a post-filter). Not available in mode=byUrls. Default: false.
    • underFiftyShippingOnly (boolean): Restrict results to items with shipping cost under $50. Applied server-side via Chairish's own "Shipping Options" facet, so it narrows the source results (not just a post-filter). Ignored if freeShippingOnly is also on (free shipping is a strict subset). Not available in mode=byUrls. Default: false.
    • style (string): Restrict results to one Chairish design-style facet (e.g. Mid-Century Modern, Art Deco). Applied server-side, so it narrows the source results (not just a post-filter). Not available in mode=byUrls. Default: "".

    The other 13 controls, with their defaults, are listed in the input schema on Chairish Furniture Scraper on Apify.

    Fixed-choice controls: mode accepts collection (Browse a category collection), search (Search by keyword), byUrls (Lookup by product/collection URL), bySeller (Browse a seller's shop); collectionHandle accepts 37 values (default sofas), including sofas, new-arrivals (New Arrivals), sectionals, loveseats-and-settees (Loveseats & Settees); condition accepts "" (Any condition), New, Used (vintage/antique), Refurbished; color accepts 18 values (default ""), including "" (Any color), Red, Orange, Yellow; style accepts 50 values (default ""), including "" (Any style), Mid-Century Modern, Modern, Traditional.

    What does Chairish Furniture Scraper return?

    Returned datasets supply physical dimensions in depthIn, heightIn, and widthIn, alongside taxonomy paths, markdown flags, and seller location strings. They conspicuously omit seller contact phone numbers and private email addresses, as well as exact shipping costs and lead times. This makes them well-suited for catalog aggregation and stylistic sourcing, but not for direct logistics estimation.

    • productId, title, productUrl, sourceUrl
    • description
    • price, currency, priceValidUntil, availability
    • condition - New / Used / Refurbished
    • category - Chairish's full taxonomy path (e.g. Furniture > Chairs > Arm Chairs, Recliners & Sleeper Chairs)
    • color, material, brand
    • depthIn, heightIn, widthIn - dimensions in inches
    • sellerName, sellerImageUrl, sellerRegion, sellerLocality, sellerCountry
    • sellerSlug - the Chairish shop slug queried; present only on mode=bySeller records
    • sellerRating, sellerReviewCount - seller's aggregate rating (1-5 scale); only present on individual product-detail fetches (mode=byUrls, or when a listing/search result is opened for detail), not on collection/search listing pages
    • discountPercentage, onSale - present when Chairish is currently running a markdown on the listing (scraped from the same results page, not a separate fetch); onSaleOnly filters to these
    • taxonomyPath[] - Chairish's own internal category breadcrumb (e.g. ["Decor", "Room Accents & Accessories", "Candles & Home Fragrance", "Candle Holders", "Candelabras"]), more granular than category
    • isLocalPickupAvailable, isMadeToOrder, isNewlyMade, isPromotedListing - real-time listing flags scraped from the same page (no extra fetch)
    • imageUrl, imageUrls[]
    • recordType: "product", scrapedAt

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Chairish Furniture Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Choose your extraction target by setting the mode control to collection, search, byUrls, or bySeller.
    2. If mode is collection, select an available category slug like sofas or credenzas in collectionHandle.
    3. If mode is search, set searchQuery to your phrase, such as mid century credenza.
    4. Narrow results server-side by applying physical limits with minWidthIn, maxWidthIn, minHeightIn, or maxHeightIn.
    5. Set price limits with minPrice and maxPrice, or toggle onSaleOnly to capture discounted inventory.
    6. Set maxItems to a modest count such as 10 to inspect initial results before committing to a larger scrape.
    7. Execute the run and check the dataset items to verify that depthIn, heightIn, and widthIn are populated as expected.

    How do you apply it? Three worked playbooks

    These are Chairish Furniture Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Interior designers & stylists

    Outcome: Source one-of-a-kind vintage and antique pieces by category, style, and dimensions for client projects.

    Configure: Set mode to "collection", collectionHandle to "accent-chairs", style to "Mid-Century Modern", maxWidthIn to 32, and maxPrice to 1500.

    Working method: Execute the run with the dimensional threshold and inspect the dataset to verify that widthIn falls below 32 inches. Widen your criteria across related categories like chairs if inventory is sparse.

    Deliverable: A structured CSV file of matching mid-century modern accent chairs meeting the dimensional constraint, with pricing, materials, and photos.

    Stop condition: Returned items show widthIn values greater than 32 inches.

    Use case 2: Vintage/antique resellers

    Outcome: Monitor a competitor's or supplier's Chairish shop (bySeller) for new inventory and pricing.

    Configure: Set mode to "bySeller", sellerSlug to "schumacher", sortBy to "-last_activity_at", and maxItems to 50.

    Working method: Run an initial scrape to catalog current inventory, then trigger weekly runs with the same settings. Compare the returned productId and price values against the prior baseline to spot fresh listings and price cuts.

    Deliverable: A JSON feed tracking newly added inventory and price updates from the specified dealer shop.

    Stop condition: The run returns zero items for a seller slug known to have active listings on the site.

    Use case 3: Deal hunting

    Outcome: Filter for onSaleOnly or discounted listings across a category or seller's shop.

    Configure: Set mode to "collection", collectionHandle to "credenzas", onSaleOnly to true, and maxItems to 100.

    Working method: Start with onSaleOnly enabled on a single category, verify that returned listings show onSale set to true, and sort by discountPercentage in descending order.

    Deliverable: A spreadsheet listing active discounted credenzas sorted from highest discount percentage to lowest, complete with direct product URLs.

    Stop condition: Records returned have onSale set to false or missing.

    What breaks, and how do you design around it?

    • Chairish is a US-focused marketplace; prices are in USD and sellers are predominantly US-based.
    • collectionHandle accepts a curated list of the most common furniture/decor categories plus free-text override; the site has 190+ collections (including jewelry, books and seasonal collections outside furniture/decor scope).
    • Individual seller shipping cost and lead time are not part of the structured listing data and are not included.

    Chairish is a US-focused marketplace with prices in USD and mostly US-based sellers. The collectionHandle setting only accepts a curated list of furniture and decor categories; use mode set to byUrls if you need to fetch seasonal collections or uncategorized site URLs. If you require shipping charges or lead times, handle these downstream because they are not part of the structured listing data.

    When should you not use Chairish Furniture Scraper?

    Do not use this Actor if your target inventory consists of mainstream, new mass-market retail goods rather than curated vintage and antique pieces. In that scenario, browse conventional retail catalogs with At Home Scraper - Furniture, Decor & Rugs instead. You should also look elsewhere if you need direct seller phone numbers or email addresses, as Chairish does not expose off-platform contact information in public listing markup. If you require coverage across general luxury resale merchandise beyond furniture and decor, evaluate 1stDibs Scraper or WGACA Luxury Vintage Resale Scraper.

    What should you check before trusting the output?

    • Verify that widthIn, heightIn, and depthIn contain positive numeric values on records where dimensions are required.
    • Check that condition is populated with New, Used, or Refurbished rather than empty.
    • Confirm that currency equals USD and price contains a positive integer.
    • Check that imageUrls is present as a non-empty array with accessible Chairish image links.
    • Confirm that sellerName, sellerCountry, and sellerLocality are populated with valid text.

    None of this proves a record is correct. It gives a scheduled Chairish Furniture Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    Can I test this Actor before paying?

    Apify's free plan includes $5.00 of monthly usage with no credit card, covering up to 1,000 results of this Actor. At the free-plan price of $5.00 per 1,000 results, you can execute trial runs across small batches without incurring unexpected costs.

    Does the scraper capture exact shipping costs?

    No. Individual seller shipping cost and lead time are not part of the structured listing data and are not included in the output. You can, however, use the freeShippingOnly or underFiftyShippingOnly filters to restrict items by shipping tier.

    How does condition filtering work?

    Selecting New or Used applies a server-side facet directly on the source marketplace. Setting condition to Refurbished operates as a client-side post-filter because Chairish has no dedicated server-side facet for it.

    Why do some listings omit seller review counts?

    Seller ratings and review counts appear only when fetching full product-detail pages, such as when using mode set to byUrls. Collection and keyword search listing cards omit these fields.

    Can I browse a specific dealer's inventory?

    Yes. Set mode to bySeller and supply the shop identifier in sellerSlug. The Actor fetches that dealer's catalog and supports the same pricing, condition, and dimension filters available in collection mode.

    Where to go next

    When you are ready to run it, open Chairish Furniture Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the Chairish Furniture Scraper Actor page for the current input schema, pricing tier, and run history.

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-10-04.

    • Actor last updated by its maintainers on 2026-08-03.

    • Run outcome figures cover the 30 day public window ending 2026-10-04.

    • Chairish Furniture Scraper on Apify

    Featured actors

    Chairish Furniture Scraper

    Scrape vintage, antique and designer furniture and decor listings from chairish.com. Browse a category, search by keyword, or fetch exact URLs. Returns price, condition, dimensions, materials, seller and images.

    Run on Apify ↗