Craigslist Scraper avatar

Craigslist Scraper

Pricing

from $0.91 / 1,000 listings

Go to Apify Store
Craigslist Scraper

Craigslist Scraper

Scrape Craigslist listings from many cities in one run: title, numeric price, place, coordinates, posted date, photos, attributes and full description. Housing, for sale, cars, jobs, gigs, services. Export JSON/CSV/Excel, use the API, schedule it or plug it into Make, n8n or Zapier.

Pricing

from $0.91 / 1,000 listings

Rating

0.0

(0)

Developer

Matvey

Matvey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

16 hours ago

Last modified

Share

What is Craigslist Scraper?

Craigslist Scraper pulls listings from craigslist.org — apartments, rooms, cars, furniture, electronics, jobs, gigs, services, events — from as many cities as you want in one run. Give it a list of cities (or a whole state, a country, or "all"), pick a category, add keywords and a price range, and you get a clean table: title, numeric price, city and neighborhood, map coordinates, posted date, photos, attributes (bedrooms, bathrooms, square feet, odometer, condition, pay…) and the full description.

No login, no browser, no proxy to set up. Results go to a dataset you can download as JSON, CSV or Excel, read through the Apify API, schedule, or send to Google Sheets, Make, n8n or Zapier.

  • 📍 Many cities in one run — sfbay, new york, California, state:TX, United Kingdom, all
  • 🗂️ Any category — housing, for sale, cars & trucks, jobs, gigs, services, community, events, plus any other Craigslist code
  • 🔍 Craigslist's own filters — keywords, min / max price, posted today, with photos, titles only, sort
  • 📝 Full details included in the price — description, every photo, attributes, street address
  • ♻️ Duplicates removed — reposts and the same ad cross-posted to nearby cities are charged once
  • 🔁 "Only new" mode — schedule it and get (and pay for) only listings you have not seen

What data can it extract?

FieldExampleNotes
titleTerramina Square – Waiting List Openas posted
price2232number, no $ or commas
priceText, currency"$2,232", "USD"currency of the city
city, cityName, subareasfbay, SF bay area, sbyCraigslist area and sub-area
region, countryCalifornia, United States
neighborhood, location, addresssan jose east, …, 410 N. White Road, San Joseaddress when the poster gave one
latitude, longitude37.376745, -121.837012map pin
category, categoryName, sectionapa, apartments / housing for rent, housing
postedAt, updatedAt2026-10-22T15:05:57ZISO dates; updated only when edited
bedrooms, bathrooms, sqft2, 2, 1011housing
odometer, year, makeModel98564, 2013, toyota avaloncars & motorcycles
salary, company, jobTitle"$45 - $60 per hour", …jobs & gigs
eventDates, openHouses["2026-10-25"]events, housing
descriptionfull textwith details on
attributes{"housing_type":"apartment","laundry":"laundry on site","parking":"attached garage"}everything Craigslist lists for the ad
images, imageCountphoto URLs
url, id, searchUrl, scrapedAtlink to the ad and to the search it came from

Fields that a listing does not have are left out of its row (a job has no bedrooms, a free couch has no price).

How much does it cost to scrape Craigslist?

You pay per listing delivered (pay-per-event), nothing for starting the Actor and nothing extra for details:

Apify planPrice per listingListings per $1
Free$0.00126~790
Starter (Bronze)$0.00105~950
Scale (Silver)$0.00098~1,020
Business (Gold) and up$0.00091~1,100

Duplicates, problem rows ("this city was not found") and the summary row are free. The Apify free plan gives you $5 of credit every month — roughly 4,000 Craigslist listings with full details for free. Set Max cost per run in the run options and the Actor stops cleanly at that amount, with everything written paid for.

How to scrape Craigslist

  1. Open the Actor and click Try for free.
  2. In 📍 Cities type one or more cities — the subdomain from the address bar (sfbay for sfbay.craigslist.org) or a name (los angeles). For a whole region write California, state:TX, country:GB or all.
  3. Choose a Category and, if you want, keywords and a price range.
  4. Set 💯 Max listings in total and click Start.
  5. Download the results as JSON, CSV or Excel, or connect them to your tools.

Already filtered a search on craigslist.org (bedrooms, make and model, distance from a ZIP)? Paste that address into 🔗 Craigslist URLs instead — every filter in the URL is kept.

⬇️ Input

{
"cities": ["sfbay", "los angeles", "state:TX"],
"category": "apa",
"searchQuery": "parking",
"minPrice": 1500,
"maxPrice": 3500,
"includeDetails": true,
"maxItems": 500
}

Other options: postedToday, hasImages, searchTitlesOnly, sort (newest, oldest, priceasc, pricedsc, relevance), startUrls, maxItemsPerCity, categoryCode (any Craigslist code like sof, cto, tia), dedupeCrossPosts, includeNearbyAreas, onlyNewRowsStore. With several cities, Max listings in total is shared fairly: each city gets an equal part, and what a small town cannot fill goes to the bigger ones.

⬆️ Output

A real row (description and photos shortened):

