Craigslist Scraper avatar

Craigslist Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Craigslist Scraper

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

Maged

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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

  1. Open the Actor in Apify Console
  2. Enter your City (e.g. newyork, chicago, losangeles, sfbay)
  3. Select a Category from the dropdown
  4. Add optional filters — price range, sort order, photos only, posted today
  5. Enable Scrape Full Details if you need descriptions and attributes
  6. Click Start — results appear in the Output tab within seconds

Input

FieldTypeDefaultDescription
citystringnewyorkCraigslist city subdomain (e.g. newyork, chicago, losangeles, sfbay, seattle, boston, miami, dallas, denver, phoenix, austin, philadelphia)
categorystringapaCategory code — see table below. You can also type any Craigslist code directly (e.g. mcy for motorcycles, mvs for RVs, mus for musical instruments)
querystring(empty)Keyword search query
maxResultsinteger100Maximum listings to return (0 = unlimited)
sortBystringdatedate (newest), rel (relevant), priceasc, pricedsc
minPriceinteger(none)Minimum price filter
maxPriceinteger(none)Maximum price filter
postedTodaybooleanfalseOnly listings posted in the last 24 hours
hasPicbooleanfalseOnly listings with at least one photo
scrapeDetailsbooleanfalseFetch each listing page for full description, attributes, and address. Adds ~10–20s per 100 listings.

Supported categories

CodeCategoryCodeCategory
apaApartments / Housing for RentmcyMotorcycles
rooRooms & SharesboaBoats
subSublets & TemporarybikBikes
reoReal Estate for SaleeleElectronics
jjjJobsfuaFurniture
gggGigszipFree Stuff
sssFor Sale (General)bbbServices
ctaCars & 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

FieldDescription
postingIdUnique Craigslist listing ID
titleListing title
priceFormatted price string (e.g. $2,800)
priceValueNumeric price in dollars
bedsNumber of bedrooms (housing)
sqftSquare footage (housing)
neighborhoodNeighborhood or district name
latitude / longitudeGPS coordinates
postedAtExact UTC timestamp the listing was posted
urlDirect verified link to the listing page
imageUrlFirst listing photo
imageUrlsAll listing photos (up to 24)
imageCountTotal number of photos
descriptionFull listing description text (scrapeDetails only)
attributesStructured list of amenities/specs (scrapeDetails only)
addressStreet address from listing map (scrapeDetails only)
cityCity input used
categoryCategory 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 PlanPrice per 1,000 resultsPrice 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:

RunDurationFree ($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.

ScenarioFree planStarter planScale planBusiness 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:

PlanMonthly costIncluded creditListings 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: priceasc to 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: 0 to 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.