Craigslist Scraper: New Listings Alerts & Price Drops
Pricing
from $0.68 / 1,000 listing delivereds
Craigslist Scraper: New Listings Alerts & Price Drops
Scrape Craigslist listings from any city: cars, apartments, real estate, for sale, jobs, gigs and services. Paste a search link or pick cities, category, keyword and filters. Schedule it: only new listings and price drops. Error rows are free.
Pricing
from $0.68 / 1,000 listing delivereds
Rating
0.0
(0)
Developer
Scrapewise Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Craigslist Scraper: new listings alerts and price drops
Scrape Craigslist listings from any city site, in many cities in one run, without an account, cookies or a browser. Paste a search link with your filters, or pick cities (New York, Los Angeles, San Francisco, Chicago...), a category (cars, apartments, real estate, for sale, jobs, gigs, services...), a keyword and filters. Every listing comes with title, price, posting date, city, subarea and neighborhood, approximate map coordinates, odometer for vehicles, bedrooms and square feet for housing, compensation for jobs, and every photo.
Built for alerts: schedule the same search every hour or every morning and get only the listings that are new, plus the ones whose price changed, with the previous price and the drop in dollars and percent. A run with nothing new costs nothing.
At a glance
- Price per 1,000 listings, Free plan: US$ 0.80 (down to US$ 0.68 on Gold and above)
- Full listing page (optional): US$ 0.533 per 1,000, on top
- Fee per run start: None
- Search by Craigslist link or by cities + category + keyword + filters: Yes
- Many cities in one run: Yes, one search per city
- Only new listings since the last run (
onlyNew): Yes, free when nothing is new - Price tracking between runs (
trackPriceChanges,onlyPriceDrops): Yes - Up to 10,000 listings per search: Yes
- Advertiser name, phone or e-mail: Never (see below)
- Error rows (bad link, unknown city, no results, timeout too short): Free, with an
errorCode
One real row
From a test run on 2026-10-06 (city "San Francisco", apartments for rent, newest first, full listing pages on), shortened:
{"type": "listing","id": "7979141319","url": "https://www.craigslist.org/view/d/san-francisco-sunlit-bernal-heights/uf5goFJDfDKpdzgtw6944s","title": "Sunlit Bernal Heights Cottage in Prime Location","price": 4800,"priceFormatted": "$4,800","currency": "USD","category": "apa","categoryName": "apartments / housing for rent","section": "housing","postedAt": "2026-10-06T21:51:35Z","city": "sfbay","cityName": "SF bay area","region": "CA","subarea": "sfc","subareaName": "san francisco","locationText": "San Francisco","latitude": 37.74,"longitude": -122.42,"bedrooms": 2,"bathrooms": 1,"housingType": "house","laundry": "w/d in unit","parking": "attached garage","rentPeriod": "monthly","attributes": {"cats are OK - purrr": true, "dogs are OK - wooof": true},"imageCount": 3,"thumbnail": "https://images.craigslist.org/00z0z_cTkzfI4oaCw_0CI0pR_600x450.jpg","createdAt": "2026-10-06T21:06:35Z","isRepost": false,"hasDetails": true}
A car from Los Angeles in the same test came with "odometerMiles": 120306, "sellerType": "dealer", and from the
listing page "year": 2021, "makeModel": "Tesla Model 3 AWD Long Range w/Boost", "condition": "excellent",
"fuel": "electric", "titleStatus": "clean", "transmission": "automatic", "bodyType": "sedan".
What you can do with it
- Car flippers and buyers: a Task per city that checks cars by owner under a price every hour and sends only new listings and price drops to Slack, e-mail or Google Sheets.
- Renters and relocation teams: daily alerts of new apartments in New York, Los Angeles or San Francisco that match budget, bedrooms and ZIP code.
- Resellers and collectors: watch furniture, electronics, tools or free stuff in several cities at once for a keyword.
- Recruiters and job seekers: new jobs and gigs by city and keyword, with compensation and employment type.
- Market research: asking prices of used cars, rents per bedroom or item prices by city and neighborhood, with coordinates for maps.
- Datasets and AI: clean, typed rows (numbers as numbers, dates as ISO), ready for spreadsheets and models.
Input
| Field | What it does |
|---|---|
startUrls | Craigslist search links with your filters (every filter in the link is kept), or listing links (returned with the full listing page) |
cities | City names (New York, Los Angeles, San Francisco, Portland, OR), boroughs or subareas (Brooklyn, Manhattan) or site names (newyork, sfbay); one search each |
category | allForSale (default), cars, carsByOwner, carsByDealer, motorcycles, apartmentsForRent, realEstateForSale, rooms, allJobs, gigs, allServices, furniture, electronics, free and more |
categoryCode | Any Craigslist category code from a link (cto, sof, fuo...); overrides category |
query | Keyword, as in the Craigslist search box |
searchTitlesOnly | Match the keyword in titles only |
minPrice, maxPrice | Price range (monthly rent for rentals) |
hasPic, postedToday | Only listings with photos; only listings posted today |
postalCode, searchDistance | Search around a ZIP or postal code, radius in miles |
minYear, maxYear, minMiles, maxMiles, makeModel | Vehicle filters |
sellerType | any (default), owner or dealer |
minBedrooms, maxBedrooms, minBathrooms, minSqft, maxSqft | Housing filters |
sortBy | newest (default), oldest, priceLowToHigh, priceHighToLow, relevance |
maxItems | Listings per search, default 50. 0 = up to 10,000 |
includeDetails | Also read each listing page (full description, attributes, every photo), charged as a separate event |
onlyNew | Deliver only listings not delivered in earlier runs of the same search |
trackPriceChanges | Add the price from the previous run and the change; with onlyNew, also deliver seen listings whose price changed |
onlyPriceDrops | With onlyNew and trackPriceChanges: of the seen listings, only price drops |
proxyConfiguration | Default Apify Proxy (datacenter) |
Example: new Tesla listings under 30,000 dollars in Los Angeles and San Francisco, every hour:
{"cities": ["Los Angeles", "San Francisco"],"category": "cars","query": "tesla","maxPrice": 30000,"minYear": 2019,"maxItems": 100,"onlyNew": true,"trackPriceChanges": true}
Or paste the search from your browser:
{"startUrls": ["https://newyork.craigslist.org/search/brk/apa?min_bedrooms=2&max_price=4000"],"maxItems": 200}
How alerts work
The Actor remembers each search (same link, or same city, category, keyword and filters) in a named key-value store
in your own account, craigslist-scraper-memory: listing id, last price, first and last time seen.
onlyNew: the first run delivers up tomaxItemsand marks the page it read as seen. Later runs read the newest listings first and stop when there is nothing new. A run with nothing new delivers nothing and costs nothing.- Craigslist puts renewed listings back on top. A renewed listing you already have is not delivered again (unless its price changed and you track prices). Old listings that the first run never reached are recorded as a price baseline, not delivered as "new".
trackPriceChanges: every row getsisNewListing,previousPrice,priceChange,priceChangePct,isPriceDrop,firstSeenAtandpreviousSeenAt.maxItemsthen counts listings checked, so the cost of a daily run stays flat.- Both on: you get new listings plus listings seen before whose price changed.
- Delete the key-value store to start over.
Output
Every listing row: id (Craigslist posting id), uuid, url, title, price, priceFormatted, currency,
category (Craigslist code), categoryName, section (for sale, housing, jobs, gigs, services,
community, events), sellerType (owner or dealer in for-sale categories), postedAt (posted or renewed,
UTC), city (site name), cityName, region, country, subarea, subareaName, neighborhood, locationText
(the place the advertiser typed), latitude, longitude, odometerMiles, bedrooms, sqft, salary, company,
jobTitle, monthlyPayment, images (1200x900), imageCount, thumbnail, position, searchUrl, scrapedAt.
With price tracking: isNewListing, previousPrice, priceChange, priceChangePct, isPriceDrop, firstSeenAt,
previousSeenAt.
With full listing pages (hasDetails: true): description, attributes (every attribute Craigslist shows, as
label and value), year, makeModel, condition, transmission, fuel, titleStatus, bodyType, drive,
paintColor, cylinders, bathrooms, housingType, laundry, parking, rentPeriod, employmentType,
compensation, createdAt (first posted), updatedAt, isRepost, and every photo. If a listing page cannot be
read, the row still comes with hasDetails: false and detailsError, and only the listing is charged.
No advertiser contact data, by design. Most Craigslist advertisers are private people. The Actor never returns a
name, phone number or e-mail, never returns the street address a listing may carry, and replaces phone numbers and
e-mail addresses inside titles, place names and descriptions with [contact removed]. Coordinates are rounded to 2
decimals (about 1 km). Use the listing url to reply through Craigslist.
Error codes (never charged)
errorCode | Meaning |
|---|---|
INVALID_INPUT | A value the Actor does not understand (minimum above maximum, unknown category, a link that is not a Craigslist search or listing, a search Craigslist rejects) |
NOT_FOUND | No Craigslist site for this city name (the row lists the closest names), or the listing was deleted |
NO_RESULTS | No listing for this search and filters in this city |
BLOCKED | Craigslist refused every attempt on new IPs; run again |
TIMEOUT_TOO_SHORT | The run timeout was too short for even the first page; raise it |
NOT_REACHED | The run timeout arrived before this search or listing |
UNEXPECTED | A page came in a shape we did not expect; the rest of the run goes on |
Pricing
| Event | Per 1,000 |
|---|---|
| Listing delivered | US$ 0.80 |
Full listing page (only with includeDetails or listing links) | US$ 0.533 |
An hourly onlyNew alert on a busy search that finds 5 new cars per hour costs about US$ 0.10 a day. Error rows,
duplicates, listings already seen, listings with an unchanged price and listings from nearby areas are free, and
there is no start fee.
Limitations
- When a city has few listings for a search, Craigslist fills the page with listings from nearby areas. Those are
left out (they belong to other city sites); add those cities to
citiesif you want them. - Craigslist lists at most 10,000 listings per search. For more, split by subarea, price range or keyword.
postedAtis the date Craigslist shows, which moves when a listing is renewed;createdAt(listing page) is the first posting date.- Descriptions and attributes are as the advertiser wrote them.
- This Actor reads public pages only.
FAQ
Do I need a Craigslist account? No. No login, no cookies, and the default datacenter proxy works.
How do I write a city? As you would say it: New York, Los Angeles, San Francisco, Washington DC,
St. Louis, Portland, OR, Toronto, London. Capitals and extra spaces do not matter, and a borough or subarea
such as Brooklyn searches only that part. The site name from the address bar (sfbay, newyork) also works.
Can I paste a search from my browser? Yes. Keyword, price, year, odometer, bedrooms, ZIP and every other filter in the link are kept.
How do I get an alert only when a price drops? Turn on onlyNew, trackPriceChanges and onlyPriceDrops,
schedule the Task and send the dataset to your integration.
Can I use it from n8n, Make, Zapier or an AI agent? Yes, through the Apify app or the Apify MCP server. Error rows are free, so an agent can explore cheaply.
What if a run is cut by its timeout? The Actor stops shortly before the limit and ends successfully with what it
delivered, telling you in the status message how to get the rest. If the timeout is too short for even one page, you
get a free TIMEOUT_TOO_SHORT row instead of an empty run.
Changelog
- 0.1 (2026-10-07): first version. Search by Craigslist link or by cities with category, keyword, price, vehicle,
housing, seller, photo, posted-today and ZIP filters; many cities per run; up to 10,000 listings per search;
optional full listing pages;
onlyNewand price tracking between runs for scheduled alerts; free error rows.