Craigslist Scraper - Cars, Housing, Jobs & For Sale avatar

Craigslist Scraper - Cars, Housing, Jobs & For Sale

Pricing

from $1.20 / 1,000 listing scrapeds

Go to Apify Store
Craigslist Scraper - Cars, Housing, Jobs & For Sale

Craigslist Scraper - Cars, Housing, Jobs & For Sale

Scrape Craigslist in any US city by keyword, category or pasted search URL: for sale, cars & trucks, apartments, jobs, gigs, services. Get price, location, coordinates, photos, posted date, full description and attributes like odometer, year or bedrooms.

Pricing

from $1.20 / 1,000 listing scrapeds

Rating

1.0

(1)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

1

Bookmarked

196

Total users

23

Monthly active users

11 hours ago

Last modified

Features

Limited permissions

Share

What does Craigslist Scraper do?

Craigslist Scraper extracts listing data from Craigslist keyword searches, search page URLs or direct listing URLs across any US city. Search one or many cities in a single run by keyword and category — for sale, cars & trucks, apartments, housing, jobs, services, gigs, community — or paste a Craigslist search URL with any filters. Every row has the title, price, location, link and, for most listings, map coordinates and a photo. Turn on details to also get the full description, all photos, posting date and every attribute (odometer, fuel, bedrooms, laundry, parking…).

Use it for market research, price comparison, lead generation, inventory sourcing, and local market analysis.

Use cases

Who is it for?

Craigslist Scraper is for marketplace analysts, local lead-generation teams, real estate researchers, resellers, recruiters, and developers who need repeatable Craigslist data exports across cities and categories.

  • Price comparison — Compare prices for used goods, electronics, furniture, or vehicles across different Craigslist cities and regions.
  • Inventory sourcing — Find products to resell by scanning for underpriced items in for-sale categories.
  • Rental market research — Monitor housing listings to analyze rent prices, availability, and trends in specific neighborhoods.
  • Job market analysis — Track job postings by keyword to understand local hiring trends and salary ranges.
  • Lead generation — Find service providers, contractors, or freelancers in specific cities and categories.
  • Local market intelligence — Analyze listing volumes and prices to understand supply/demand in any metro area.

Why use Craigslist Scraper?

  • Native multi-city search — Search one or many Craigslist cities in a single run: type the subdomain (newyork, sfbay, losangeles) or the name ("New York", "San Francisco", "Los Angeles").
  • All categories and subcategories — For sale, housing, jobs, services, gigs and community, plus cars & trucks, motorcycles, electronics, computers, cell phones, furniture, free stuff, apartments, rooms, sublets and real estate. Any other subcategory works through a search URL.
  • Paste a search URL — Set up the search on craigslist.org with any filters (make and model, bedrooms, mileage, dogs OK…), copy the URL into searchUrls, and every filter is kept.
  • Monitoring filters — Posted today only, with photos only, and sort by newest or price.
  • Coordinates and photo without extra cost — Most search rows already carry latitude, longitude and a thumbnail.
  • Fast and lightweight — Pure HTTP extraction with Cheerio. No browser needed. Gets 300+ listings per search in seconds.
  • Optional detail enrichment — Enable includeDetails to follow each listing URL and get full descriptions, images, posting dates, and item attributes.
  • Price filtering — Filter by minimum and maximum price to narrow results.
  • Direct listing URLs — Submit saved Craigslist links to extract their full details without recreating the original search.
  • Multiple search queries — Run several keyword searches in a single run.
  • Clean structured data — Every listing includes title, price, location, URL, and more. Unknown values are null, never an empty string.
  • Honest run status — Every run ends with a message such as "Got 100 of 100 listings". Invalid input fails at once and costs nothing.
  • Pay-per-event pricing — You only pay for listings scraped. No monthly subscription.

What data can you extract?

Each listing in the output includes:

