Craigslist Scraper — Listings, Prices & Contact Details avatar

Craigslist Scraper — Listings, Prices & Contact Details

Pricing

from $1.00 / 1,000 listing scrapeds

Go to Apify Store
Craigslist Scraper — Listings, Prices & Contact Details

Craigslist Scraper — Listings, Prices & Contact Details

Scrape Craigslist listings across jobs, housing, for sale, services, community, gigs. Two-phase scraping: search results + detail pages with images, geo-coords, attributes. Keyword/price filters. Export JSON/CSV.

Pricing

from $1.00 / 1,000 listing scrapeds

Rating

5.0

(1)

Developer

junipr

junipr

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

5

Monthly active users

5 days ago

Last modified

Share

Craigslist Scraper

What does Craigslist Scraper do?

Craigslist Scraper extracts listings from Craigslist across any city and category. It supports jobs, housing, for sale, services, community, and gigs sections. The actor scrapes both search result pages and individual listing detail pages to collect complete data including titles, prices, locations, full description text, images, structured attributes (bedrooms, compensation, make/model, etc.), geo-coordinates, and posting dates.

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": 100,
"maxPages": 5,
"sortBy": "date",
"hasPic": false,
"minPrice": 0,
"maxPrice": 0,
"scrapeDetails": true,
"requestDelay": 1500,
"maxConcurrency": 3
}
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
maxResultsinteger100Maximum listings to extract (1-5,000)
maxPagesinteger5Maximum 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)
scrapeDetailsbooleantrueVisit each listing's detail page for full data
requestDelayinteger1500Delay between requests in ms (minimum 500, 1500+ recommended)
maxConcurrencyinteger3Maximum 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 rate-limits aggressively and may block requests from datacenter IP addresses during extended scraping sessions. Proxy usage is optional but recommended for larger scraping runs.

  • Paid Apify plan users: Datacenter proxy works for small runs (under 50 listings). For larger runs, switch to residential proxy in the Proxy Configuration input if you encounter blocks.
  • Free plan users: The actor works without proxy for small batches. If you hit rate limits or blocks, increase requestDelay to 3000+ ms and reduce maxConcurrency to 1. For consistent large-scale scraping, provide your own residential proxy URL.
  • Keep requestDelay at 1500ms or higher and maxConcurrency at 3 or lower to minimize rate limiting.

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, keep scrapeDetails enabled (the default). If you only need titles, prices, locations, and posting dates, disable it for significantly faster runs since the actor skips visiting each individual listing page.

How do I avoid getting blocked by Craigslist?

Craigslist has aggressive rate limiting. Keep requestDelay at 1500ms or higher, set maxConcurrency to 1-3, and use a proxy. The actor rotates user agents automatically and includes realistic browser headers. For large scraping jobs (500+ listings), consider splitting across multiple runs.

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.