DEV Community

Ben
Ben

Posted on

How to Find FSBO Real Estate Leads on Craigslist (Python + No-Code)

Every real-estate agent and investor wants FSBO leads — for-sale-by-owner
listings, where the seller has no agent and is reachable directly. Zillow charges
$300–$800/month for lead lists that every other agent also buys. Meanwhile
Craigslist is full of FSBO sellers, off-market deals and rentals, with almost no
competition mining it. If you can pull those listings into a spreadsheet, you've got
exclusive leads for pennies.

Why Craigslist for real estate?

  • Direct-to-owner — FSBO sellers post themselves, so there's no listing agent gatekeeping the contact.
  • Off-market — these properties aren't on the MLS, so they're not bid up.
  • Cheap & open — Craigslist is far easier to read than Zillow/Realtor, and most agents ignore it entirely.

The manual way (Python)

Craigslist exposes its categories per city subdomain. Real estate for sale is rea,
apartments/rentals are apa. You can request the "by owner" filter and parse the
result cards:

import httpx
from bs4 import BeautifulSoup

# San Francisco Bay Area, real estate for sale, by owner:
url = "https://sfbay.craigslist.org/search/rea?purveyor=owner"
html = httpx.get(url, headers={"User-Agent": "Mozilla/5.0"}, timeout=30).text
soup = BeautifulSoup(html, "lxml")
for el in soup.select("li.cl-static-search-result"):
    title = el.select_one(".title").get_text(strip=True)
    price = el.select_one(".price")
    print(title, "", price.get_text(strip=True) if price else "n/a")
Enter fullscreen mode Exit fullscreen mode

That gets you titles and prices. The real value — beds, baths, sqft, photos, the
posting body, FSBO detection and contact availability — lives on each listing's
detail page, so you'd fetch and parse those too.

The catch: scale, detail pages & lead scoring

A usable lead list means paging through results, opening every detail page, parsing
the inconsistent attributes, detecting by-owner vs agent, pulling photos and contact
info, and ideally scoring each lead so you work the hot ones first. Doing that
reliably across cities is the part worth automating.

The no-code option

The Craigslist Real Estate Scraper
on Apify does all of it — pick a city, category and the owner-only filter, click Run.

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

Output is one clean row per listing — price, beds, baths, sqft, location, photos,
body text, an FSBO flag, contact availability and a 0–100 AI lead score — ready
for a spreadsheet, a CRM, or your outreach tool. It covers rentals too (apa), and
supports postal-code radius search.

Common use cases

  • 🎯 Agents — find FSBO sellers for listing appointments before competitors do.
  • 💰 Investors — source motivated, un-bid-up sellers for flips and wholesale.
  • 🏢 Property managers — pull rental inventory and benchmark rates by area.
  • 📊 Market research — track pricing and supply trends across cities over time.

FAQ

How do I get FSBO leads specifically? Set the listing type to "owner" — it keeps
only by-owner listings and flags + scores each one.

Does it include rentals? Yes — both for-sale and rental categories.

Do I need an API key or login? No — just a city and your filters.

Can I search a specific area? Yes — use a postal code + radius.

Is scraping Craigslist legal? It reads publicly available listing data. Use it
responsibly for legitimate lead-gen and follow applicable laws and Craigslist's terms.


Building a real-estate lead pipeline? The Craigslist Real Estate Scraper handles the scraping. See also the FSBO Real Estate Scraper and Zumper Rental Scraper.

Top comments (0)