FieldDescription
listingIdCraigslist listing ID
titleListing title
pricePrice as displayed (e.g., "$200")
priceNumericPrice as a number (e.g., 200)
locationNeighborhood or area within the city
cityCraigslist city/region (e.g., "newyork", "sfbay")
categoryCategory searched (e.g., "for_sale")
urlDirect link to the listing
thumbnailUrlFirst photo (from the search page for most listings)
descriptionFull listing description with line breaks (when includeDetails is enabled)
postedAtPosting date/time as ISO string (when includeDetails is enabled)
imageCountNumber of images (when includeDetails is enabled)
imageUrlsArray of image URLs (when includeDetails is enabled)
latitudeLatitude (from the search page for most listings; always tried with includeDetails)
longitudeLongitude (same as latitude)
addressStreet address (when includeDetails is enabled)
bedroomsBedrooms/bathrooms (housing, when includeDetails is enabled)
sqftSquare footage (housing, when includeDetails is enabled)
availableDateAvailability (housing, when includeDetails is enabled)
conditionItem condition (for-sale, when includeDetails is enabled)
make / modelLabeled make and model (for-sale items, when includeDetails is enabled)
yearModel year (vehicles, when includeDetails is enabled)
makeModelVehicle make and model as posted (when includeDetails is enabled)
attributesEvery other posting attribute by name, e.g. odometer, fuel, transmission, title_status, laundry, parking, housing_type (when includeDetails is enabled)
scrapedAtISO timestamp of when data was collected

How much does it cost to scrape Craigslist?

This Actor uses pay-per-event pricing — you pay only for what you scrape. No monthly subscription. All platform costs (compute, proxy, storage) are included.

For unlimited or very large result runs, set Maximum charge per run before starting. The Actor charges each listing before saving it, saves only charged listings, and stops cleanly when the limit is reached. A run with invalid input fails without any charge.

EventFreeBronzeSilverGoldPlatinumDiamond
Actor start$0.001$0.001$0.001$0.001$0.001$0.001
Per listing$0.0023$0.002$0.00156$0.0012$0.0008$0.00056

From November 27, 2026 the price will move to our standard plan discounts at the same Starter price: $0.002 per listing on Free and Bronze, $0.0018 on Silver, and $0.0016 on Gold, Platinum and Diamond. The start fee stays $0.001.

The total actor charge is the one-time actor-start event plus the applicable per-listing rate multiplied by the number of listings saved. Check the live pricing panel before a large run because Apify may update prices or plan tiers. Apify platform credits are separate from these actor charges.

How to scrape Craigslist

  1. Click Try for free to open the Actor in Apify Console.
  2. Enter one or more search keywords (e.g., "laptop", "bicycle").
  3. Enter one city in city, or add several subdomains to cities (e.g., "newyork", "sfbay", "losangeles").
  4. Select a category (For Sale, Housing, Jobs, etc.).
  5. Optionally enable Include listing details for full descriptions and images.
  6. Click Start and wait for the run to finish.
  7. Download your data as JSON, CSV, or Excel from the Dataset tab.

Search URL example (any Craigslist filters):

{
"searchUrls": [
"https://sfbay.craigslist.org/search/cta?auto_make_model=toyota%20tacoma&max_auto_miles=120000"
],
"maxResults": 100,
"includeDetails": true
}

Daily monitoring example:

{
"cities": ["New York", "Boston"],
"category": "apartments",
"postedToday": true,
"hasImage": true,
"maxPrice": 3500,
"maxResults": 200
}

Direct URL example:

{
"listingUrls": [
"https://newyork.craigslist.org/brk/sys/d/brooklyn-laptop/7916291766.html"
]
}

Multi-city search example:

{
"searchQueries": ["laptop", "macbook"],
"cities": ["newyork", "sfbay", "losangeles"],
"category": "for_sale",
"maxResults": 50,
"includeDetails": true,
"minPrice": 100,
"maxPrice": 1000
}

maxResults applies to each query/city pair, so this example can return up to 300 unique listings (2 queries × 3 cities × 50). Duplicate listing IDs are emitted only once across the run. When cities contains values it overrides city; existing single-city inputs remain compatible.

Input parameters

