Craigslist Real Estate & Housing Scraper
Pricing
from $1.00 / 1,000 property card scrapeds
Craigslist Real Estate & Housing Scraper
Scrape Craigslist housing — apartments, rooms, vacation rentals, real estate for sale. Beds/baths/sqft, price, address, geo. MCP-ready. Cheerio + Residential.
Pricing
from $1.00 / 1,000 property card scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
What is Craigslist Real Estate Scraper?
Extract public Craigslist housing listings into structured JSON for rental shortlists, FSBO research, market scans, and MCP/API agents. Search by metro site code and housing category, filter by price or bedrooms, or paste a Craigslist housing search / listing URL. Each row includes title, price, beds/baths/sqft when published, neighborhood, address/geo when public, and optional full description — HTTP-only with Apify Residential, no login.
Run it on Apify for scheduling, API access, residential proxy, and Pay per event billing with a clear maxResults cost cap.
Best fit
Choose this Actor when you need public Craigslist housing listings with price, beds, and location fields when the board publishes them. It works well for SF Bay, New York, and Austin rental lead lists, roommate searches, vacation-rental scans, and off-MLS FSBO research where Craigslist is the source board.
For all Craigslist categories (jobs, for-sale, services, gigs), continue with Craigslist All-in-One Scraper when the next step is multi-category classifieds rather than housing-only. For US for-sale / rental listing search on Zillow, then use Zillow Search Scraper when the source board is Zillow. For UK property BUY / RENT / SOLD, continue with Rightmove All-in-One Scraper when the market is the UK.
Workflow story
A rental-ops analyst sets site to sfbay, category to apa, minBedrooms to 2, minPrice/maxPrice to 2000/4000, and maxResults to 5. The Actor fetches the public Craigslist housing search over Residential, optionally opens each listing for description and attributes, writes one validated row per listing, then the analyst exports CSV into a lead sheet and keeps only rows under $3500 with bedrooms >= 2.
How it works
- Builds a Craigslist housing search URL from site/category/filters, or uses caller-supplied housing start URLs
- Fetches listing pages over HTTPS with Apify Residential (Craigslist works best on residential exits)
- Optionally enriches each listing from the detail page (description, attributes, images, reply URL)
- Charges
property-scrapedorproperty-detailed, thenpushData, and writesOUTPUT/RUN_SUMMARYwith an honest outcome
Input example
{"site": "sfbay","category": "apa","minPrice": 2000,"maxPrice": 4000,"minBedrooms": 2,"maxResults": 5,"includeDetails": false}
URL mode:
{"startUrls": [{ "url": "https://www.craigslist.org/search/area/newyork?cat=roo&max_price=1500" }],"maxResults": 5,"includeDetails": true}
| Field | What it controls |
|---|---|
site / sites | Craigslist metro code(s) such as sfbay, newyork, austin |
category | Housing class: apa, hhh, roo, sub, vac, rea, off, prk, swp, hsw |
startUrls | Housing search or listing URLs (overrides site/category builders) |
maxResults | Hard property cap (default 25; quality prefill 5) |
includeDetails | Fetch full description + attributes from the listing page |
extractContacts | Also pull public body email/phone + reply URL (turns details on) |
minPrice / maxPrice / bedrooms / bathrooms / sqft | Common housing filters |
proxyConfiguration | Defaults to Apify Residential — leave as-is |
Output fields
| Field | Description |
|---|---|
listingId + title + url | Stable listing token, title, and canonical page |
site / category / neighborhood | Metro, housing class, and area label |
priceText / priceNumeric / currency | Rent or sale price when shown |
bedrooms / bathrooms / sqft / housingType | Size and type when Craigslist publishes them |
address / geo / postedAt | Location and freshness when public |
description / images / contact | Detail-mode body, gallery, and reply link |
detailEnriched / source / scrapedAt | Enrich flag, craigslist.org, scrape time |
Example output
You can download the dataset in JSON, HTML, CSV, or Excel.
{"listingId": "r69N4UvYf6GCWN9BwkVJSB","title": "Where style meets substance: 2 BR homes up for grabs!","url": "https://www.craigslist.org/view/d/fremont-where-style-meets-substance-br/r69N4UvYf6GCWN9BwkVJSB","site": "sfbay","category": "apa","neighborhood": "Fremont","priceText": "$2,924","priceNumeric": 2924,"currency": "USD","bedrooms": 2,"bathrooms": 2.5,"sqft": 1004,"housingType": "townhouse","address": "3939 Monroe Ave, Fremont, CA 94536","geo": { "lat": 37.551, "lng": -121.991 },"detailEnriched": true,"source": "craigslist.org","scrapedAt": "2026-09-30T00:00:00.000Z"}
Pricing
This Actor uses Pay per event. The live Pricing tab is the source of truth for effective event fees, platform usage payer, and any scheduled pricing changes. When Pay per event plus usage applies, callers pay platform compute, proxy traffic, and storage usage separately from the event fees.
apify-actor-start: the run-start event, scaled by allocated memory (minimum one event)property-scraped: one saved search-card row (primary)property-detailed: one saved listing enriched from its detail page
For five cards, event fees are five times the effective card price plus the Actor start event. Platform usage is separate when the Pricing tab enables Pay per event plus usage. Invalid input and empty valid searches leave property events unbilled. Enabling includeDetails switches the row event to property-detailed.
API example
curl "https://api.apify.com/v2/acts/khadinakbar~craigslist-real-estate-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"site":"sfbay","category":"apa","minBedrooms":2,"maxResults":5,"includeDetails":false}'
After completion, read dataset items and the OUTPUT / RUN_SUMMARY key-value records.
Best results
- Keep
maxResults≤ 5 while testing filters so you can validate bed/bath fill rates before a larger harvest. - Leave Residential proxy as the default — Craigslist works best on residential exits.
- Prefer
includeDetails: truewhen you need the full description, attributes, or reply URL from the listing page. - Beds, baths, and sqft stay sparse on some cards: empty numeric fields mean Craigslist omitted them, and the Actor still returns title, price, neighborhood, and URL.
- Empty but valid searches finish successfully with
VALID_EMPTYand zero property charges. - Hitting
maxResultsfinishes asPARTIALby design — raise the cap when you need a larger sample. - Non-Craigslist or non-housing start URLs finish as
INVALID_INPUTwith zero property charges. - Tighten price and bedroom filters when you want a focused shortlist from the first public search page.
Use with AI agents (Apify MCP)
Scrape Craigslist SF Bay apartments with at least 2 bedrooms between $2000 and $4000. Return title, price, bedrooms, bathrooms, neighborhood, and url. Cap at 5 listings.
Connect via https://mcp.apify.com. Tool name shape: apify--craigslist-real-estate-scraper. Read OUTPUT.outcome and itemsPushed before treating an empty dataset as an outage. Cost signal: one card event or one detail event per saved row, plus the start event and platform usage when applicable. Provenance fields include source, url, and scrapedAt. Pagination stays on the first public search page per site/category query.
Builder's note
I built this around Craigslist's public static search list and ld_searchpage_results JSON-LD because beds, baths, and geo already arrive without a login when Residential clears the path. I learned that the classic subdomain search URLs redirect to www.craigslist.org/search/area/{site}, and that deep ?s= offsets bounce back to page one, so the honest contract is one public HTML page plus optional detail enrich. My goal was one validated public housing row per listing with truthful PPE billing.
Legal disclaimer
Craigslist® and related marks are trademarks of their respective owners. This independent Actor is not affiliated with, associated with, or endorsed by Craigslist.
You remain responsible for complying with applicable laws, Craigslist terms of use, and your own data-use policies. Use results for lawful housing research and market analysis only. Prefer lawful research over spam or unlawful processing of personal data.
For feedback or custom workflows, use the Actor Issues tab on Apify.
Event allowance and housing controls
The Actor checks the run-effective event allowance before starting requests, bounds detail-page work by funded rows, and returns PARTIAL if the allowance cannot fund a property. maxResults bounds row count; it is not a total platform-cost ceiling. Keep run memory, timeout and concurrency bounded when platform usage is charged separately.
Housing controls include multiple metro sites, ten housing categories, minimum and maximum bedrooms and bathrooms, square-footage bounds, housing types, pets, furnishing, photos, posting age and ZIP radius. These provide a broader housing search input than the common city/price/minimum-bedroom workflow. Listing details remain source-dependent; the Actor does not produce an AI lead score or deeper public-HTML pagination.