Craigslist Scraper — Listings, Photos & Prices
Pricing
from $3.00 / 1,000 results
Craigslist Scraper — Listings, Photos & Prices
Scrape Craigslist listings (apartments, jobs, for sale, etc.) for any US city. Returns title, price, beds, sqft, location, and listing URL.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Maged
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
19 days ago
Last modified
Categories
Share
Extract complete, structured Craigslist listing data for any US city and category. Apartments, jobs, cars, electronics, furniture, free stuff, and more — with verified working links, all photos, full descriptions, exact timestamps, and neighborhood context. Ready for analysis, lead generation, price monitoring, or automation in seconds.
Why this scraper beats the rest
Most Craigslist scrapers share the same problems: broken links, missing data, slow page-by-page fetching, and thumbnail-only images. Here's how we solve every one of them.
⚡ Fast bulk extraction — not one page at a time
Other scrapers load Craigslist search pages one by one. This scraper collects listings in large batches, making bulk extraction 10–30× faster — thousands of listings in the time others take for a few pages.
🔗 Every URL actually works
Craigslist uses a regional routing system that most scrapers get wrong. Listings don't just live at city.craigslist.org/category — they require a subarea path like /eby/, /sfc/, /brk/ that's specific to each listing. We decode this from the listing data itself, so every URL we return resolves to the real listing page. No dead links, no 404s.
🖼️ All photos — not just the thumbnail
We extract every image in the listing (up to 24 photos per post), not just the search result thumbnail. Critical for real estate analysis, vehicle inspection, or inventory tracking where you need to see the full picture.
🕐 Exact posted timestamps
Every listing includes the precise UTC datetime it was posted, accurate to the second. No vague "3 hours ago" — a real ISO 8601 timestamp you can sort, filter, and compare programmatically.
📍 Neighborhood-level context
Beyond GPS coordinates, each result includes the neighborhood or district name as listed by the poster — useful for market segmentation, heatmaps, and local trend analysis.
📄 Full descriptions and attributes (optional)
Enable scrapeDetails to get the complete listing description, structured attribute list (parking type, pet policy, laundry, A/C, car specs, availability date), and street address when shown. This is the data you normally only see when you click through to the listing itself.
🎛️ Real filter controls
Price range, photo requirement, posted-today filter, and sort order (newest / cheapest / most expensive / most relevant) — all applied server-side so you only retrieve the results you need.
Use cases
- Real estate market research — track rental prices, inventory, and availability by neighborhood
- Lead generation — catch new job posts, service listings, or for-sale items the moment they appear
- Price intelligence — monitor vehicle, electronics, or furniture prices across cities over time
- Competitive analysis — track listing volume, pricing trends, and time-to-removal
- Deal hunting — sort by price ascending with a keyword filter to surface the best deals first
- Academic and journalistic research — large-scale classified data without manual effort
How to use
- Open the Actor in Apify Console
- Enter your City (e.g.
newyork,chicago,losangeles,sfbay) - Select a Category from the dropdown
- Add optional filters — price range, sort order, photos only, posted today
- Enable Scrape Full Details if you need descriptions and attributes
- Click Start — results appear in the Output tab within seconds
Input
| Field | Type | Default | Description |
|---|---|---|---|
city | string | newyork | Craigslist city subdomain (e.g. newyork, chicago, losangeles, sfbay, seattle, boston, miami, dallas, denver, phoenix, austin, philadelphia) |
category | string | apa | Category code — see table below. You can also type any Craigslist code directly (e.g. mcy for motorcycles, mvs for RVs, mus for musical instruments) |
query | string | (empty) | Keyword search query |
maxResults | integer | 100 | Maximum listings to return (0 = unlimited) |
sortBy | string | date | date (newest), rel (relevant), priceasc, pricedsc |
minPrice | integer | (none) | Minimum price filter |
maxPrice | integer | (none) | Maximum price filter |
postedToday | boolean | false | Only listings posted in the last 24 hours |
hasPic | boolean | false | Only listings with at least one photo |
scrapeDetails | boolean | false | Fetch each listing page for full description, attributes, and address. Adds ~10–20s per 100 listings. |
Supported categories
| Code | Category | Code | Category |
|---|---|---|---|
apa | Apartments / Housing for Rent | mcy | Motorcycles |
roo | Rooms & Shares | boa | Boats |
sub | Sublets & Temporary | bik | Bikes |
reo | Real Estate for Sale | ele | Electronics |
jjj | Jobs | fua | Furniture |
ggg | Gigs | zip | Free Stuff |
sss | For Sale (General) | bbb | Services |
cta | Cars & Trucks |
Example — newest cheap cars with photos:
{"city": "chicago","category": "cta","query": "honda civic","minPrice": 3000,"maxPrice": 12000,"hasPic": true,"sortBy": "priceasc","maxResults": 200}
Example — today's apartments with full details:
{"city": "losangeles","category": "apa","maxPrice": 2500,"postedToday": true,"scrapeDetails": true,"maxResults": 100}
Output
Each listing returns a rich JSON object. Standard fields are always present. Detail fields (description, attributes, address) require scrapeDetails: true.
{"postingId": 7937348715,"title": "Spacious 2BR in Williamsburg – laundry in unit, no broker fee","price": "$2,800","priceValue": 2800,"beds": 2,"sqft": 950,"neighborhood": "williamsburg","latitude": 40.7128,"longitude": -73.9441,"postedAt": "2026-05-29T14:22:10Z","url": "https://newyork.craigslist.org/brk/apa/d/brooklyn-spacious-2br-williamsburg/7937348715.html","imageUrl": "https://images.craigslist.org/00f0f_abc123_0t20CI_600x450.jpg","imageUrls": ["https://images.craigslist.org/00f0f_abc123_0t20CI_600x450.jpg","https://images.craigslist.org/00K0K_xyz456_0CI0t2_600x450.jpg"],"imageCount": 2,"description": "Beautifully renovated 2BR with hardwood floors, exposed brick, and in-unit W/D. Steps from the L train. No broker fee. Available June 1st.","attributes": ["2BR / 1Ba", "950ft²", "available Jun 1", "cats are OK - purrr", "w/d in unit", "no smoking", "street parking"],"address": "123 Bedford Ave","city": "newyork","category": "apa"}
Download results as JSON, CSV, Excel, or XML from the Output tab.
Data fields
| Field | Description |
|---|---|
postingId | Unique Craigslist listing ID |
title | Listing title |
price | Formatted price string (e.g. $2,800) |
priceValue | Numeric price in dollars |
beds | Number of bedrooms (housing) |
sqft | Square footage (housing) |
neighborhood | Neighborhood or district name |
latitude / longitude | GPS coordinates |
postedAt | Exact UTC timestamp the listing was posted |
url | Direct verified link to the listing page |
imageUrl | First listing photo |
imageUrls | All listing photos (up to 24) |
imageCount | Total number of photos |
description | Full listing description text (scrapeDetails only) |
attributes | Structured list of amenities/specs (scrapeDetails only) |
address | Street address from listing map (scrapeDetails only) |
city | City input used |
category | Category code used |
How many results will I get?
You're charged per result, so the cost follows the number of rows below. Your plan's rates are on the Pricing tab.
| Input | Results |
|---|---|
| 1 city, 1 category, Max = 100 | Up to 100 rows |
| 5 cities × 2 categories, Max = 500 | Up to 5,000 rows |
Each listing is one row. Use the max-listings setting and filters (price, bedrooms, posted date) to keep runs focused.
Tips
- Monitor new listings: combine
postedToday: true+hasPic: true+ a keyword to catch fresh posts the moment they appear - Price floor analysis: use
sortBy: priceascto find the cheapest listings first - Multiple cities: run the Actor separately per city or use Apify Schedules to automate across markets
- Unlimited extraction: set
maxResults: 0to retrieve all available listings (often 10,000–25,000) - Any category: the dropdown covers the most common categories but you can type any Craigslist code directly —
mcy(motorcycles),mvs(RVs),mus(musical instruments),pho(photography gear),atq(antiques),clt(clothing), and hundreds more - Deal hunting:
sortBy: priceasc+hasPic: true+ keyword is the fastest way to surface real deals
FAQ
Why are some fields null?
Price, beds, sqft, and neighborhood are optional on Craigslist. Listings that don't include them return null for those fields.
How fresh is the data? Each run fetches live data directly. Results reflect what's on Craigslist at the moment you run the Actor.
Can I run multiple cities? Not in a single run — set up separate runs per city, or use the Apify API/Schedules to run them in parallel.
Is this legal? This Actor accesses publicly available Craigslist listings the same way a browser does. Users are responsible for ensuring compliance with Craigslist's Terms of Use and applicable laws. Do not use scraped data for spam, fraud, or harassment.
Need help or found a bug? Open an issue in the ../../issues or reach out through Apify Console.
⭐ Found this Actor useful? A quick review on the Store helps other users find it and keeps it maintained.