1stDibs Listings Scraper avatar

1stDibs Listings Scraper

Pricing

Pay per event

Go to Apify Store
1stDibs Listings Scraper

1stDibs Listings Scraper

Scrape public 1stDibs furniture, art, jewelry, fashion, and decor listings with prices, sellers, creators, materials, dimensions, and images.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Scrape public luxury furniture, art, jewelry, fashion, and decor listings from 1stDibs search, category, and product pages. Export titles, prices, dealers, locations, creators, materials, dimensions, condition notes, period, style, descriptions, and images for market research.

What does 1stDibs Listings Scraper do?

1stDibs Listings Scraper turns public 1stdibs.com pages into a structured dataset. Give it search URLs, category URLs, detail URLs, or simple keywords, and it collects listing records that are ready for CSV, Excel, JSON, API, or database workflows.

It is designed for public marketplace intelligence. The actor does not require a 1stDibs account and does not access private buyer, seller, or checkout data.

Who is it for?

  • ๐Ÿ›‹๏ธ Vintage furniture dealers tracking competing chairs, tables, lighting, and decor.
  • ๐Ÿ–ผ๏ธ Art and antiques researchers comparing public asking prices and listing descriptions.
  • ๐Ÿ’Ž Jewelry resellers monitoring luxury and designer inventory.
  • ๐Ÿงพ Appraisers collecting comparable public listings for valuation notes.
  • ๐Ÿท๏ธ Pricing analysts building historical snapshots of high-end marketplace supply.
  • ๐Ÿ  Interior design sourcing teams exporting candidate pieces for client mood boards.

Why use this actor?

Manual 1stDibs research is slow because each listing can contain rich attributes: price, creator, material, period, place of origin, dimensions, condition, seller, and image assets. This actor automates the repetitive collection step so your team can focus on analysis.

What data can you extract from 1stDibs?

FieldDescription
listingUrlCanonical public listing URL
listingId1stDibs listing identifier when present
titleListing title
priceUsdUSD price when visible in structured offer data
pricesCurrency-to-price map when multi-currency offers are present
sellerDealer, seller, creator, or maker text when visible
locationDealer/listing location
creatorDesigner, creator, manufacturer, or maker
categoryListing category text
materialsMaterials and techniques
dimensionsDimensions text
conditionCondition notes
periodPeriod field
styleStyle field
placeOfOriginPlace of origin
dateOfManufactureDate of manufacture
descriptionPublic description
imageUrlsListing image URLs
sourceUrlSearch, category, or detail URL that produced the row

How much does it cost to scrape 1stDibs listings?

This actor uses pay-per-event pricing: a small $0.005 start event plus a formula-derived per-listing event. BRONZE users pay $0.000063448 per extracted listing, with lower per-listing prices on higher Apify tiers. A 1,000-listing BRONZE run is about $0.068 before any platform-side free allowances or tier differences.

Input options

You can use any combination of these inputs:

  • startUrls โ€” public 1stDibs search, category, or listing URLs.
  • keywords โ€” search terms such as chair, Italian mirror, or Cartier bracelet.
  • category โ€” choose all departments, furniture, art, jewelry, or fashion for keyword searches.
  • maxItems โ€” maximum listing rows to save.
  • maxPages โ€” maximum pagination pages per search/category URL.
  • includeDetails โ€” open each listing page for richer price and specification fields.

Example input

{
"keywords": ["chair"],
"category": "furniture",
"maxItems": 25,
"maxPages": 2,
"includeDetails": true
}

Search URL examples

{
"startUrls": [
{ "url": "https://www.1stdibs.com/search/furniture/?q=chair" },
{ "url": "https://www.1stdibs.com/furniture/seating/chairs/" }
],
"maxItems": 50,
"maxPages": 3,
"includeDetails": true
}

Detail URL example

{
"startUrls": [
{ "url": "https://www.1stdibs.com/furniture/seating/chairs/superb-antique-morris-chair-sikes-chair-co/id-f_43016952/" }
],
"maxItems": 1,
"includeDetails": true
}

Output example

{
"listingUrl": "https://www.1stdibs.com/furniture/seating/chairs/example/id-f_123456/",
"listingId": "f_123456",
"title": "Example Vintage Lounge Chair",
"priceUsd": 4200,
"priceCurrency": "USD",
"seller": "Example Dealer",
"location": "New York, NY",
"creator": "Example Designer",
"category": "Mid-20th Century Chairs",
"materials": ["Leather", "Walnut"],
"dimensions": "Height: 32 in Width: 28 in Depth: 30 in",
"condition": "Good",
"period": "Mid-20th Century",
"style": "Mid-Century Modern",
"placeOfOrigin": "United States",
"description": "Public listing description...",
"mainImageUrl": "https://a.1stdibscdn.com/example.jpg",
"sourceType": "search",
"searchQuery": "chair",
"scrapedAt": "2026-06-09T00:00:00.000Z"
}

