Chairish Scraper: New Listings & Price Drops (USD)
Pricing
from $1.05 / 1,000 listing scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
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
| Field | Notes |
|---|---|
searchTerms | One 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. |
startUrls | Chairish 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. |
maxItems | Listings to read per term or page (default 100, up to 4,752). 48 per page. |
onlyOnSale | Return 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. |
sort | relevance (Chairish's Curated default), newest, price-asc, price-desc, most-favorited: the choices of the site's own sort menu. |
proxyConfiguration | Apify 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).
| Field | Notes |
|---|---|
query, position | The 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, url | Chairish's listing id (36744474) and the listing link. |
title, image_url | As the page shows them. image_url is the first photo (WebP). |
price | The price Chairish shows now. |
original_price | The price before the seller's reduction. Null when the listing is not reduced, never equal to price. |
on_sale | True when Chairish shows the listing as reduced (a price before the reduction). |
discount_percent | The 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_unit | item or set when the page says how the price is quoted; null for most listings. |
category | Chairish's category path, e.g. Lighting/Lamps/Table Lamps. |
status, purchasable, quantity, on_hold | Listed 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_pickup | Chairish's flags: a promoted (ad) tile, a new piece from a maker, made to order, local pickup offered. |
ships_to | Country codes the listing ships to (["US"]); empty when not sent. |
seller_id | Chairish's seller id (mjs6jz); https://www.chairish.com/shop/<seller_id> is the seller's page. |
condition | new, used or refurbished. |
seller_country | The seller's country code. |
designer | The designer or maker, when the listing names one. |
color, material | As the seller entered them. |
width_in, depth_in, height_in | Size in inches when the listing gives it. |
description | The 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 anddescriptioncome 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_priceanddiscount_percentare null on a listing that is not reduced.- No listing date. Chairish's page does not give one.
sort: newestis 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 thelisting_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 byonlyOnSale, 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.
lampis sent to/collection/lamps,pagodato/keyword/pagodas;abacusandare answered in place. The actor reads whatever list the site lands on, all its pages, and logs where it went.mid century lampquerystays the term you typed. A broad term can therefore return a whole collection;maxItemsbounds 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 ). A listing already returned is skipped and not charged, somid century lamp
positioncan 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=andcolor=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.