← Catalog · Zumper rental data · Managed feeds · Actor

How to Get Craigslist Real Estate Listings as Structured Data (FSBO, Rentals, Rooms)

29 Oct 2026 · benthepythondev

Craigslist carries a lot of housing listings that never show up on the big portals: homes sold by their owners, rentals posted by landlords and property managers, rooms and sublets. Reading them one at a time in a browser is slow, and the pages aren't built for export. The Craigslist Real Estate Scraper turns a Craigslist housing search into one structured row per listing. You can download the results as JSON, CSV or Excel, or call it as an API.

Looking for rentals from a portal instead? See the Zumper rental data guide.

What you get

Each listing comes back as one record with these fields:

Real example output

This is a trimmed excerpt from a real run on the SF Bay Area apartments category (the body text and photo list are shortened):

{
  "url": "https://www.craigslist.org/view/d/walnut-creek-inviting-br-wood-style/kpMrJkDZ319i1rCzAVaZFG",
  "source": "craigslist",
  "scraped_at": "2026-10-24T22:57:25.323130",
  "post_id": "7989377496",
  "title": "Inviting 2 BR-Wood-Style Floors, Laundry, Walk Everywhere",
  "price": 2425,
  "body": "North Main Apartments\n2971 N Main St , Walnut Creek, CA, 94597\n...",
  "bedrooms": 2,
  "bathrooms": 1,
  "sqft": 925,
  "location": "2971 N Main St",
  "latitude": 37.927894,
  "longitude": -122.062031,
  "posting_date": "2026-10-24T15:44:22-0700",
  "photos": ["https://images.craigslist.org/00000_amiLdLysa5q_0jm0dP_600x450.jpg"],
  "attributes": ["2BR / 1Ba", "925ft2", "rent period:", "monthly", "cats are OK - purrr", "apartment", "laundry in bldg", "carport", "wheelchair accessible"],
  "reply_link": "https://sfbay.craigslist.org/reply/sfo/apa/7989377496",
  "by_owner": false,
  "housing_type": "/ 2br - 925ft2 -",
  "contact_available": true,
  "lead_score": 58
}

You can check that score by hand. It's an agent listing (10 points), it has 6 photos (10) and contact is available (10), the price is under $100k (5), it's under 1,000 sq ft (3), and price, bedrooms, size and photos are all present (20). That adds up to 58.

Use cases

From the actor's README:

  1. FSBO lead generation for agents. Set listingType to owner and category to rea to list owners selling without an agent. Sort by lead_score so the listings with photos and a reply option come first.
  2. Off-market deals for investors. The same by-owner filter, combined with price limits and postalCode plus searchDistance, gives you a short list of direct sellers in one area.
  3. Rental benchmarking for property managers and landlords. Pull the apa category for a city and compare price, sqft, bedrooms and the attributes tags (laundry, parking, pets) across neighborhoods.
  4. Market research over time. Run the same search on a schedule and track how pricing and supply change across cities.

How to run it on Apify

Open the actor at apify.com/benthepythondev/craigslist-real-estate-scraper and fill in the input. There are two modes. search takes a city code (sfbay, newyork, losangeles, chicago and so on) and a category: apa for rentals, rea for sale, roo for rooms, sub for sublets or vac for vacation. direct_urls takes exact listing URLs instead.

A for-sale-by-owner search looks like this:

{
  "mode": "search",
  "city": "sfbay",
  "category": "rea",
  "listingType": "owner",
  "minPrice": 200000,
  "maxPrice": 900000,
  "minBedrooms": 2,
  "maxListings": 100,
  "includeLeadScore": true
}

Once a run finishes, you can view the dataset as a table or export it. Runs can also go on a schedule or feed Make, Zapier or n8n.

Pricing: $0.02 per returned listing, plus a $0.00005 actor-start event per GB of run memory. At the standard 512 MB setting, 10 listings cost about $0.20005 before account discounts.

Open the actor

How to call it as an API on RapidAPI

If you'd rather make HTTP requests than use the Apify console, the same scraper is listed on RapidAPI: rapidapi.com/benthepythondev0/api/craigslist-real-estate-scraper. Use the endpoint docs and plans on that page.

Honest limits