Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Craigslist scraper with Python and Apify

Run the hosted Craigslist Scraper without code, or call it from Python, JavaScript or cURL to collect structured listings, prices, locations, images and posting details across 50 US and Canadian regions.

Open Craigslist Scraper on Apify

What this repository helps you do

  • Search Craigslist by region, category, keyword, price, condition, image and date filters.
  • Collect cars, housing, jobs, electronics, furniture, services, gigs, community, resumes and events.
  • Export deduplicated listings with descriptions, attributes, gallery URLs, map data and public contact text when published.

Example result

See data/sample-output.json and data/sample-output.csv for a sanitized listing example.

{
  "postId": "7961647320",
  "title": "MAXFLI Golf Bag & misc. clubs",
  "price": 30,
  "currency": "USD",
  "region": "newyork",
  "categoryLabel": "For sale",
  "location": "Upper East Side",
  "hasImages": true,
  "detailsStatus": "not_requested"
}

Run without code

  1. Open Craigslist Scraper on Apify.
  2. In the Input tab, choose a city or region and category, or paste a Craigslist search URL.
  3. Optionally set a keyword, price range, condition, image/date filters and maximum results.
  4. Choose whether to include full posting details and click Start.
  5. Open the Dataset tab and export JSON, CSV or Excel.

See docs/no-code-guide.md for the field-by-field walkthrough.

Try it with Apify's free plan

Apify's Free plan includes $5 in monthly prepaid usage and does not require a credit card. It can cover a small first test while credit is available; it is not unlimited free usage. Unused credits expire at the end of the billing cycle. Check current Apify pricing before larger runs.

Quick start for developers

Install the client and set APIFY_API_TOKEN, then run:

pip install -r examples/python/requirements.txt
python examples/python/craigslist_search.py

The example reads data/sample-input.json, starts the hosted Actor and prints Dataset items.

Input example

{
  "region": "seattle",
  "category": "ela",
  "searchTerm": "20uf",
  "includeDetails": true,
  "maxResults": 20
}

category uses readable Craigslist codes: sss For sale, cta Cars & trucks, ela Electronics, fua Furniture, apa Apartments & houses, roo Rooms & shares, sub Sublets & temporary, jjj Jobs, ggg Gigs, bbb Services, ccc Community, rrr Resumes and eee Events. Use startUrls for a specific subcategory.\n\nSee docs/input-reference.md for all fields.

Request examples

Examples use the hosted Actor and do not expose a proxy or require source code locally.

Output fields

Field Meaning
postId, url, title Stable Craigslist posting identity and title.
price, currency Published asking price and local currency.
region, categoryLabel, location, neighborhood Search area and published location labels.
description, attributes, imageUrls Optional detail-page content and category fields.
latitude, longitude, mapAccuracy Published map coordinates and precision when available.
emails, phoneNumbers Contact text publicly published in the posting.
detailsStatus, isDeleted, isNearby Extraction, deletion and nearby-result status.

See docs/output-reference.md for the complete contract.

Common use cases

See docs/use-cases.md for vehicle price research, housing monitoring, job-market collection and second-hand inventory tracking.

How to scrape Craigslist listings with Python

Use examples/python/craigslist_search.py with a small maxResults value for a first run, then export the returned Dataset to JSON or CSV.

How to collect Craigslist housing and job listings by city

Set region to a supported US or Canadian area and choose apa for apartments and houses or jjj for jobs. Use searchTerm and maxResults to narrow the run.

FAQ

See docs/faq.md.

Limits and pricing

The Actor accepts up to 100 startUrls and has a global safety cap of 100,000 unique output rows. includeDetails is optional; failed detail enrichment keeps the valid listing with a detailsStatus value. The current introductory price is $0.001 per unique listing ($1 per 1,000 listings). Billing is shown on the hosted Actor page.

Hosted version

Use the hosted version for repeatable runs, scheduling, batching, API access and Dataset storage: Craigslist Scraper on Apify.

Responsible use

Use returned data lawfully and respect Craigslist terms, access rules and privacy obligations. The Actor does not open the private Reply flow or reconstruct hidden seller contact details.

Support

For examples, open a GitHub issue with sanitized input and the error message. For execution problems include the Apify run ID, never your token.

License

MIT. See LICENSE.

About

Collect structured Craigslist listings, prices and posting details across US and Canadian regions with Apify.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors