Craigslist Scraper: Listings, Phones, Alerts — No Login, $10/1k avatar

Craigslist Scraper: Listings, Phones, Alerts — No Login, $10/1k

Pricing

from $10.00 / 1,000 listing results

Go to Apify Store
Craigslist Scraper: Listings, Phones, Alerts — No Login, $10/1k

Craigslist Scraper: Listings, Phones, Alerts — No Login, $10/1k

Craigslist listings from many cities, states or Canada in one run: cars, for sale, housing, jobs, services. Paste search or posting URLs, filter, get phones and emails from posts, or monitor for new listings only. No login or cookies. MCP-ready for AI agents. $10 per 1,000 records.

Pricing

from $10.00 / 1,000 listing results

Rating

0.0

(0)

Developer

Fortuitous Pirate

Fortuitous Pirate

Maintained by Community

Actor stats

0

Bookmarked

48

Total users

1

Monthly active users

10 days ago

Last modified

Share

Craigslist Scraper: Listings, Prices, Phones & New-Post Monitor

Pull Craigslist listings from many cities and keywords in one run: cars, for-sale items, apartments, rooms, jobs, gigs and services, across the US, Canada and every other Craigslist area. Each listing comes back with title, price and currency, city/state, coordinates, images and posting URL. Turn on details to also get the full description, every attribute (year, make/model, odometer, condition, bedrooms, sqft…), all full-size photos, posted/updated dates, and phone numbers and emails found in the post.

Schedule it with Only new listings switched on and it becomes a Craigslist alert: each run returns only posts it has not seen before, and it can POST them to Slack, Zapier, Make or your own webhook.

No login, no cookies, no browser.

What people use it for

  • Car and equipment flipping: watch cta/cto for a make and price range in 20 cities and get each new post within minutes.
  • Rental market research: apartments near a ZIP code with bedroom, bathroom and pet filters, with rent, coordinates and sqft.
  • Lead generation: contractors, cleaners, movers and other service providers in bbb, with the phone numbers and emails they put in their ads.
  • Price research: asking prices for one product across cities, categories and conditions.
  • Job and gig tracking: new postings in a job category every morning.

Input examples

Several cities and keywords at once (every city is combined with every query):

{
"cities": ["austin", "dallas", "houston", "sanantonio"],
"searchQueries": ["toyota tacoma", "4runner"],
"category": "cta",
"sellerType": "owner",
"maxPrice": 25000,
"maxListings": 50,
"includeDetails": true
}

A whole state or country: "cities": ["state:TX"] expands to every Texas Craigslist area; "country:CA" covers every Canadian area (prices come back in CAD). Area names like "Los Angeles" work too.

Paste URLs from craigslist.org (search pages with your filters already set, or individual postings):

{
"startUrls": [
{ "url": "https://www.craigslist.org/search/area/sfbay?cat=apa&min_bedrooms=2&pets_dog=1" },
{ "url": "https://www.craigslist.org/view/d/downtown-toronto-2007-honda-element-ex/9syacxqTGyMxpo7Wrccpjg" }
]
}

Posting URLs always return full details. A posting that has been removed comes back with isDeleted: true.

Apartments near a ZIP code:

{
"cities": ["sfbay"],
"category": "apa",
"postalCode": "94103",
"searchDistance": 2,
"minBedrooms": 2,
"dogsOk": true,
"maxPrice": 5000
}

New-listing alerts (schedule every 15–60 minutes):

{
"cities": ["seattle", "portland"],
"category": "bia",
"searchQueries": ["specialized", "trek"],
"onlyNewListings": true,
"monitorId": "bikes-pnw",
"webhookUrl": "https://hooks.zapier.com/hooks/catch/123/abc"
}

Each monitorId keeps its own memory of listings already returned. The first run returns the current listings (or, with firstRunMode: "baseline", only records them), and every later run returns only new posts.

Filters

