Chairish Scraper: New Listings & Price Drops (USD) avatar

Chairish Scraper: New Listings & Price Drops (USD)

Pricing

from $1.05 / 1,000 listing scrapeds

Go to Apify Store
Chairish Scraper: New Listings & Price Drops (USD)

Chairish Scraper: New Listings & Price Drops (USD)

Chairish scraper: search terms or list pages to one row per listing with USD price, price before reduction, discount percent, condition, designer, colour, material, size, category and seller. Sort newest first for a vintage furniture new-listing feed.

Pricing

from $1.05 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Superslow Sloth

Superslow Sloth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Search Chairish (the US marketplace for vintage and designer furniture and decor) by keyword, or read a collection, keyword, maker, shop or style page, and get one flat row per listing: the price in USD, the price before the seller's reduction and the percent off, condition, designer, colour, material, size, category, seller and the photo. Sort Newest and run it on a schedule to get a new-listing feed for vintage furniture dealers and interior designers; keep onlyOnSale on to get a price-drop watch.

No account, no API key, no login, no browser. One request returns 48 listings.

Input

FieldNotes
searchTermsOne or more search terms, one per line (mid century lamp, travertine coffee table). A term Chairish recognises is sent to its own list page (lamp goes to /collection/lamps), and that whole list is read; any other term is read as search results. A listing found by two terms is returned once, under the first.
startUrlsChairish pages to read in full: https://www.chairish.com/collection/new-arrivals (the newest listings), any /collection/..., /keyword/..., /maker/..., /shop/... or /style/... page, or a search URL (/search?q=..., read as that term). A price filter copied from the site (?price=100-200) is kept. Product pages are refused. Give terms, URLs or both.
maxItemsListings to read per term or page (default 100, up to 4,752). 48 per page.
onlyOnSaleReturn only listings the seller has reduced (on_sale). Listings that are not reduced are read, not returned and not charged, and do not count toward maxItems.
sortrelevance (Chairish's Curated default), newest, price-asc, price-desc, most-favorited: the choices of the site's own sort menu.
proxyConfigurationApify datacenter proxy by default.

Example input, a new-listing feed of lamps:

{
"searchTerms": ["lamp"],
"maxItems": 200,
"sort": "newest"
}

Example input, reduced mid-century pieces between $100 and $500:

{
"startUrls": [{"url": "https://www.chairish.com/style/mid-century-modern?price=100-500"}],
"maxItems": 300,
"onlyOnSale": true,
"sort": "price-asc"
}

Output

Prices are numbers in US dollars; currency is USD (every listing measured).

FieldNotes
query, positionThe search term or page URL that first found the listing, and its place in Chairish's list for that source and sort (1 is first).
listing_id, urlChairish's listing id (36744474) and the listing link.
title, image_urlAs the page shows them. image_url is the first photo (WebP).
priceThe price Chairish shows now.
original_priceThe price before the seller's reduction. Null when the listing is not reduced, never equal to price.
on_saleTrue when Chairish shows the listing as reduced (a price before the reduction).
discount_percentThe percent off as Chairish prints it ("10% Off"), a whole number. Null when not reduced. Chairish rounds, so it can differ by one from working it out from the two prices.
price_unititem or set when the page says how the price is quoted; null for most listings.
categoryChairish's category path, e.g. Lighting/Lamps/Table Lamps.
status, purchasable, quantity, on_holdListed for Purchase or At Auction; false for an auction lot; units for sale (always 1 so far); whether a buyer holds it.
promoted, newly_made, made_to_order, local_pickupChairish's flags: a promoted (ad) tile, a new piece from a maker, made to order, local pickup offered.
ships_toCountry codes the listing ships to (["US"]); empty when not sent.
seller_idChairish's seller id (mjs6jz); https://www.chairish.com/shop/<seller_id> is the seller's page.
conditionnew, used or refurbished.
seller_countryThe seller's country code.
designerThe designer or maker, when the listing names one.
color, materialAs the seller entered them.
width_in, depth_in, height_inSize in inches when the listing gives it.
descriptionThe seller's description, line breaks kept.

Example row (real values, 2026-10-17):

{
"query": "https://www.chairish.com/collection/new-arrivals",
"position": 6,
"listing_id": "37559143",
"title": "1 of 2 Randolph & Hein English Roll Arm Down Filled Club Chair",
"url": "https://www.chairish.com/product/37559143/1-of-2-randolph-hein-english-roll-arm-down-filled-club-chair",
"image_url": "https://chairish-prod.freetls.fastly.net/image/product/sized/f12504b2-0c32-4239-834e-af8cb1d04d42/1-of-2-randolph-and-hein-english-roll-arm-down-filled-club-chair-7779",
"currency": "USD",
"price": 2950.0,
"original_price": 5250.0,
"on_sale": true,
"discount_percent": 44.0,
"price_unit": "item",
"category": "Furniture/Seating/Accent Chairs/Club Chairs",
"status": "Listed for Purchase",
"purchasable": true,
"quantity": 1,
"on_hold": false,
"promoted": false,
"newly_made": false,
"made_to_order": false,
"local_pickup": true,
"ships_to": ["US"],
"seller_id": "08dgah",
"condition": "used",
"seller_country": "US",
"designer": "Randolph & Hein",
"color": "Beige",
"material": "Chenille/Feather",
"width_in": 40.0,
"depth_in": 38.0,
"height_in": 35.0,
"description": "Randolph & Hein English Roll Arm Down Filled Club Chair. ..."
}

Honest nulls

A field the page did not send is null, never 0 or "". ships_to is an empty list when the page sends none.

  • condition, seller_country, designer, color, material, the three sizes and description come from the page's structured data, which names a group of colour variants of one design by its first member: ten tiles of one glass table can arrive as three listing ids. A tile whose own id the structured data does not carry gets null in these fields. It is never given a sibling colour's values. On ordinary pages this is one tile in 48 or none; on a search full of colour variants (abacus) it is most of them.
  • original_price and discount_percent are null on a listing that is not reduced.
  • No listing date. Chairish's page does not give one. sort: newest is the site's own "Newest" sort, ordered by the seller's most recent activity, so an older listing that was just relisted or reduced appears near the top. Keep the listing_ids you have seen and diff against them to find what is new.
  • No seller name or rating, no shipping price. Not in the list pages.

Pricing

Pay per event:

  • $0.002 per run (actor-start), charged only after your input is validated, so a run that fails on bad input costs nothing.
  • $0.00105 per listing row written (listing-scraped), i.e. $1.05 per 1,000 listings. A row that is not written is not charged: rows filtered by onlyOnSale, and repeats of a listing another term already returned, are free.

How it fetches

It reads the product grid that chairish.com's own search and list pages embed in their page data, plus the page's structured data for the extra fields. Measured 2026-10-17: HTTP 200 HTML (0.4 to 1 MB a page) from a plain home connection and from an Apify datacenter address, no key or cookie needed. A refusal (403, 429, 5xx), a 200 that is not a Chairish page, or a dropped connection is treated as the address being blocked, and the actor rotates to a fresh one and retries.

Things worth knowing, all measured:

  • A search does not always return search results. lamp is sent to /collection/lamps, pagoda to /keyword/pagodas; abacus and
    mid century lamp
    are answered in place. The actor reads whatever list the site lands on, all its pages, and logs where it went. query stays the term you typed. A broad term can therefore return a whole collection; maxItems bounds it.
  • Depth: 99 pages, 4,752 listings per term or page. Chairish serves page 99 of a list and refuses page 100 and above with an HTTP 403 whatever the address, so the actor never asks for it. The match count the site reports is exact below 10,000 and stops at 10,000 above that. A list with more than 4,752 listings is read to its 99th page and logged as capped; narrow it with a price filter in a start URL (?price=100-200) or a more specific term.
  • Pages overlap a little. On a ranked search the last few listings of one page can reappear at the top of the next (5 repeats in 3 pages of
    mid century lamp
    ). A listing already returned is skipped and not charged, so position can jump by the number skipped.
  • The end of a list is an HTTP 404. A page past the last one (page 4 of a 106-match search) answers 404, not an empty page. The actor reads that as the end, not a failure.
  • The sort is checked, not trusted. The site ignores a sort it does not know and answers in its default order. The page's sort menu says which sort it applied, and a run that did not get the sort it asked for fails that source rather than return the wrong order. The sort survives a term's redirect to a list.
  • Filters. price=<min>-<max> in a start URL filters. condition= and color= were measured as ignored, so they are not offered.
  • Totals. A search with no match is an empty result, logged, not an error.

If Chairish changes its page data, the run fails with a message instead of returning empty rows.