{
"type": "listing",
"id": "7987893666",
"url": "https://www.craigslist.org/view/d/san-jose-terramina-square-waiting-list/ogNUeJQkakeZJiB4vvoFSZ",
"title": "Terramina Square – Waiting List Open",
"price": 2232,
"priceText": "$2,232",
"currency": "USD",
"city": "sfbay",
"cityName": "SF bay area",
"subarea": "sby",
"region": "California",
"country": "United States",
"neighborhood": "san jose east",
"location": "san jose east",
"address": "410 N. White Road, San Jose, CA 95127",
"latitude": 37.376745,
"longitude": -121.837012,
"category": "apa",
"categoryName": "apartments / housing for rent",
"section": "housing",
"postedAt": "2026-10-22T15:05:57.000Z",
"bedrooms": 2,
"bathrooms": 2,
"sqft": 1011,
"description": "2-Bedroom Waiting List Open!\n\nMinimum and Maximum Income Restrictions\n\n2-Bedroom/ 2 -Bath Units…",
"attributes": {
"bedrooms": "2",
"bathrooms": "2",
"area": "1011 ft²",
"application_fee_explained": "$50.00 per adult",
"rent_period": "monthly",
"housing_type": "apartment",
"laundry": "laundry on site",
"parking": "attached garage",
"airconditioning": true
},
"images": [
"https://images.craigslist.org/00X0X_8RMWJ93OwFI_0CI0pO_600x450.jpg",
"https://images.craigslist.org/00v0v_7yN60Z6sMvQ_0gw0co_600x450.jpg"
],
"imageCount": 2,
"searchUrl": "https://sfbay.craigslist.org/search/apa?sort=date",
"scrapedAt": "2026-10-22T15:15:18.467Z"
}

Besides listings the dataset can hold free rows with type: "error" (a city that does not exist, a deleted posting, kind: "no-results" for a search with no matches) and one free type: "notice" summary row at the end. Filter on type = "listing" to keep only data.

Use cases

Real estate investors and property managers

Track rents across a whole metro or state: bedrooms, bathrooms, sqft, price and coordinates for every rental, ready for price-per-square-foot maps and comps.

Car dealers and flippers

Pull every Toyota under $15,000 across ten cities at once, with odometer, year, make and model, title status and photos — then schedule it hourly with "only new" to be first to call.

Resellers and e-commerce teams

Watch furniture, electronics or free-stuff listings for arbitrage, price research and sourcing leads, in every city you buy in.

Recruiters and job-market researchers

Collect job and gig posts with pay, employer, job title and the full ad text by city and category.

Market researchers and data teams

Build datasets of local supply and pricing over time; the clean numeric price, ISO dates and stable id make joins and time series easy.

AI agents and LLM workflows

One call returns structured, deduplicated listings for any number of cities — ideal as a tool for an agent answering "what's for rent under $2,500 near Oakland right now?". Use it through the Apify MCP server or the API.

Integrations

  • Apify API — start runs and read results over HTTP; every option above is a JSON field.
  • Python and JavaScript — apify-client for Python or Node.js: client.actor("lergassy/craigslist-scraper").call(run_input={...}).
  • No-code — Make, n8n, Zapier and Google Sheets integrations, webhooks when a run finishes.
  • Schedules — run hourly or daily; with Only new listings each run delivers only fresh posts.
  • MCP — available to Claude, Cursor and other agents through the Apify MCP server (mcp.apify.com).

Migrating from another Craigslist scraper?

Their fieldHere
region, subdomain, citycities (a list — many at once)
searchTerm, searchQueriessearchQuery
priceMin / priceMaxminPrice / maxPrice
hasImage, onlyWithPhotoshasImages
postedTodaypostedToday
maxResults, maxItemsmaxItems (total) and maxItemsPerCity
startUrls, urls, listingUrlsstartUrls (search pages and single postings)
monitoringModeonlyNewRowsStore (give it a name)
hideDuplicatesdedupeCrossPosts (on by default)
searchNearbyincludeNearbyAreas

Troubleshooting

  • "City … not found on Craigslist" — use the subdomain from the address bar (sfbay, not San Francisco Bay). Two-letter codes are ambiguous: write state:CA or country:CA.
  • Fewer listings than Max listings — the search really has fewer (check searchUrl in the browser), or duplicates and cross-posts were removed. Craigslist shows at most 10,000 results per search.
  • No price on some rows — the poster gave none (common for jobs, services, free stuff). With a price limit set, such listings are left out.
  • Need a filter that is not in the form (bedrooms, make & model, distance from a ZIP)? Set it on craigslist.org and paste the URL into Craigslist URLs.

❓ FAQ

The Actor reads only public listings that anyone can see without an account, and it does not collect hidden contact details. Using public data is generally lawful, but Craigslist's terms of use restrict automated access and commercial reuse, and listings can contain personal data protected by laws such as GDPR or CCPA. You are responsible for how you use the data; if in doubt, ask a lawyer.

Do I need a Craigslist account or a proxy?

No. The Actor reads Craigslist directly and switches to a residential proxy by itself only for a request that gets blocked.

Can I get the seller's phone number or e-mail?

No. Craigslist hides contact details behind its relay; the Actor returns what the listing shows publicly.

How fresh is the data?

Live — every run reads Craigslist at that moment. Use sort: newest and postedToday for the latest posts, or a schedule with Only new listings.

How fast is it?

Hundreds of listings with full details take a few seconds; a whole state with 3,000 listings took under a minute in our tests.

Your feedback

Something missing or not working? Open an issue on the Actor's Issues tab — we read every one.

You might also like

ActorWhat it does
Zillow ScraperUS homes for sale and rent from Zillow with prices, Zestimates and photos
Airbnb Listings ScraperAirbnb stays with prices, ratings and hosts for any location
Indeed Jobs ScraperIndeed job posts with salary, company and full description