Craigslist For Sale Scraper | Classifieds, Autos, Free Stuff avatar

Craigslist For Sale Scraper | Classifieds, Autos, Free Stuff

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Craigslist For Sale Scraper | Classifieds, Autos, Free Stuff

Craigslist For Sale Scraper | Classifieds, Autos, Free Stuff

Scrape Craigslist For Sale (non-housing) listings by city - autos, bikes, boats, furniture, electronics, tools, pets, free stuff. Subcategory filter, free-only, price filters, new-listings monitoring. Plain HTTP, no browser. Works via Apify MCP.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

petteri mähönen

petteri mähönen

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Craigslist For Sale Scraper

Scrape Craigslist For Sale (non-housing classifieds) listings across US cities — autos, bikes, boats, furniture, electronics, tools, pets, free stuff & more. Plain HTTP, no browser, no proxy needed (Craigslist's 2026 search and detail pages are fully server-rendered).

2026 reality: Craigslist's 2026 UI collapsed the old categories. The only non-housing feed is cat=sss — one "For Sale" mega feed containing all subcategories (autos, motorcycles, bicycles, boats, furniture, appliances, electronics, tools, sports, music, toys, antiques, pets, farm, free). Jobs, services and events no longer exist as separate feeds. Because the 2026 UI has no per-listing category tags, this actor assigns a subcategory by keyword classification on the title (first-match wins, best-effort — a few listings may be mis-tagged).

Features

  • Subcategory filter — 16 keyword categories (auto, motorcycle, bikes, boats, furniture, appliances, electronics, tools, sports, music, toys, antiques, pets, farm, free, other), matched client-side and filtered before detail fetches so targeted runs use less compute
  • Free items onlyfreeOnly returns just the "free" listings (keyword-first detection; the $0 price box alone is unreliable, so a $0 price is only a fallback signal)
  • Price filtersminPrice / maxPrice applied server-side (Craigslist filters before you pay for results)
  • Keyword filtertitleKeyword matches listing titles client-side (Craigslist's search page ignores keyword params)
  • New-listings monitoringdedupeAgainstDatasetId skips listings already in a previous run's dataset and tags everything is_new=true. Combine with an Apify Schedule for a daily "new listings only" or "free stuff in my city" feed
  • Multi-city search — scrape several areas in one run
  • Detail page extraction — per listing: neighborhood, full description, all photos, reply URL, post ID, posted date, lat/lng
  • Fast & cheap — CheerioCrawler, 256MB, no browser; one search page per area contains all results (no pagination/scroll)

Input

FieldTypeDefaultDescription
locationsstring[]["San Francisco, CA"]Cities/areas to scrape
subcategorystringallall | auto | motorcycle | bikes | boats | furniture | appliances | electronics | tools | sports | music | toys | antiques | pets | farm | free | other
freeOnlybooleanfalseOnly free items only (title says free, or $0)
minPricenumber0Minimum price, server-side (0 = no minimum)
maxPricenumber0Maximum price, server-side (0 = no maximum)
maxResultsnumber100Stop after this many listings (0 = no limit)
titleKeywordstringOnly listings whose title contains this keyword (client-side; filters before detail fetches)
fetchDetailsbooleantrueVisit detail pages for enriched data
dedupeAgainstDatasetIdstringDataset ID(s) of previous runs (comma-separated or array); matched post_ids are skipped
apiTokenstringOptional Apify API token for reading cross-actor datasets (needed when deduping against a dataset created by a different actor/task)
{
"locations": ["San Francisco, CA"],
"subcategory": "auto",
"minPrice": 5000,
"maxPrice": 25000,
"maxResults": 50
}

Example: daily new-listings monitor (set as an Apify Schedule)

{
"locations": ["New York, NY", "Los Angeles, CA"],
"freeOnly": true,
"dedupeAgainstDatasetId": "<yesterday-run-dataset-id>",
"apiToken": "apif...k"
}

Each day you get only listings that weren't in the previous run's dataset, all tagged is_new: true. (Cloud-verified: a baseline run followed by a deduped run returned 7 new listings with zero overlap.)

Output

Each listing includes:

FieldSourceExample
titleSearch / Detail"1987 VW Westfalia (4-spd, rotating seats)"
priceSearch / Detail"$19,500"
price_numDerived19500
subcategoryDerived (keyword classifier)"auto"
neighborhoodSearch / Detail"potrero hill"
linkSearch"https://www.craigslist.org/view/d/..."
thumbnailDetailimage URL
latitude / longitudeDetail37.71 / -122.41
post_idDetail"7965488586"
postedDetail"2026-09-12T23:02:18Z" (ISO)
photosDetail["url1", "url2", ...]
descriptionDetail"Full description text..."
reply_urlDetail"https://.../reply/..."
contact_info / contact_websitesDetailphone/email/URL mentions from description
has_contactDetailtrue
h1_textDetailraw detail-page title line
is_newDedupetrue (only set when dedupeAgainstDatasetId produced matches)
location / areaInput"San Francisco, CA" / "sfbay"
platformSystem"craigslist"
scraped_atSystemISO timestamp

Use Cases

  • Free stuff in your city — daily schedule + freeOnly = "free near me" feed
  • New-listing alerts — daily schedule + dedupeAgainstDatasetId = "new listings only"
  • Car shopping / market trackingsubcategory: auto + minPrice/maxPrice for a specific make-of-market segment
  • Deal monitoringtitleKeyword: "peloton", re-run daily, track prices over time
  • Classifieds data pipeline — feed structured marketplace data into analytics, price tracking, or ML models

Performance & Limitations

  • No browser (CheerioCrawler, 256MB) — Craigslist's 2026 pages are fully server-rendered
  • One search page per area contains all results (no pagination/scroll needed) — e.g. 344 for-sale listings in the SF Bay area on a single page
  • Subcategory is keyword classification on the title — best-effort, first-match wins; a few listings will be other or slightly mis-tagged. For precise matches, combine subcategory with titleKeyword
  • The $0 price field is unreliable (sellers often leave the price box blank) — free-item detection is keyword-first with $0 as fallback
  • Actual phone/email is behind Craigslist's JS-gated "show contact" — we extract the reply URL plus any phone/email/URL mentions from the description text
  • For-sale detail pages have no address or spec fields (those are housing-only in the 2026 UI); some listings also lack a map pin, in which case latitude/longitude are null

💬 Quick Start for AI Assistants

Copy and paste this into ChatGPT, Claude, or another AI assistant:


You are helping me use the "Craigslist For Sale Scraper" on Apify (actor ID: ACqoWMdMJhw6sHAkO). It extracts Craigslist For Sale (non-housing) listings — autos, bikes, boats, furniture, electronics, tools, pets, free stuff — from craigslist.org across US cities.

Input fields:

  • locations: string array, e.g. ["San Francisco, CA", "New York, NY"]
  • subcategory: "all" (default) | "auto" | "motorcycle" | "bikes" | "boats" | "furniture" | "appliances" | "electronics" | "tools" | "sports" | "music" | "toys" | "antiques" | "pets" | "farm" | "free" | "other"
  • freeOnly: boolean, only free items (default false)
  • minPrice / maxPrice: numbers, server-side price filter (0 = no filter)
  • titleKeyword: string, only listings whose title contains it (client-side)
  • maxResults: number, max listings to return (default 100, 0 = no limit)
  • fetchDetails: boolean, visit detail pages for photos, descriptions, reply URL (default true)
  • dedupeAgainstDatasetId: string dataset ID(s), skip already-seen listings, tag is_new
  • apiToken: optional Apify API token to read cross-actor datasets

Output fields per listing: title, price, price_num, subcategory, neighborhood, link, thumbnail, latitude, longitude, post_id, posted, photos[], description, reply_url, has_contact, contact_info[], contact_websites[], h1_text, is_new, location, area, platform, scraped_at.

Help me with the right input, output processing, or troubleshooting.

📋 Changelog

VersionDateChanges
0.22026-09-13Rebuilt with output schema (publish-gate fix), Dockerfile cleanup, README pricing/actor-ID corrections
0.12026-09-12Initial release — 2026 sss feed, 16-category keyword classifier, freeOnly (keyword-first free detection), minPrice/maxPrice server-side, titleKeyword, dedupeAgainstDatasetId + apiToken new-listings monitoring (cloud-verified: 0 overlap, all is_new)

Pricing

Pay per event — $1.00 per 1,000 results ($0.001 per listing in the dataset), plus $0.05 per run.

Support & Feedback

Enjoying this Actor? Leave a review on Apify Store — it helps others discover the tool.

Found a bug or have a feature request? Open an issue on the Actor page.