Craigslist Scraper [$5/1k💰] | Jobs | Housing | Cars
Pricing
from $4.97 / 1,000 results
Craigslist Scraper [$5/1k💰] | Jobs | Housing | Cars
Scrape Craigslist listings for jobs, housing, used cars, and for-sale items. Extract title, price, location, images, contact info, and posting dates as structured JSON or CSV data for lead generation, rental price monitoring, and market research.
Pricing
from $4.97 / 1,000 results
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Craigslist Scraper & API Alternative — Jobs, Housing, Used Cars & For-Sale Data
Extract structured Craigslist listings data — title, price, location, posting date, images, full description, and published contact info — from any US city, then export to JSON, CSV, or Excel for rental price monitoring, used-car market research, job market analysis, and lead generation. Craigslist has no official API, so this actor is the fastest way to get clean Craigslist data programmatically.
Main Use Cases
- Rental price monitoring & housing market research — track asking rents, bedrooms, bathrooms, pet policy, and geo-coordinates for apartments in any city, and spot rent trends over time.
- Used car price tracking & vehicle market data — collect cars & trucks listings with price, images, location, and mileage attributes to benchmark used-vehicle values.
- Craigslist lead generation — extract gig and services postings with published contact info (email / phone from the print section) for local lead-gen outreach.
- Job market research & recruiting intelligence — pull job postings with employer name, employment type, compensation, valid-through dates, and location in bulk.
- Deal sourcing & flipping — monitor for-sale listings with price, photos, and seller location to find
underpriced items; combine with
&sort=priceascor&postedToday=1URL filters. - Market-wide dataset building — run multiple search URLs (different cities/categories) in one crawl and download a structured, deduplicated Craigslist dataset for analysis or ML.
How It Works
- You provide one or more Craigslist search URLs or direct posting URLs — any city, any category, any filter. All URL parameters (price range, pet-friendly, posted-today, sort order) pass through as-is.
- The actor parses each static search page for listing titles, prices, locations, and detail-page URLs.
- For every listing it fetches the detail page and extracts Craigslist's embedded
ld_posting_dataJSON-LD structured data (jobs:JobPosting; housing: apartment/house schema; for-sale:Product), falling back to HTML selectors when JSON-LD is unavailable. - Results are normalized — images to 600x450 and deduplicated, prices as display strings, dates as ISO timestamps — and pushed to your dataset, ready for API access or CSV/Excel export.
No browser, no login, no CAPTCHA solving. Plain HTTP via CheerioCrawler — fast, cheap, and reliable.
Monitor Craigslist Rental Prices for Housing Market Research
Housing listings return category-specific structured fields that generic scrapers miss:
| Field | Type | Notes |
|---|---|---|
numberOfBathroomsTotal | number | From JSON-LD |
petsAllowed | boolean | Pet policy from JSON-LD |
attributes | object | Bedrooms, sqft, laundry, parking, etc. from the HTML attrgroup |
latitude / longitude | string | Geo-coordinates for mapping |
Example: https://www.craigslist.org/search/area/sfbay?cat=apa — append &min_bedrooms=2,
&pets_dog=1&pets_cat=1, or &postedToday=1 for custom monitoring feeds. Rental-housing researchers
routinely use Craigslist as their primary listing source (e.g. the 2017 Boeing & Waddell study of
11 million US Craigslist rental listings) — this actor makes that data collection repeatable.
Track Used Car Prices and Vehicle Listings
Cars & trucks listings include Product JSON-LD with offers.price and priceCurrency, plus images,
location, and full descriptions — the raw material for used-car price comparison and value-tracking
datasets. Example: https://www.craigslist.org/search/area/sfbay?cat=cta.
Scrape Craigslist Job Postings With Employer and Employment Type
Job postings include fields most generic scrapers don't extract:
| Field | Source | Notes |
|---|---|---|
hiringOrganization | JSON-LD JobPosting | Employer name |
employmentType | JSON-LD JobPosting | FULL_TIME, PART_TIME, etc. |
validThrough | JSON-LD JobPosting | Posting expiry date |
price | HTML / JSON-LD | Compensation (often "$0" for jobs) |
Example: https://www.craigslist.org/search/area/sfbay?cat=jjj.
Find Craigslist For-Sale Deals for Flipping and Resale Arbitrage
For-sale listings give you price, images, location, and full body text. Mix URL filters to find
undervalued items: &sort=priceasc, &max_price=500, &min_price=100, &hasPic=1. Example:
https://www.craigslist.org/search/area/sfbay?cat=sss.
Generate Local Leads From Craigslist Gigs and Services
Gigs and services listings include title, description, and location. When posters publish their contact
info in the print section, the actor extracts it (contactInfo field).
| Category | URL segment |
|---|---|
| Gigs (labor, computer, creative, domestic, etc.) | ?cat=ggg |
| Services (automotive, beauty, computer, etc.) | ?cat=bbb |
| Free stuff | ?cat=zip |
Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
startUrls | array<{url}> | Yes | — | Craigslist search URLs or direct posting URLs. Any city, category, or filter. |
maxItems | integer | No | 50 | Max detail pages to scrape (1–500). Free accounts are capped at 10. |
maxConcurrency | integer | No | 3 | Concurrent requests (1–10). Keep at 2–5 to avoid rate-limiting. |
maxRequestsPerCrawl | integer | No | 100 | Hard cap on total HTTP requests incl. search pages (1–1000). |
proxyConfiguration | object | No | { "useApifyProxy": true } | Apify proxy settings. US residential recommended for large runs. |
Output
Each dataset item is one Craigslist posting with these fields:
| Field | Type | Description |
|---|---|---|
title | string | Posting title |
price | string | Price or compensation (e.g. "$350.00", "$0" for jobs) |
location | string | City, state, postal code (e.g. "Emeryville, CA, 94662") |
postingDate | string | ISO timestamp of when the posting was published |
url | string | Direct link to the listing |
category | string | Craigslist category (jobs, housing, for sale, gigs, services) |
images | string[] | Array of image URLs (normalized to 600x450, deduplicated) |
bodyText | string | Full posting description text |
contactInfo | string | Email/phone from the print section (often null — see FAQ) |
postingId | string | Craigslist post ID |
searchTitle | string | Title as shown on the search results page |
latitude / longitude | string | Geo-coordinates when available in JSON-LD |
hiringOrganization | string | Employer name (jobs only) |
employmentType | string | FULL_TIME, PART_TIME, etc. (jobs only) |
validThrough | string | Posting expiry date (jobs only) |
numberOfBathroomsTotal | number | Bathrooms (housing only) |
petsAllowed | boolean | Pet policy (housing only) |
attributes | object | Category-specific attributes: bedrooms, sqft, laundry, parking, etc. |
priceCurrency | string | Currency code (for-sale Product listings) |
ldType | string | JSON-LD @type: JobPosting, Product, Apartment, etc. |
ldData | object | Full JSON-LD structured-data blob as returned by Craigslist |
Example Input
{"startUrls": [{ "url": "https://www.craigslist.org/search/area/sfbay?cat=apa&min_bedrooms=2" },{ "url": "https://www.craigslist.org/search/area/sfbay?cat=cta&max_price=15000" }],"maxItems": 50,"maxConcurrency": 3,"maxRequestsPerCrawl": 100}
Example Output
{"title": "vintage fiberglass Eames chair, Gray and Parchment,1950s","price": "$350.00","location": "Emeryville, CA, 94662","postingDate": "2026-08-08T12:59:09-0700","url": "https://www.craigslist.org/view/d/emeryville-vintage-fiberglass-eames/tCUrwRGUps5yCBfVhYRc3f","category": "for sale","images": ["https://images.craigslist.org/00e0e_fOPQDEQBI7j_0lO0t2_600x450.jpg","https://images.craigslist.org/00M0M_Jqu4UmLmVF_0t20t2_600x450.jpg"],"bodyText": "One remaining from the pair previously listed. Mid-1950s c.1955-57 Herman Miller DAX-1 chair...","contactInfo": null,"postingId": "7952375424","latitude": "37.836500","longitude": "-122.280400","hiringOrganization": null,"employmentType": null,"attributes": {},"ldType": "Product","ldData": {"@type": "Product","name": "vintage fiberglass Eames chair, Gray and Parchment,1950s","offers": { "price": "350.00", "priceCurrency": "USD" }},"searchTitle": null}
Integrations & Automation
- API access: call this actor programmatically via the Apify API from any script or backend — it acts as an unofficial Craigslist API.
- Scheduling: set a daily or weekly schedule to monitor rental prices, used-car prices, or new listings automatically. Recurring runs also let you build time-series price datasets that stay fresh.
- Webhooks: get notified whenever a run finishes and a new dataset is ready.
- Zapier / Make: connect Craigslist data to your CRM, spreadsheet, or alert system via no-code integrations.
- Dataset export: download JSON, CSV, Excel, HTML, or XML — or stream via the API into a data warehouse.
Recurring-use tip: run daily for price/listing monitoring in your target cities — CheerioCrawler keeps runs cheap, and the dataset records new entries over time.
Related Actors
| Actor | Why it's related | Link |
|---|---|---|
| Facebook Marketplace Scraper | Largest social marketplace — the main Craigslist alternative for local listings data | apify.com/apify/facebook-marketplace-scraper |
| Indeed Scraper | Widely used job listings scraper (28K+ users) — complements Craigslist job data | apify.com/misceres/indeed-scraper |
| Airbnb Scraper & Market Monitor | Rental/accommodation price monitoring in the same housing-data cluster | apify.com/ahmed_jasarevic/airbnb-scraper-listings-prices-hosts |
| eBay Scraper | Sold-price tracking for resale/arbitrage research on the same audience | apify.com/ahmed_jasarevic/ebay-scraper |
| Vinted Arbitrage Scraper | Cross-country price comparison — adjacent deal-sourcing workflow | apify.com/ahmed_jasarevic/vinted-cross-country-arbitrage-scraper |
Frequently Asked Questions
Does Craigslist have an official API?
No. Craigslist does not provide a public API. This actor acts as an unofficial Craigslist API: you provide any Craigslist search URL and get structured JSON back. No Craigslist account, API key, or login is needed on the Craigslist side.
Why use this actor instead of the official API?
Because there is no official Craigslist API, and no official data export for third parties. Using this actor saves you from maintaining your own scraper (selector maintenance, pagination, rate limiting) and gives you category-specific fields — employer and employment type for jobs, bedrooms/bathrooms/pets for housing, price currency for for-sale — that most generic tools don't extract.
How do I scrape Craigslist without getting blocked?
Keep maxConcurrency at 2–5, use the Apify proxy (US residential for large runs — Craigslist is known to
block datacenter IPs), and don't hammer the site with frequent large crawls. This actor uses CheerioCrawler
(plain HTTP, no browser), which is lighter on Craigslist's servers than browser-based scrapers.
Is scraping Craigslist legal?
This is your responsibility to evaluate. Craigslist's Terms of Use expressly prohibit collection of content via "robots, spiders, scripts, scrapers, crawlers, or any automated or manual equivalent," and Craigslist has enforced this in litigation. This actor only accesses publicly available pages (no login bypass, no CAPTCHA solving) and is intended for research and business use — but you should review Craigslist's ToS and applicable law before running it. See the Legal & Compliance Defense below.
What is the best way to extract Craigslist data to CSV/Excel?
Run this actor with your search URLs, then download the finished dataset as CSV, Excel, or JSON from the Apify Console — or pull it via the Apify API into your own pipeline. There are also ready integrations for Zapier and Make.
How much does it cost to scrape Craigslist?
Pay-per-event pricing:
- $0.0005 per actor start
- $0.005 per result (dataset item) — about $5 per 1,000 listings, full detail fields included
A 100-listing run costs roughly $0.50. Free Apify accounts get a capped preview (10 items per run). Pricing is slightly lower on higher Apify plans.
Why does contactInfo come back as null most of the time?
Craigslist hides most contact details behind a reply button. Email/phone is only visible in the print
section when the poster chooses to publish it directly. This is a Craigslist design limitation, not a bug.
When present, the actor returns it as email: ... / phone: ....
Can I pass Craigslist filters like price range, pet-friendly, or sort order?
Yes — any Craigslist URL filter works. Just include it in your search URL: &min_price=500&max_price=2000,
&pets_dog=1, &postedToday=1, &sort=priceasc, &hasPic=1. The actor passes all URL parameters through
unchanged.
How does this compare to other Craigslist scrapers?
See the capability table in Competitive Positioning below — the short version: this actor extracts detail-page fields (category-specific JSON-LD, contact info when published, geo coordinates) that many Craigslist tools skip, and it accepts any search URL instead of fixed dropdowns.
What are the alternatives to this actor / to Craigslist data sources?
For listing data: the Facebook Marketplace Scraper covers the largest Craigslist alternative, and the Indeed Scraper is the popular choice for structured job data. For housing data specifically, Airbnb/rental-portal scrapers (see Related Actors) complement Craigslist, which remains the most-used US rental listing source. For buying-and-selling platforms in general, OfferUp, eBay, and Nextdoor are the usual Craigslist alternatives.
How do I monitor new Craigslist listings automatically?
Use the Apify Schedule feature: run the actor every 15–30 minutes (jobs/gigs, high turnover) or daily (housing/cars), and use webhooks or Zapier/Make to alert on new items. Each run's dataset records the posting date, so you can diff runs for "new since last time".
Competitive Positioning
Verified against live competitor pages and this actor's source (see keyword-research.md for method):
| Capability | Typical Craigslist scrapers | This actor |
|---|---|---|
| Input | Fixed city/category/query dropdowns | Any Craigslist search URL, all filters preserved |
| Price extraction | Display string only | Display string + currency code from Product JSON-LD |
| Job fields | Title/price/location only | hiringOrganization, employmentType, validThrough |
| Housing fields | Rarely | Beds/baths/pets via attrgroup + JSON-LD bathroom/pet fields |
| Geo-coordinates | Often only on search cards | Latitude/longitude from detail-page JSON-LD |
| Contact info | Rare | Email/phone from print section when posted publicly |
| Extraction robustness | HTML selectors only | JSON-LD ld_posting_data + HTML fallback |
| Images | Raw URLs | Normalized 600x450, deduplicated |
For AI Agents & LLM Apps
Purpose: Extract structured Craigslist listing data (title, price, location, images, description, contact info) from any Craigslist search URL or direct posting URL. Returns JSON dataset items — one per listing — via the Apify API.
Minimal input:
{"startUrls": [{ "url": "https://www.craigslist.org/search/area/sfbay?cat=sss" }],"maxItems": 50}
Variant — direct posting URL (no search page, extracts that single listing):
{"startUrls": [{ "url": "https://sfbay.craigslist.org/eby/for/d/emeryville-vintage-fiberglass-eames/7952375424.html" }],"maxItems": 5}
Output fields: title, price, location, postingDate, url, category, images, bodyText,
contactInfo, postingId, searchTitle, latitude, longitude, hiringOrganization,
employmentType, validThrough, numberOfBathroomsTotal, petsAllowed, attributes,
priceCurrency, ldType, ldData.
Behaviors an agent should know:
- A URL containing
/search/is auto-treated as a search page; any other URL is treated as a direct posting detail page. Both work instartUrls. - Free accounts are capped at 10 results regardless of
maxItems. Paid accounts get the full cap. maxRequestsPerCrawlcaps total HTTP requests (search pages + detail pages). If it's too low relative tomaxItems, the run may stop before reaching the item cap — raise it for large runs.contactInfois usuallynull— Craigslist hides contact behind a reply button; only posters who publish info in the print section are captured.priceis always a string (e.g."$350.00"), never a number.- Images are normalized to 600x450 and deduplicated.
maxConcurrencyis used as-is: keep 2–5 to avoid rate limiting. Enable the proxy / US residential for large runs.
Billing: PAY_PER_EVENT — $0.0005 per start + $0.005 per result (≈ $5 per 1,000 results).
Legal & Compliance Disclaimer
This actor is independent and is not affiliated with, endorsed by, or sponsored by Craigslist, Inc.
This actor accesses only publicly available Craigslist pages — it performs no login, no CAPTCHA solving, and no authenticated sessions. It makes standard HTTP requests to pages that are openly accessible without a Craigslist account.
Craigslist's Terms of Use prohibit automated access to its site. Users are responsible for their own compliance with Craigslist's Terms of Service and applicable law, and for any data they collect or republish. Where personal contact data is captured (when posters publish it), users should not use it for unsolicited commercial outreach in violation of applicable law (e.g. CAN-SPAM, GDPR, CCPA, TCPA). This section is not legal advice.
SEO Keywords
craigslist scraper, scrape craigslist listings, craigslist api, craigslist api alternative, how to scrape craigslist, craigslist rental price monitoring, craigslist housing market data, craigslist used car price data, craigslist job postings data, craigslist lead generation, craigslist email and phone extraction, craigslist for sale scraper, craigslist gigs and services scraper, craigslist to csv, craigslist data export, craigslist mcp, scrape craigslist without getting blocked, does craigslist have an api, craigslist new york scraper, craigslist san francisco bay area scraper, craigslist los angeles scraper, craigslist chicago scraper, craigslist seattle scraper, facebook marketplace scraper vs craigslist, craigslist alternatives