Skip to content

Craigslist Scraper

Try for free

Scrape Craigslist ads for jobs, housing, for sale, services and gigs by search URL, city and category: title, price, location, dates, images, attributes and full description.

🏷️ Craigslist Scraper

Turn Craigslist searches into clean data. Paste a search URL, or pick cities and categories, and get every matching ad as a row: title, price, location, posting date, images, attributes and the full description. No login, no API key, and ads for jobs, housing, for sale, services and gigs all come back in the same shape.

Searches are read through the same JSON feed the Craigslist website uses, so runs are fast and cheap. In our tests 1,000 ads with full descriptions took about 30 seconds and 10,000 about two minutes.

✨ Why use Craigslist Scraper?

  • ⚡ Fast — lists are read in bulk and ad pages load in parallel: 1,000 ads with full descriptions in about 30 seconds.
  • 🌆 Cities and categories in one go — give 50 cities and 5 categories and get 250 searches in a single run, with duplicates removed.
  • 📄 Full ad pages — description, attributes, posting date, map position, address and phone numbers from the ad text, not just the search snippet.
  • 🎛️ Real filters — keywords, price range, newest or cheapest first, owner or dealer, maximum age in days. Filters you already put in a Craigslist URL are kept.
  • 🧩 One shape for every category — housing adds bedrooms and rent, jobs add pay and employment type, for-sale adds condition and model.
  • 💸 Pay per ad — $0.004 per ad saved, platform usage included. No monthly rental.

🎯 Use cases

  • 🏠 Rental and real estate research — track rents by neighborhood, bedrooms and move-in date.
  • 💼 Job market monitoring — collect postings with pay and employment type across many cities.
  • 🛒 Resale and price tracking — watch used prices for bikes, cars, electronics and furniture.
  • 📈 Lead generation — find local service providers, dealers and gig posters.
  • 🧪 Market research — measure supply and pricing of a product category over time.
  • 🔔 Alerts — schedule the actor and compare each run to the last one to spot new ads.

🚀 How to use

  1. Open the Input tab and paste one or more Craigslist search URLs, or list cities such as newyork and sfbay and choose categories.
  2. Set Maximum results and any filters (keywords, price range, maximum age).
  3. Click Start. Ads are saved as they arrive.
  4. Export the dataset as JSON, CSV, Excel or HTML, or read it through the API.

📥 Input

FieldWhat it does
urlsSearch page URLs or single post links (https://www.craigslist.org/view/...).
citiesCraigslist site names (newyork, sfbay, london). Combined with every category.
categoriesCategory codes: sss for sale, apa apartments, jjj jobs, ggg gigs, bbb services and more.
searchQueryKeywords for every search that has no query of its own.
maxItemsTotal ads to save. Default 20. 0 means no limit.
maxAgeSkip ads that were not posted or refreshed within this many days.
minPrice / maxPricePrice range. If min is higher than max they are swapped.
sortBydate (newest), dateoldest, rel, priceasc, pricedsc.
sellerTypeall, owner or dealer.
onlyWithImages, titleOnlySkip ads without photos; match keywords in titles only.
scrapeDetailsOpen every ad for the full text and attributes. Turn off for a fast list.
maxItemsPerSearchCap for each search.
maxConcurrencyParallel ad page loads. Default 10.
proxyConfigurationDatacenter proxy by default.
{
  "urls": [{ "url": "https://sfbay.craigslist.org/search/apa?max_price=3000" }],
  "cities": ["newyork", "chicago"],
  "categories": ["apa", "jjj"],
  "searchQuery": "studio",
  "maxItems": 100,
  "maxAge": 7,
  "sortBy": "date"
}

📤 Output

Each ad is one dataset row. Fields that do not apply to an ad (for example bedrooms on a bicycle) are left out.

FieldDescription
id, url, titlePost ID, link and title.
datetimeWhen the ad was last updated or reposted.
postedAtWhen the ad was first published (full ad pages only).
location, area, subareaNeighborhood text, Craigslist site and sub-area.
category, categoryCodeCategory name and code.
price, priceValue, currencyPrice text, number and currency.
latitude, longitude, mapAccuracy, addressMap position and address parts when the poster shows them.
postFull ad text.
picsImage URLs.
attributes, propertiesAttributes as displayed, and by name.
phoneNumbers, noticesPhone numbers found in the text, and notices on the ad.
bedrooms, bathrooms, space, availableFrom, rentPeriod, amenitiesHousing.
compensation, employmentType, jobTitle, companyNameJobs and gigs.
condition, model, manufacturerFor sale.
searchUrlThe search that found the ad.
{
  "id": "7900000001",
  "url": "https://www.craigslist.org/view/d/sunny-studio-near-the-park/AbCdEfGhIjKlMnOpQrStUv",
  "title": "Sunny studio near the park",
  "datetime": "2026-10-12T10:00:00-0400",
  "postedAt": "2026-10-01T09:15:00-0400",
  "location": "Riverside",
  "area": "sampletown",
  "subarea": "dwn",
  "category": "apartments / housing for rent",
  "categoryCode": "apa",
  "price": "$1,500",
  "priceValue": 1500,
  "currency": "USD",
  "latitude": 10.5,
  "longitude": 20.25,
  "mapAccuracy": 22,
  "post": "Bright studio with a large window. Pets considered.",
  "pics": ["https://images.craigslist.org/00a0a_example_600x450.jpg"],
  "attributes": ["1BR / 1Ba", "600ft2", "available oct 18", "rent period: monthly"],
  "bedrooms": "1",
  "bathrooms": "1",
  "space": "600ft2",
  "availableFrom": "2026-10-18",
  "rentPeriod": "monthly",
  "amenities": [],
  "phoneNumbers": [],
  "notices": [],
  "searchUrl": "https://sampletown.craigslist.org/search/apa"
}

💰 Pricing

You pay $0.004 per ad saved, which is $4 per 1,000 ads, plus the platform usage of the run (compute and datacenter proxy traffic). In our tests the usage was about $0.01 per 1,000 ads, so 1,000 ads cost about $4.01 and a 100 ad job about $0.40. Ads that were removed before their page loaded are not saved and not charged. Turning off full ad pages does not change the price per ad. Set a maximum total charge on the run and it stops cleanly before going over.

❓ FAQ

Is it legal to scrape Craigslist? The actor reads publicly visible ads without logging in. You are responsible for following Craigslist's terms and the laws that apply to your use of the data, especially for personal data such as phone numbers.

Do I need a login or my own proxy? No. A datacenter proxy is built in and enabled by default. Switch to residential in the proxy settings if Craigslist starts refusing requests.

How many ads can I get? Craigslist lists at most 10,000 ads per search. If more match, the run says so in its status message. Split the search by city, category, price range or keywords to reach the rest.

What if a field is empty? Craigslist ads are free text. Fields only appear when the ad shows them, so bedrooms are only on housing ads and pay only on jobs and gigs.

Can I schedule it or call it from the API? Yes. Use schedules for daily alerts, and the API or any integration to start runs and read the dataset.

What changed from other Craigslist scrapers? The input keeps urls and maxAge. Output keeps the same field names; the misspelled attirbutes list is now attributes, and coordinates and map accuracy are numbers.

⚠️ Limits

  • Craigslist caps every search at 10,000 ads.
  • Old-style post links ending in .html no longer open on Craigslist. Use the www.craigslist.org/view/... link or a search URL.
  • Phone numbers are only the ones written in the ad text. Craigslist hides contact details behind its reply button, and the actor does not use it.
  • Ads removed or expired before their page loads are skipped.
  • English Craigslist sites on craigslist.org only.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.