How to scrape 1stDibs in 5 steps

  1. Open the actor on Apify.
  2. Add a 1stDibs search URL or enter one or more keywords.
  3. Choose a category and set a small maxItems value for your first run.
  4. Keep includeDetails enabled if you need prices, dimensions, and condition notes.
  5. Start the run and download the dataset as CSV, Excel, JSON, or XML.

Tips for better results

  • Use specific keywords like Italian brass lamp instead of only lamp.
  • Use category URLs when you want broad inventory monitoring.
  • Use detail URLs when you need a small set of known listings enriched.
  • Increase maxPages gradually for large research jobs.
  • Turn off includeDetails for faster lightweight discovery runs.

Common use cases

  • ๐Ÿงฎ Build price comparison sheets for luxury furniture.
  • ๐Ÿ“ˆ Monitor new supply in a category over time.
  • ๐Ÿง‘โ€โš–๏ธ Collect comparable listings for appraisal research.
  • ๐Ÿ–ผ๏ธ Analyze material, period, and style language in art and antiques listings.
  • ๐Ÿ”” Feed listing URLs into alerting or enrichment workflows.

Integrations

Use the dataset with:

  • Google Sheets or Excel for manual review.
  • BI dashboards for price and category monitoring.
  • Internal appraisal tools for comparable listing libraries.
  • CRM workflows for sourcing and dealer research.
  • Apify integrations such as webhooks, Make, Zapier, and scheduled runs.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/1stdibs-listings-scraper').call({
keywords: ['chair'],
category: 'furniture',
maxItems: 25,
includeDetails: true,
});
console.log(run.defaultDatasetId);

API usage with Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/1stdibs-listings-scraper').call(run_input={
'keywords': ['chair'],
'category': 'furniture',
'maxItems': 25,
'includeDetails': True,
})
print(run['defaultDatasetId'])

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~1stdibs-listings-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"keywords":["chair"],"category":"furniture","maxItems":25,"includeDetails":true}'

MCP usage

Connect this actor to Claude Desktop or Claude Code through Apify MCP:

$claude mcp add apify-1stdibs "https://mcp.apify.com/?tools=automation-lab/1stdibs-listings-scraper"

Claude Desktop JSON configuration:

{
"mcpServers": {
"apify-1stdibs": {
"url": "https://mcp.apify.com/?tools=automation-lab/1stdibs-listings-scraper"
}
}
}

Direct MCP URL:

https://mcp.apify.com/?tools=automation-lab/1stdibs-listings-scraper

Example prompts:

  • "Scrape 25 1stDibs furniture listings for Italian chairs and summarize price ranges."
  • "Collect public 1stDibs detail data for these listing URLs and make a comparison table."
  • "Find common materials and periods in the exported 1stDibs dataset."

Scheduling

For monitoring workflows, schedule the actor daily, weekly, or monthly. Keep the same keyword/category inputs and compare new datasets over time to spot new inventory, removed listings, or price changes.

Data quality notes

1stDibs may hide prices for some listings or show "price upon request" style pages. In those cases, priceUsd can be null. Detail enrichment usually improves field coverage because listing pages expose more structured product data than search cards.

Performance notes

The actor is HTTP-only and does not launch a browser. Runs with detail enrichment make one extra request per listing. If you only need URLs and titles, disable includeDetails for faster runs.

Limits and caveats

  • Only public pages are scraped.
  • Availability and price can change after a run.
  • Some seller/contact fields may be absent from public HTML.
  • Images are public CDN URLs and may include transformed sizes.
  • Website markup can change; report issues if important fields disappear.

Legality

This actor collects publicly available listing information. You should use the data responsibly, respect applicable laws and 1stDibs terms, avoid personal-data misuse, and consult legal counsel for regulated or high-risk use cases.

FAQ and troubleshooting

Why are some prices missing?

Some 1stDibs listings do not expose a public price or only show price information in certain contexts. Keep includeDetails enabled to maximize price extraction.

Why did I receive fewer items than requested?

The source page may have fewer public listings than your limit, or duplicate listings may appear across pages and get de-duplicated by URL.

Why is my run slower with detail enrichment?

Detail enrichment opens each listing page to capture richer data. Disable includeDetails when you only need search-card discovery.

Explore other marketplace and ecommerce scrapers from Automation Lab:

Changelog

  • 0.1.0 โ€” Initial public-listing scraper for 1stDibs search, category, keyword, and detail URLs.