Craigslist For Sale Scraper with Deal Intelligence
Pricing
from $4.80 / 1,000 results
Craigslist For Sale Scraper with Deal Intelligence
Scrape Craigslist for-sale listings from any city and get AI-powered deal scoring, trust analysis, freshness ratings, red flag detection, and opportunity scores. Ideal for bargain hunters, resellers, and market researchers.
Pricing
from $4.80 / 1,000 results
Rating
0.0
(0)
Developer
Ian Dikhtiar
Actor stats
0
Bookmarked
2
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
Craigslist For Sale Scraper
Scrape Craigslist for-sale listings with AI-powered deal scoring, trust analysis, and opportunity metrics. Get intelligent insights on every listing to find the best deals.
What it does
This actor scrapes Craigslist "for sale" listings across any US city and enriches each result with 16 intelligence metrics including deal scoring, trust analysis, freshness indicators, and market demand signals.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
location | string | (required) | Craigslist subdomain (e.g. sfbay, newyork, chicago) |
category | string | sss | Category code (sss=all, ele=electronics, fua=furniture, etc.) |
searchQuery | string | Keywords to search for | |
maxResults | integer | 50 | Max results (1-500) |
minPrice | integer | Minimum price filter | |
maxPrice | integer | Maximum price filter | |
postedToday | boolean | false | Only today's listings |
hasPics | boolean | false | Only listings with photos |
condition | string | new, like new, excellent, good, fair, salvage | |
proxyConfiguration | object | Apify proxy settings |
Output Schema
Each result contains the listing data plus an intelligence object:
| Field | Type | Description |
|---|---|---|
id | string | Craigslist listing ID |
title | string | Listing title |
price | number | Parsed price (null if not listed) |
priceFormatted | string | Display price (e.g. "$250") |
url | string | Full listing URL |
location | string | Neighborhood/area |
postedAt | string | ISO timestamp |
description | string | Full listing text |
condition | string | Item condition |
allImages | array | Image URLs |
intelligence | object | See below |
Intelligence Metrics
1. Deal Score (dealScore: 0-100)
Percentile-based price ranking within the result set. Cheapest items score highest. Uses title heuristics ("OBO", "firm") when price is missing.
2. Value Category (valueCategory: string)
Human-readable deal label based on dealScore thresholds.
3. Listing Freshness (listingFreshness: 0-100)
How recently the item was posted. Higher = newer.
4. Freshness Label (freshnessLabel: string)
"Just Listed" | "Recent" | "A Few Days Old" | "Stale Listing"
5. Photo Quality Score (photoQualityScore: 0-100)
Based on photo count with bonuses for visual diversity and high-resolution images.
6. Description Quality (descriptionQuality: 0-100)
Evaluates length, word variety, specs/measurements, contact info, with penalties for ALL CAPS and excessive punctuation.
7. Trust Score (trustScore: 0-100)
Composite seller trust indicator. Factors: photos, description detail, contact method, location, spam keywords.
8. Price Per Unit (pricePerUnit: number|null)
Computed when listing mentions "lot of X", "pack of 5", etc.
9. Red Flags (redFlags: string[])
Warning indicators: no photos, short description, suspicious pricing, ALL CAPS, spam keywords, relisting.
10. Opportunity Score (opportunityScore: 0-100)
The main "should I buy?" signal. Weighted composite of deal, freshness, trust, and photo scores with demand signal boost.
11. Opportunity Label (opportunityLabel: string)
"Act Now" | "Worth Checking" | "Maybe" | "Pass" | "Avoid"
12. Estimated Retail Price (categoryEstimatedRetailPrice: number|null)
Best-effort MSRP lookup from 100+ product keyword matches.
13. Savings vs Retail (savingsVsRetail: number|null)
Retail price minus listing price. Positive = savings. Null if retail unknown.
14. Title Sentiment (titleSentiment: string)
"Positive" (mint, like new) | "Negative" (broken, parts only) | "Neutral"
15. Estimated Days on Market (estimatedDaysOnMarket: integer|null)
Days since the listing was posted.
16. Market Demand Signal (marketDemandSignal: string)
"High Demand" | "Motivated Seller" | "Bargain Hunter Target" | "Standard"
Use Cases
Bargain Hunting
Filter results by opportunityScore > 70 to find the best deals quickly.
Market Research
Analyze the distribution of dealScore across a category to understand pricing trends.
Flipping Items
Look for listings where savingsVsRetail > 50 and trustScore > 60 to find profitable flip opportunities.
Monitoring Listings
Track listingFreshness combined with redFlags to spot new listings while avoiding scams.
Pricing
PAY_PER_EVENT: $0.01/run + $0.05/1K listings
FAQ
Q: What locations are supported?
Any valid Craigslist subdomain (e.g. sfbay, newyork, chicago, losangeles, seattle, etc.)
Q: How many results can I get? Up to 500 per run. The scraper handles pagination automatically.
Q: Does it handle CAPTCHAs? The scraper detects CAPTCHA pages and logs a warning. Use Apify proxy configuration for better success rates.
Q: Why are some intelligence fields null?
Fields like pricePerUnit and savingsVsRetail are only computed when enough data is available (e.g., quantity mentions in title, known retail price match).
Q: How accurate is the retail price estimate? The lookup table covers 100+ popular products. It matches keywords in the title, so accuracy depends on how well the title describes the product.
