Craigslist Scraper
Pricing
Pay per event
Craigslist Scraper
Scrape Craigslist listings across any US city and category: for sale, housing, jobs, gigs, and services. Extracts titles, prices, locations, descriptions, and images. Supports price filtering and multi-query searches. Perfect for market research. Export to JSON, CSV, or Excel.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
0
Bookmarked
25
Total users
10
Monthly active users
2 days ago
Last modified
Categories
Share
What does Craigslist Scraper do?
Craigslist Scraper extracts listing data from Craigslist search results across any US city. Search by keyword in any category — for sale, housing, jobs, services, gigs, community — and get structured data for every listing. Optionally follow each listing URL to get full descriptions, images, posting dates, and item attributes.
Use it for market research, price comparison, lead generation, inventory sourcing, and local market analysis.
Use cases
- 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?
- Any US city — Works with any Craigslist subdomain: newyork, sfbay, losangeles, chicago, seattle, and hundreds more.
- All categories — For sale, housing, jobs, services, gigs, and community.
- Fast and lightweight — Pure HTTP extraction with Cheerio. No browser needed. Gets 300+ listings per search in seconds.
- Optional detail enrichment — Enable
includeDetailsto 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.
- Multiple search queries — Run several keyword searches in a single run.
- Clean structured data — Every listing includes title, price, location, URL, and more.
- Pay-per-event pricing — You only pay for listings scraped. No monthly subscription.
What data can you extract?
Each listing in the output includes:
| Field | Description |
|---|---|
listingId | Craigslist listing ID |
title | Listing title |
price | Price as displayed (e.g., "$200") |
priceNumeric | Price as a number (e.g., 200) |
location | Neighborhood or area within the city |
city | Craigslist city/region (e.g., "newyork", "sfbay") |
category | Category searched (e.g., "for_sale") |
url | Direct link to the listing |
description | Full listing description (when includeDetails is enabled) |
postedAt | Posting date/time as ISO string (when includeDetails is enabled) |
imageCount | Number of images (when includeDetails is enabled) |
imageUrls | Array of image URLs (when includeDetails is enabled) |
latitude | Latitude coordinate (when includeDetails is enabled) |
longitude | Longitude coordinate (when includeDetails is enabled) |
address | Street address (when includeDetails is enabled) |
bedrooms | Bedrooms/bathrooms (housing, when includeDetails is enabled) |
sqft | Square footage (housing, when includeDetails is enabled) |
condition | Item condition (for-sale, when includeDetails is enabled) |
scrapedAt | ISO 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.
| Event | Price |
|---|---|
| Actor start | $0.005 |
| Per listing | $0.002 |
Example costs:
- 20 listings (basic) → ~$0.045
- 100 listings (basic) → ~$0.205
- 10 listings with details → ~$0.025
- 1,000 listings → ~$2.01
The free tier on Apify gives you $5/month — enough for ~2,400 listings.
How to scrape Craigslist
- Click Try for free to open the Actor in Apify Console.
- Enter one or more search keywords (e.g., "laptop", "bicycle").
- Choose a Craigslist city (e.g., "newyork", "sfbay", "losangeles").
- Select a category (For Sale, Housing, Jobs, etc.).
- Optionally enable Include listing details for full descriptions and images.
- Click Start and wait for the run to finish.
- Download your data as JSON, CSV, or Excel from the Dataset tab.
Example input:
{"searchQueries": ["laptop", "macbook"],"city": "newyork","category": "for_sale","maxResults": 50,"includeDetails": true,"minPrice": 100,"maxPrice": 1000}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | array | required | Keywords to search on Craigslist |
city | string | "newyork" | Craigslist city subdomain (e.g., newyork, sfbay, losangeles, chicago) |
category | string | "for_sale" | Category: for_sale, housing, jobs, services, gigs, community |
maxResults | integer | 100 | Maximum listings to return per keyword |
includeDetails | boolean | false | Follow each listing for full description, images, and attributes |
minPrice | integer | — | Minimum price filter |
maxPrice | integer | — | Maximum price filter |
maxRequestRetries | integer | 3 | Retry 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","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": "","sqft": "","condition": "excellent","scrapedAt": "2026-03-03T00:11:52.977Z"}
Tips for best results
- Start without details — Basic mode scrapes 300+ listings in seconds. Enable
includeDetailsonly when you need descriptions and images. - Use specific keywords — "macbook pro m3" returns better results than just "laptop".
- Try different cities — Compare prices across cities for arbitrage. Popular cities: newyork, sfbay, losangeles, chicago, seattle, boston, denver, austin, miami, portland.
- Filter by price — Use
minPriceandmaxPriceto 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
searchQueriesfor 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.
Using the Apify API
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 ApifyClientclient = 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().itemsprint(items)
Craigslist cities
Popular city subdomains you can use:
| City | Subdomain | City | Subdomain | |
|---|---|---|---|---|
| New York | newyork | San Francisco | sfbay | |
| Los Angeles | losangeles | Chicago | chicago | |
| Seattle | seattle | Boston | boston | |
| Denver | denver | Austin | austin | |
| Miami | miami | Portland | portland | |
| Dallas | dallas | Atlanta | atlanta | |
| Phoenix | phoenix | Minneapolis | minneapolis | |
| Philadelphia | philadelphia | Washington DC | washingtondc |
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}'
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"
Setup for Claude Desktop, Cursor, or VS Code
Add this to your MCP config file:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com"}}}
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.
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?
Craigslist returns up to ~300-400 listings per search query. 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? Currently, each run searches one city. To search multiple cities, run the actor once per city or schedule separate runs.
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? Currently, each run searches one city. To search multiple cities, schedule separate runs for each city or use the Apify API to start multiple runs programmatically.
How do I search Craigslist across multiple cities at once?
Each run searches one city. To cover multiple cities, use the Apify API to start parallel runs programmatically:
const cities = ['newyork', 'sfbay', 'losangeles', 'chicago', 'seattle'];const runs = await Promise.all(cities.map(city =>client.actor('automation-lab/craigslist-scraper').call({searchQueries: ['macbook pro'],city,category: 'for_sale',maxResults: 100,})));
Alternatively, use Apify's Scheduler to run separate city searches automatically and merge the results in Google Sheets. This is the most common setup for price comparison arbitrage across US markets.
Can I set up alerts for new Craigslist listings?
Yes. Use a combination of scheduled runs and integrations to get real-time-like alerts:
- Set up a Schedule in Apify Console to run the scraper every 15–60 minutes
- Connect a Webhook that fires when each run finishes
- In your webhook handler, compare new listings against previously seen IDs and filter for new ones
- 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:
- Set
searchQueriesto specific model names (e.g., "iphone 14 pro", "trek checkpoint") - Set
minPriceandmaxPriceto filter out unrealistic listings - Enable
includeDetails: truefor condition and full descriptions - Run across 5–10 cities and sort results by
priceNumericascending
The condition field (excellent, good, fair) and imageUrls help quickly filter quality listings before reaching out.
Other ecommerce scrapers
- Amazon Scraper -- Scrape Amazon product data, prices, and reviews.
- eBay Scraper -- Scrape eBay listings, prices, and seller data.
- Walmart Scraper -- Scrape Walmart product data, prices, and reviews.
- Etsy Scraper -- Scrape Etsy product listings, seller data, and shop reviews.
- Target Scraper -- Scrape Target product data and prices.
- Shopify Scraper -- Scrape products from any Shopify store.