ParameterTypeDefaultDescription
searchQueriesarray[]Keywords to search on Craigslist. If this, searchUrls and listingUrls are all empty, the Actor browses the selected category in each city.
searchUrlsarray[]Craigslist search page URLs (e.g. https://sfbay.craigslist.org/search/cta?...); every filter in the URL is kept
listingUrlsarray[]Direct Craigslist listing URLs; each returns the full posting. Search URLs pasted here are searched too. Invalid URLs are skipped; if none is valid the run fails without charge
citystring"newyork"Single Craigslist city used when cities is empty: subdomain or common name ("New York", "NYC", "San Francisco")
citiesarray[]Several Craigslist cities to search in one run; overrides city and removes duplicates
categorystring"for_sale"for_sale, housing, jobs, services, gigs, community, cars_trucks, motorcycles, electronics, computers, cell_phones, furniture, free_stuff, apartments, rooms_shares, sublets, real_estate_for_sale
maxResultsinteger100Maximum listings per query per city, per city when browsing, and per search URL; run-wide duplicate listing IDs are omitted
includeDetailsbooleanfalseFollow each listing for full description, images, and attributes
minPriceinteger—Minimum price filter
maxPriceinteger—Maximum price filter
postedTodaybooleanfalseOnly listings posted in the last 24 hours
hasImagebooleanfalseOnly listings with photos
sortstring"date"date (newest), priceasc, pricedsc, rel (relevance)
maxRequestRetriesinteger3Retry attempts for failed requests (1–10)

Output example

{
"listingId": "7916291766",
"title": "Dell Inspiron notebook laptop computer",
"price": "$200",
"priceNumeric": 200,
"location": "Brooklyn",
"city": "newyork",
"category": "for_sale",
"url": "https://newyork.craigslist.org/brk/sys/d/brooklyn-dell-inspiron-notebook-laptop/7916291766.html",
"thumbnailUrl": "https://images.craigslist.org/00505_6GdwfDeDqEP_0t20CI_600x450.jpg",
"description": "Very good condition and seldom taken out of the house...",
"postedAt": "2026-02-19T18:13:00-0500",
"imageCount": 2,
"imageUrls": [
"https://images.craigslist.org/00505_6GdwfDeDqEP_0t20CI_600x450.jpg",
"https://images.craigslist.org/00r0r_75O90wuRsu3_0t20CI_600x450.jpg"
],
"latitude": 40.6782,
"longitude": -73.9442,
"address": "123 Flatbush Ave",
"bedrooms": null,
"sqft": null,
"availableDate": null,
"condition": "excellent",
"make": "dell",
"model": "inspiron",
"year": null,
"makeModel": null,
"attributes": { "condition": "excellent", "make": "dell", "model": "inspiron" },
"scrapedAt": "2026-03-03T00:11:52.977Z"
}

Tips for best results

  • Start without details — Basic mode scrapes 300+ listings in seconds. Enable includeDetails only when you need descriptions and images.
  • Use specific keywords — "macbook pro m3" returns better results than just "laptop".
  • Compare cities in one run — Add popular subdomains such as newyork, sfbay, losangeles, chicago, seattle, boston, denver, austin, miami, and portland to cities.
  • Filter by price — Use minPrice and maxPrice to narrow results to your target range.
  • Schedule regular runs — Use Apify Schedules for daily monitoring of new listings.
  • Combine categories — Run separate searches for "for_sale" and "housing" to build a comprehensive local market dataset.
  • Multiple keywords per run — Add several keywords to searchQueries for efficient batch scraping.

Integrations

Connect Craigslist Scraper to your existing tools and workflows:

  • Google Sheets — Export scraped data directly to Google Sheets.
  • Zapier — Trigger actions in 5,000+ apps when new listings are found.
  • Make (Integromat) — Build automated workflows with scraped Craigslist data.
  • Slack — Get notified when new listings match your criteria.
  • Webhooks — Send data to your own API endpoint after each run.
  • Apify API — Programmatically start runs and retrieve results.
  • Craigslist → Google Sheets rental tracker — Schedule daily housing scrapes and auto-append to a spreadsheet to track rent prices and availability over time.
  • Craigslist → Slack new listing alerts — Get notified instantly when new listings match your search criteria — great for competitive markets where listings go fast.

API usage

Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('automation-lab/craigslist-scraper').call({
searchQueries: ['laptop'],
city: 'newyork',
maxResults: 50,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient
client = ApifyClient('YOUR_API_TOKEN')
run = client.actor('automation-lab/craigslist-scraper').call(run_input={
'searchQueries': ['laptop'],
'city': 'newyork',
'maxResults': 50,
'includeDetails': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Craigslist cities

Popular city subdomains you can use:

CitySubdomainCitySubdomain
New YorknewyorkSan Franciscosfbay
Los AngeleslosangelesChicagochicago
SeattleseattleBostonboston
DenverdenverAustinaustin
MiamimiamiPortlandportland
DallasdallasAtlantaatlanta
PhoenixphoenixMinneapolisminneapolis
PhiladelphiaphiladelphiaWashington DCwashingtondc

For a complete list of cities, visit craigslist.org/about/sites.

cURL:

curl "https://api.apify.com/v2/acts/automation-lab~craigslist-scraper/runs" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"searchQueries": ["apartment"],
"city": "sfbay",
"category": "housing",
"maxResults": 50
}'

RSS feed export for saved-search alerts

For scheduled Craigslist saved-search alerts, create an Apify task and export the latest run as RSS with Apify's positional outputFields mapping:

https://api.apify.com/v2/actor-tasks/{TASK_ID}/runs/last/dataset/items?format=rss&fields=title,url,description,postedAt&outputFields=title,link,description,pubDate&token=YOUR_API_TOKEN

Use with AI agents via MCP

Craigslist Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/craigslist-scraper"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

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

Example prompts

Once connected, try asking your AI assistant:

  • "Search Craigslist SF for apartments under $2000/month"
  • "Find used cars in Los Angeles on Craigslist"
  • "Get all freelance gig postings in New York on Craigslist"

Learn more in the Apify MCP documentation.

Error reporting

Failed operations send sanitized diagnostic input, exceptions and Actor, build and run IDs to our private GlitchTip service so we can repair them. Secret fields and URL queries are removed, and reports are retained for 30 days.

Legality

Scraping publicly available data is generally legal according to the US Court of Appeals ruling (HiQ Labs v. LinkedIn). This actor only accesses publicly available information and does not require authentication. Always review and comply with the target website's Terms of Service before scraping. For personal data, ensure compliance with GDPR, CCPA, and other applicable privacy regulations.

FAQ

How many listings can I scrape per search? One Craigslist search page holds up to about 360 listings, so each keyword/city search returns at most that many. For more, split the search: several keywords, price bands (minPrice/maxPrice), subcategories, or several search URLs. Use maxResults to limit the output.

How fast is the scraper? Basic mode (no details) scrapes 300+ listings in 2-3 seconds. With includeDetails enabled, each listing takes about 1-2 seconds to fetch the detail page.

Can I search multiple cities? Yes. Set cities to an array of Craigslist subdomains or city names. Every keyword is searched in every selected city, results retain their source city, and duplicate listing IDs are returned only once.

What categories are available? For Sale, Housing, Jobs, Services, Gigs, and Community. These cover the main Craigslist sections.

Why are description and images empty? Enable the includeDetails option to fetch full descriptions, images, and posting dates from each listing's detail page. Basic mode only returns data from the search results page.

Listings are missing or the scraper returns 0 results. What happened? Craigslist may temporarily block requests from certain IPs. The scraper uses automatic retries, but if you consistently get 0 results, try a different city or verify the keyword returns results on Craigslist directly. Very niche keywords may have no listings in some cities.

Can I scrape multiple cities in one run? Yes. Use cities; the existing city input still works for single-city runs. Unsafe hostnames and URLs are never interpolated into Craigslist request hosts.

How do I search Craigslist across multiple cities at once?

Pass the city subdomains in one Actor call:

const run = await client.actor('automation-lab/craigslist-scraper').call({
searchQueries: ['macbook pro'],
cities: ['newyork', 'sfbay', 'losangeles', 'chicago', 'seattle'],
category: 'for_sale',
maxResults: 100,
});

The Actor fans every query out across the selected cities and writes one combined, deduplicated dataset. Schedule that single input for recurring cross-market price comparison or alerts.

Can I set up alerts for new Craigslist listings?

Yes. Use a combination of scheduled runs and integrations to get real-time-like alerts:

  1. Set up a Schedule in Apify Console to run the scraper every 15–60 minutes
  2. Connect a Webhook that fires when each run finishes
  3. In your webhook handler, compare new listings against previously seen IDs and filter for new ones
  4. Push new listings to Slack, email, or any notification service via Zapier or Make

This pattern is popular for competitive markets like SF Bay Area rentals or limited-supply items where listings disappear within hours.

Is Craigslist data useful for real estate market research?

Yes — Craigslist is one of the richest publicly available sources for local rental market data, particularly for smaller metros and informal listings not captured by Zillow or Apartments.com. Use the housing category to extract:

  • Rental price trends by neighborhood and bedroom count (bedrooms, sqft, priceNumeric)
  • Supply analysis — listing volumes by city and neighborhood
  • Geographic clustering — latitude/longitude coordinates for mapping rental density
  • Seasonal patterns — track pricing and availability changes month over month with scheduled runs

Enable includeDetails: true to get full descriptions, square footage, bedroom counts, and coordinates for each listing.

How do I find underpriced items on Craigslist for resale?

The most effective approach is to search multiple cities for the same item, filter by price, and compare against known market values:

  1. Set searchQueries to specific model names (e.g., "iphone 14 pro", "trek checkpoint")
  2. Set minPrice and maxPrice to filter out unrealistic listings
  3. Enable includeDetails: true for condition and full descriptions
  4. Run across 5–10 cities and sort results by priceNumeric ascending

The condition field (excellent, good, fair) and imageUrls help quickly filter quality listings before reaching out.

⌂ 换网址