Craigslist Scraper
Pricing
from $0.50 / 1,000 results
Craigslist Scraper
Scrape Craigslist listings (apartments, jobs, for sale, etc.) for any US city. Returns title, price, beds, sqft, location, and listing URL.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
Maged
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Craigslist Scraper — Fast, Full Data, Verified Links
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.
⚡ 360 results per request — not one page at a time
Other scrapers load Craigslist search pages one by one. This scraper retrieves up to 360 listings in a single call, making bulk extraction 10–30× faster. Fetching 3,600 listings takes the same number of round-trips as fetching 10 listings the old way.
🔗 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 |
Pricing
This Actor uses pay-per-result billing — you pay only for the listings you actually receive. There are two components to every run cost:
1. Actor fee (per result)
Charged per listing pushed to the dataset. Higher Apify plans get a better rate:
| Apify Plan | Price per 1,000 results | Price per result |
|---|---|---|
| Free | $1.00 | $0.001 |
| Starter ($29/mo) | $0.80 | $0.0008 |
| Scale ($199/mo) | $0.65 | $0.00065 |
| Business ($999/mo) | $0.50 | $0.0005 |
2. Platform compute cost (infrastructure)
Apify charges for the server time your run uses. The formula is:
Cost = (RAM in GB) × (run duration in hours) × (CU rate)
This Actor uses ~512 MB RAM. Typical durations and platform costs per plan:
| Run | Duration | Free ($0.20/CU) | Starter/Scale ($0.16/CU) | Business ($0.13/CU) |
|---|---|---|---|---|
| 100 results | ~15s | $0.0004 | $0.0003 | $0.0003 |
| 100 results + details | ~25s | $0.0007 | $0.0006 | $0.0005 |
| 1,000 results | ~30s | $0.0008 | $0.0007 | $0.0005 |
| 10,000 results | ~2 min | $0.006 | $0.005 | $0.004 |
Platform compute costs are a fraction of a cent per run — the actor fee dominates at scale.
Total cost examples
Platform compute costs are a fraction of a cent — the actor fee is the dominant cost at any scale.
| Scenario | Free plan | Starter plan | Scale plan | Business plan |
|---|---|---|---|---|
| 100 listings | ~$0.10 | ~$0.08 | ~$0.065 | ~$0.05 |
| 1,000 listings | ~$1.00 | ~$0.80 | ~$0.65 | ~$0.50 |
| 10,000 listings | ~$10.01 | ~$8.01 | ~$6.51 | ~$5.00 |
| 100,000 listings | ~$100.01 | ~$80.01 | ~$65.01 | ~$50.01 |
Monthly plan credits
Every paid plan includes a monthly credit that applies toward both platform costs and actor fees:
| Plan | Monthly cost | Included credit | Listings covered (Starter rate) |
|---|---|---|---|
| Free | $0 | $5 (one-time) | ~6,250 |
| Starter | $29/mo | $29/mo | ~36,250/mo |
| Scale | $199/mo | $199/mo | ~306,000/mo |
| Business | $999/mo | $999/mo | ~1,998,000/mo |
See Apify pricing for full plan details.
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.