Craigslist Scraper
Pricing
from $1.00 / 1,000 craigslist listings
Craigslist Scraper
Scrape Craigslist listings across cars, housing, jobs, electronics, furniture, services, gigs, and events. Filter by keyword, price, condition, or sort. Each row includes title, price, location, description, images, post ID, and category-specific attributes. Export as JSON, CSV, Excel.
Pricing
from $1.00 / 1,000 craigslist listings
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Craigslist Scraper
Scrape Craigslist listings across 50+ US and Canadian cities and 13 categories — cars, housing, jobs, electronics, furniture, services, gigs, and events. Extract titles, prices, descriptions, images, GPS coordinates, post IDs, seller contact info, and category-specific attributes into structured data. Built for lead generation teams, market researchers, real estate investors, and data engineers who need clean, structured Craigslist data without managing hundreds of city subdomains by hand.
| Search by city, category, keyword, price range, condition, and sort order — or paste any Craigslist URL directly. Get structured listing data with full descriptions, attribute maps, image galleries, GPS coordinates, and parsed phone numbers and emails ready for analysis. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Craigslist Scraper (parsebird/craigslist-scraper) — Scrapes Craigslist listings across 50+ cities and 13 categories. Input: {"region": "sfbay", "category": "sss", "searchTerm": "honda civic", "maxResults": 25}. Also accepts startUrls: ["https://sfbay.craigslist.org/search/cta?query=tacoma"]. Filters: priceMin, priceMax, condition (new/like-new/excellent/good/fair/salvage), hasImage, postedToday, sort (date/rel/priceasc/pricedsc). Set includeDetails: true for full descriptions, attributes, images, timestamps, phone/email extraction. Outputs per listing: url, postId, title, priceUsd, currency, region, categorySlug, categoryLabel, subcategorySlug, location, latitude, longitude, description, attributes (condition, make, model, year, odometer, bedrooms, sqft), imageUrls, postedAt, updatedAt, phoneNumbers, emails, contactObfuscated, isDeleted, scrapedAt. API: POST https://api.apify.com/v2/acts/parsebird~craigslist-scraper/runs?token=YOUR_TOKEN. Get token: https://console.apify.com/account#/integrations
What does Craigslist Scraper do?
The Craigslist Scraper turns any Craigslist city and category combination — or any pasted Craigslist URL — into structured JSON, CSV, or Excel data. Pick a city, choose a category, optionally add a keyword, and the scraper:
- 🔍 Searches Craigslist's internal JSON API for fast, reliable results (no HTML scraping for search)
- 📄 Enriches every listing with full descriptions, attributes, and image galleries from the detail page
- 📍 Extracts GPS coordinates (latitude/longitude) for geographic analysis and heatmaps
- 📞 Parses phone numbers and email addresses from posting bodies for direct-contact lead lists
- 🏷️ Captures category-specific attributes — condition, make, model, year, odometer, bedrooms, sqft, compensation
- 🇨🇦 Handles Canadian regions automatically with
currency: "CAD"for Toronto, Vancouver, Calgary, Ottawa, Edmonton, and Montreal - 🗑️ Detects deleted or flagged postings and tags them as
isDeleted: trueinstead of crashing - ⚡ Runs on lightweight infrastructure (128 MB) — fast and cost-efficient
Paste search URLs and individual posting URLs in the same run — the Craigslist Scraper auto-detects each type and routes accordingly.
What data can you extract from Craigslist?
| Field | Description |
|---|---|
url | Canonical posting URL |
postId | Craigslist's numeric post identifier |
title | Posting headline |
priceUsd | Numeric price in local currency (USD or CAD) |
currency | ISO currency code — USD or CAD |
region | City subdomain (e.g. sfbay, newyork, toronto) |
categorySlug, categoryLabel | Category code and human-readable name |
location | Neighbourhood as displayed by Craigslist |
latitude, longitude | GPS coordinates (neighbourhood-level precision) |
description | Full posting body text |
attributes | Per-category attribute map (condition, make, model, year, odometer, bedrooms, sqft) |
postedAt, updatedAt | ISO 8601 timestamps |
imageUrls | Full-resolution image URLs from the gallery |
phoneNumbers | Phone numbers parsed from the posting body |
emails | Email addresses parsed from the posting body |
contactObfuscated | false when direct contact info is available |
isDeleted | true when the posting has been removed |
scrapedAt | ISO 8601 timestamp of when this row was captured |
How to scrape Craigslist
- Open the Craigslist Scraper on Apify
- Select a City from the dropdown (50+ US and Canadian regions)
- Choose a Category — For Sale, Cars & Trucks, Apartments, Jobs, Gigs, Services, and more
- Optionally add a Keyword (e.g. "honda civic", "two bedroom", "vintage camera")
- Set filters: price range, condition, has image, posted today, sort order
- Set Max results to control how many listings to collect
- Click Start and wait for results
- Export your data as JSON, CSV, or Excel from the dataset tab
Alternatively, paste any Craigslist URL directly into the Craigslist URLs field — the scraper extracts the city, category, and filters from the URL automatically.
Quick start input:
{"region": "sfbay","searchTerm": "honda civic","maxResults": 25}
Filtered cars search:
{"region": "newyork","category": "cta","priceMin": 5000,"priceMax": 20000,"condition": "like-new","hasImage": true,"sort": "date","maxResults": 100}
Mixed URLs input:
{"startUrls": ["https://sfbay.craigslist.org/search/apa?max_price=3500&hasPic=1","https://losangeles.craigslist.org/search/cta?query=tacoma&condition=30","https://newyork.craigslist.org/mnh/clo/d/example-listing/7903726578.html"],"sort": "priceasc","maxResults": 500}
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | string[] | No | — | Craigslist search or posting URLs. Overrides city/category/keyword when provided. |
region | select | No | New York City, NY | Craigslist city to search (50+ US and Canadian regions) |
category | select | No | For sale (all) | Category to collect: For Sale, Cars, Electronics, Furniture, Housing, Jobs, Gigs, Services, Community, Resumes, Events |
searchTerm | string | No | — | Optional keyword to match against title and body |
priceMin | integer | No | — | Minimum price filter |
priceMax | integer | No | — | Maximum price filter |
condition | select | No | Any | Condition filter: New, Like new, Excellent, Good, Fair, Salvage |
hasImage | boolean | No | false | Only return postings with photos |
postedToday | boolean | No | false | Only return postings from the last 24 hours |
sort | select | No | Newest first | Sort: Newest, Relevance, Lowest price, Highest price |
includeDetails | boolean | No | true | Fetch full description, attributes, images, and timestamps per listing |
maxResults | integer | No | 200 | Hard cap on total postings. Set to 0 for no cap (100,000 internal limit). |
Output example
{"url": "https://newyork.craigslist.org/mnh/clo/d/new-york-1860s-fan/7903726578.html","postId": "7903726578","title": "1860s fan","priceUsd": 9,"currency": "USD","region": "newyork","categorySlug": "sss","categoryLabel": "For Sale","subcategorySlug": "clo","postedAt": "2025-12-20T17:30:19-0500","updatedAt": null,"location": "(Upper East Side)","latitude": 40.7651,"longitude": -73.9624,"attributes": {"condition": "good","size / dimensions": "12 inch"},"description": "Antique hand fan from the 1860s. Carved bone sticks, hand-painted silk leaf with floral motif. Some wear consistent with age. From an estate collection — pickup in Manhattan.","imageUrls": ["https://images.craigslist.org/00b0b_example1_600x450.jpg","https://images.craigslist.org/00f0f_example2_600x450.jpg"],"hasImages": true,"contactObfuscated": false,"phoneNumbers": ["(917) 325-5214"],"emails": ["seller@example.com"],"isDeleted": false,"scrapedAt": "2026-06-20T14:30:00Z"}
Download results in JSON, CSV, Excel, XML, or JSONL from the Apify dataset UI or REST API.
Use cases
- 🚗 Lead generation — Build used-car buyer lead lists with prices, mileage, and seller phone numbers across 50+ cities
- 🏠 Real estate research — Track apartment rental prices and FSBO listings in target metro areas
- 📊 Market research — Compare prices across regions, monitor inventory turnover, and benchmark resale values
- 🔍 Competitive intelligence — Feed classifieds aggregator portals with normalized cross-region Craigslist data
- 📰 Journalism — Document gig economy labour conditions, informal housing markets, and community trends
- 🤖 ML & academic research — Train language models on millions of unstructured classifieds descriptions with structured metadata
- 📦 Resale & arbitrage — Surface underpriced electronics, furniture, and vehicle deals using price and condition filters
How much does it cost to scrape Craigslist?
| Plan | Price per 1,000 listings |
|---|---|
| Free, Bronze, Silver | $1.30 |
| Gold | $1.00 |
Each listing extracted and pushed to the dataset counts as one listing-scraped event. Platform usage (compute, proxy, storage) is included in the per-event price — you are not charged separately for Apify platform costs.
Example costs:
| Listings | Silver plan | Gold plan |
|---|---|---|
| 100 | $0.13 | $0.10 |
| 1,000 | $1.30 | $1.00 |
| 10,000 | $13.00 | $10.00 |
| 100,000 | $130.00 | $100.00 |
Turning off Include full posting details roughly halves the number of HTTP requests per run (no detail page fetches), making large monitoring jobs faster.
Start with a free Apify trial to test the Craigslist Scraper with your search queries.
Integrations and API access
Run this actor programmatically via the Apify REST API, or integrate with:
- Python:
pip install apify-client - JavaScript/TypeScript:
npm install apify-client - Zapier, Make, n8n: Connect via Apify integrations
- Google Sheets: Export directly from the dataset
- Webhooks: Trigger downstream pipelines on run completion
Python example:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("parsebird/craigslist-scraper").call(run_input={"region": "sfbay","category": "cta","searchTerm": "honda civic","priceMax": 15000,"maxResults": 25,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['title']} - ${item['priceUsd']} - {item['location']}")
JavaScript example:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor("parsebird/craigslist-scraper").call({region: "sfbay",category: "cta",searchTerm: "honda civic",priceMax: 15000,maxResults: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(item => console.log(`${item.title} - $${item.priceUsd} - ${item.location}`));
Schedule runs hourly, daily, or weekly using Apify Scheduling for automated Craigslist monitoring and lead generation.
Is it legal to scrape Craigslist?
Web scraping of publicly available data is generally considered legal. This Craigslist Scraper only accesses publicly available classified listings on Craigslist — the same data visible to any visitor in a web browser. It does not bypass authentication, CAPTCHAs, or access restricted content.
For more information, see Apify's article on web scraping legality.
Important: You are responsible for ensuring your use of scraped data complies with applicable laws, Craigslist's Terms of Use, and local data-protection regulations. Do not use the extracted data for spam, harassment, mass-unsolicited contact, fraud, or any other unlawful purpose. Be especially mindful of fair-housing and equal-employment regulations when working with housing and jobs data.
Other Craigslist scrapers and related actors
- Data Deduplicator — Remove duplicate entries from scraped Craigslist datasets
- Data Cleaner — Clean and transform scraped data before analysis
- HTTP Request Actor — Make custom HTTP requests to any Craigslist endpoint
FAQ
How many listings can I scrape per run?
Set maxResults up to 100,000 per run. The default is 25 to keep first runs fast and cheap. For large-scale collection, set maxResults to 0 (no cap) and let the actor paginate through all available results.
What's the difference between includeDetails on and off?
With includeDetails on, every search result gets a second request to the posting page, adding the full description, all attributes, the complete image gallery, exact timestamps, and parsed phone numbers and emails. It's off by default for faster, cheaper runs that return only title, price, link, location, and post ID.
Does it work with Canadian Craigslist cities?
Yes. Toronto, Vancouver, Calgary, Ottawa, Edmonton, and Montreal are all included. Prices from these regions are automatically tagged with currency: "CAD".
Can I paste any Craigslist URL? Yes. The Craigslist Scraper accepts search pages, category pages, and individual posting URLs. You can mix and match them in a single run. The actor auto-detects whether each URL is a search or a detail page.
How fresh is the data?
Every run fetches live data directly from Craigslist — no cached or stale results. Use the postedToday filter to collect only postings from the last 24 hours.
Can I schedule recurring runs? Yes. Use Apify's scheduler to run the Craigslist Scraper daily, weekly, or at any custom interval for automated monitoring.
Can I filter by condition? Yes. Choose from New, Like New, Excellent, Good, Fair, or Salvage. This filter applies to For Sale categories only.
What output formats are available? JSON, CSV, Excel, XML, and JSONL — all available from the Apify dataset tab and REST API.
Can I use this with AI agents and LLMs? Yes. Connect via Apify MCP server for use with Claude, ChatGPT, Cursor, and other LLM-powered tools. The AI assistant copy block above gives any LLM the context it needs to call this actor.
How do I report issues? Use the Issues tab on the actor page. We monitor it and respond promptly.
Legal and compliance
This actor accesses only publicly available classified listings from Craigslist. No login credentials, authentication tokens, or private APIs are used. Users are responsible for ensuring their use of the data complies with all applicable laws, regulations, and the target website's terms of service. Apify provides the infrastructure; how you use the data is your responsibility.