Craigslist Listings Scraper avatar

Craigslist Listings Scraper

Pricing

from $2.00 / 1,000 listings

Go to Apify Store
Craigslist Listings Scraper

Craigslist Listings Scraper

Scrape Craigslist postings from any city and category: title, price, location, coordinates, images, posting date and URL. Optional detail pages add the full description and labelled attributes. No API key.

Pricing

from $2.00 / 1,000 listings

Rating

0.0

(0)

Developer

Dev D

Dev D

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Scrape Craigslist postings from any city and any category — cars, apartments, furniture, electronics, jobs, gigs, services — with price, location, coordinates, images and posting date.

Paste the URL from your address bar. No API key, no login.

Input

FieldMeaning
startUrlsCraigslist search or category URLs, e.g. https://newyork.craigslist.org/search/cta
maxListingsPerUrlPostings per search (default 200)
deepPagingSplit large searches into price ranges to get past Craigslist's 360 limit (default on)
scrapeDetailsAlso open each posting for description and attributes (default off)
countryCodeRegion code for formatting, default US
proxyConfigurationOptional

Any filter already in the URL keeps working — query=, min_price=, max_price=, condition=, auto_make_model=, postal= + search_distance=, hasPic= and the rest are passed straight through.

Output

One row per posting:

{
"posting_id": 7954550645,
"title": "1973 Saab Sonett III Very Original Nice Driver",
"price": 9950,
"price_display": "$9,950",
"currency": "USD",
"posted_at": "2026-08-19T16:30:16+00:00",
"area": "newyork",
"sub_area": "que",
"locality": "College Point",
"neighborhood": null,
"latitude": 40.7855,
"longitude": -73.845,
"numeric_attribute": 92352,
"category": "cta",
"image_count": 23,
"images": ["https://images.craigslist.org/00J0J_kTZZwGZxE6G_0CI0pO_600x450.jpg"],
"url": "https://www.craigslist.org/view/d/college-point-1973-saab-sonett-iii-very/7otq7YwAezoB18qskyJUX1"
}

With scrapeDetails on, each row also gets description, attributes (a labelled map: condition, VIN, odometer, fuel, bedrooms, ...), map_address, location_accuracy and updated_at_local.

numeric_attribute is a number Craigslist ships without a label — the odometer reading on vehicles, a size or count elsewhere. It is deliberately not renamed to something it might not be; turn on scrapeDetails for the properly labelled attributes.

The 360-result limit — please read

Craigslist returns at most 360 postings for any one search. That is the site's own limit, not this Actor's, and there is no page or offset parameter that gets past it.

With deepPaging on, a large search is split into price ranges and each range is fetched separately, which is how a run reaches several thousand postings. Measured on New York cars: 4,095 unique postings of the 4,208 that exist (97%), in 47 seconds and 42 requests, against 360 without it.

Two things follow from this:

  • Categories with no prices — jobs, gigs, community — are capped at 360. There is nothing to slice on. The run logs this rather than looping.
  • Very large single-price groups stay capped. If thousands of postings are all priced $0, that range cannot be split any further.

The reliable way to cover a big market is several narrower searches: by sub-area, by keyword, or by explicit price band.

Charging

Pay per event.

  • listing — one posting from search results.
  • listing-details — one posting whose own page was also fetched (scrapeDetails on). Charged instead of listing, never on top of it.

Postings already returned by an earlier URL in the same run are skipped and not charged twice.