Craigslist Scraper — Listings, Prices & Locations avatar

Craigslist Scraper — Listings, Prices & Locations

Pricing

from $2.60 / 1,000 listing scrapeds

Go to Apify Store
Craigslist Scraper — Listings, Prices & Locations

Craigslist Scraper — Listings, Prices & Locations

Extract public Craigslist listing data by search, category, and location with prices, titles, URLs, dates, maps, and listing metadata.

Pricing

from $2.60 / 1,000 listing scrapeds

Rating

5.0

(1)

Developer

junipr

junipr

Maintained by Community

Actor stats

1

Bookmarked

16

Total users

2

Monthly active users

2 days ago

Last modified

Share

What does Craigslist Scraper — Listings, Prices & Locations do?

Craigslist Scraper extracts listings from Craigslist city and category search pages. It supports jobs, housing, for sale, services, community, and gigs sections. Search rows include titles, prices, locations, URLs, and posting dates; optional detail-page visits add body text, images, structured attributes, and geo-coordinates when those fields are available.

You can search by keyword, filter by price range, require images, sort results, and control how many pages to crawl. The two-phase approach (search pages first, then detail pages) gives you both breadth and depth, with the option to skip detail scraping for faster runs when you only need listing summaries.

Features

  • Six categories — Jobs, housing, for sale, services, community, and gigs
  • Any city — Works with any Craigslist city subdomain (newyork, sfbay, chicago, losangeles, etc.)
  • Full detail scraping — Optionally visits each listing page for complete body text, images, attributes, and geo-coordinates
  • Keyword search — Filter listings by search terms within any category
  • Price filters — Set minimum and maximum price ranges
  • Image filter — Only return listings that include photos
  • Sort options — Sort by date, price ascending, price descending, or relevance
  • Automatic pagination — Crawls multiple search result pages to reach your target result count
  • Structured attributes — Extracts category-specific fields like bedrooms, compensation, employment type, make/model
  • Geo-coordinates — Captures latitude and longitude when listings include a map
  • Image URLs — Collects all listing image URLs from detail pages
  • Configurable rate limiting — Adjustable delay and concurrency to avoid Craigslist's aggressive rate limiting
  • Direct URL input — Paste any Craigslist search URL directly instead of configuring city/category/query

Input Configuration

{
"city": "newyork",
"category": "jjj",
"query": "software engineer",
"maxResults": 1,
"maxPages": 1,
"sortBy": "date",
"hasPic": false,
"minPrice": 0,
"maxPrice": 0,
"scrapeDetails": false,
"requestDelay": 1500,
"maxConcurrency": 1
}
ParameterTypeDefaultDescription
searchUrlstring""Direct Craigslist search URL (overrides city/category if provided)
citystring"newyork"Craigslist city subdomain
categorystring"jjj"Category code: jjj (jobs), hhh (housing), sss (for sale), bbb (services), ccc (community), ggg (gigs)
querystring""Keyword search term
maxResultsinteger1Maximum listings to extract (1-5,000)
maxPagesinteger1Maximum search result pages to crawl (1-50)
sortBystring"date"Sort order: date, priceasc, pricedsc, or rel
hasPicbooleanfalseOnly return listings with images
minPriceinteger0Minimum price filter (0 = no minimum)
maxPriceinteger0Maximum price filter (0 = no maximum)
scrapeDetailsbooleanfalseVisit each listing's detail page for full data
requestDelayinteger1500Delay between requests in ms (minimum 500, 1500+ recommended)
maxConcurrencyinteger1Maximum concurrent page requests (1-10, keep low)

Output Format

Each listing in the dataset looks like this:

{
"title": "Senior Software Engineer - Remote",
"url": "https://newyork.craigslist.org/mnh/sof/d/senior-software-engineer/7812345678.html",
"price": "$150,000",
"location": "Manhattan",
"postDate": "2026-03-10T14:30:00.000Z",
"category": "jobs",
"body": "We are looking for a senior software engineer to join our team...",
"images": [
"https://images.craigslist.org/00A0A_abc123_600x450.jpg"
],
"attributes": {
"employment_type": "full-time",
"compensation": "$150,000/year"
},
"hasMap": true,
"latitude": 40.7589,
"longitude": -73.9851,
"replyUrl": "https://newyork.craigslist.org/reply/mnh/sof/7812345678",
"scrapedAt": "2026-03-11T12:00:00.000Z"
}

Usage Examples / Use Cases

  • Job market research — Analyze job postings by city to understand salary ranges, required skills, and hiring volume in specific markets
  • Real estate monitoring — Track housing listings in target neighborhoods with price filters to spot deals or monitor rental trends
  • Marketplace analytics — Collect for-sale listings to study pricing patterns, popular products, and geographic demand
  • Lead generation — Find service providers and gig posters who may need your product or service
  • Academic research — Build structured datasets of classified ad content for labor economics, housing studies, or marketplace analysis
  • Competitive intelligence — Monitor competitor job postings to understand their hiring priorities and growth areas

Proxy Requirements

Craigslist can rate-limit or reject automated requests. The actor attempts to use the run's Apify proxy configuration and falls back to direct requests if proxy setup is unavailable. Keep requestDelay at 1500 ms or higher and concurrency low. A proxy does not guarantee access; failed requests are recorded as diagnostics.

Ready-to-run public tasks

  • Check Austin gigs — one newest-first result from the gigs category.
  • Check New York jobs — one newest-first result from the jobs category.
  • Check San Francisco for-sale listings — one newest-first marketplace result.

Every task uses the actor's city/category URL builder and caps pagination, results, and concurrency at one.

Pricing

This actor uses Pay-Per-Event pricing with the listing-scraped event at $2.60 per 1,000 listings scraped ($0.0026 per listing) in the live Store pricing entry.

Apify platform usage is passed through according to the live Store pricing entry because Craigslist detail scraping and proxy usage can add crawl cost. Keep scrapeDetails, maxResults, and maxPages intentional for larger runs.

FAQ

What is the difference between search URL and city/category inputs?

You can configure the search two ways. Either set city and category (and optionally query, price filters, etc.) and the actor builds the search URL for you, or paste a complete Craigslist search URL into the searchUrl field. If searchUrl is provided, it takes priority and the city/category fields are ignored. Use searchUrl when you have a pre-filtered search from the Craigslist website.

Should I enable detail scraping?

If you need full listing text, images, attributes, and geo-coordinates, enable scrapeDetails. It is disabled by default so the bounded first run can return a search result without a second request. Leave it off when titles, prices, locations, URLs, and posting dates are sufficient.

How do I avoid getting blocked by Craigslist?

Keep requestDelay at 1500 ms or higher, use low concurrency, and increase maxResults and maxPages deliberately. If direct traffic is blocked, configure a proxy you are authorized to use and retry a bounded run.

What cities are supported?

Any Craigslist city subdomain works. Common examples: newyork, losangeles, sfbay, chicago, seattle, boston, austin, denver, portland, miami, dallas, atlanta. Check craigslist.org for the full list of city subdomains.

Can I scrape multiple cities in one run?

Not directly. Each run targets one city. To scrape multiple cities, run the actor multiple times with different city values, or use the searchUrl field with different city URLs in separate runs. You can schedule multiple runs to collect data from several cities automatically.