InputWhat it does
minPrice, maxPricePrice range
postalCode, searchDistanceOnly listings within N miles of a ZIP/postal code
postedTodayOnly listings posted today
hasImageOnly listings with photos
searchTitlesOnlyMatch keywords in the title only
sellerTypeowner or dealer
conditionAny of new, like new, excellent, good, fair, salvage
deliveryAvailableOnly listings offering delivery
onlyFreeListingsSearch the free stuff section
minBedrooms, maxBedrooms, minBathrooms, catsOk, dogsOkHousing filters
hideDuplicatesAsk Craigslist to bundle duplicate posts
sortBydate, priceasc, pricedsc
filtersAny other Craigslist URL parameter, e.g. {"min_auto_year": 2015, "max_auto_miles": 100000, "auto_transmission": 2}

Filters apply to cities/searchQueries/location searches. Start URLs are used exactly as pasted.

Output

One row per listing. Search-page fields:

{
"title": "2015 Toyota Tacoma PreRunner TRD",
"price": 19600,
"priceFormatted": "$19,600",
"currency": "USD",
"city": "Austin",
"state": "TX",
"location": "Austin, TX",
"latitude": 30.2672,
"longitude": -97.7431,
"images": ["https://images.craigslist.org/..._600x450.jpg"],
"imageUrl": "https://images.craigslist.org/..._600x450.jpg",
"bedrooms": null,
"bathrooms": null,
"url": "https://www.craigslist.org/view/d/austin-2015-toyota-tacoma/...",
"postingId": "UpH_bA3N8RG985D41I882g",
"category": "cta",
"searchLocation": "austin",
"searchQuery": "toyota",
"searchUrl": "https://www.craigslist.org/search/area/austin?cat=cta&query=toyota",
"scrapedAt": "2026-10-21T08:00:00.000Z"
}

With includeDetails (and for posting URLs) each row also has:

{
"fullDescription": "Clean title, one owner, 120k miles…",
"attributes": { "year": "2015", "makemodel": "toyota tacoma", "condition": "excellent", "odometer": "120,000", "drive": "rwd", "fuel": "gas", "title_status": "clean", "transmission": "automatic" },
"allImages": ["https://images.craigslist.org/..._1200x900.jpg"],
"postedDate": "2026-10-20T18:31:24-0500",
"updatedDate": null,
"postId": "7987064202",
"postalCode": null,
"sqft": null,
"phones": ["512-555-0142"],
"emails": [],
"hasHiddenContact": true,
"isDeleted": false
}
  • phones / emails: contact details written in the post. Craigslist hides phone numbers in the post body behind "show contact info"; the scraper also reads the posting's structured data, where the first part of the description often still has the number in plain text. hasHiddenContact is true when the post used that masking. The reply-by-email address behind the Reply button is not available (it needs a captcha).
  • In monitor mode each row also has isNew, firstSeenAt and monitorId.
  • The run's OUTPUT record (key-value store) lists every search with the listings found, listings saved and any error, so a failed city never loses the rest of the run.

Craigslist shows the newest ~360 matches for a search on a single page; there is no further paging. maxListings is the cap per search (city × query), and maxTotalItems caps the whole run. To get more, add cities or queries, or narrow by price range or category.

Pricing

Pay per result: you pay for listings saved, plus a small start fee. See the Pricing tab for current prices. Searches without details are fastest; includeDetails costs no extra per listing but takes longer because each posting is opened.

Good to know

  • Uses Apify Proxy by default. If you run without a proxy, keep runs small.
  • Category codes: sss all for sale, cta cars & trucks (cto owner, ctd dealer), apa apartments, roo rooms, hhh all housing, jjj all jobs, ggg gigs, bbb services, zip free stuff. Any code from a Craigslist URL works in startUrls.
  • Existing setups keep working: location, category, searchQuery, minPrice, maxPrice, maxListings, includeDetails and sortBy behave as before.

Integrations

Export to JSON, CSV, Excel or HTML, or connect the dataset to Google Sheets, Zapier, Make, Slack and webhooks from the Integrations tab. Call it from the Apify API or use it as a tool for AI agents through Apify's MCP server.