Craigslist Scraper – Listings, Prices & Seller Contacts
Pricing
$1.39 / 1,000 listing records
Craigslist Scraper – Listings, Prices & Seller Contacts
Scrape Craigslist listings from any city and category. Returns title, price, images, location, post_id, URL, and optionally description, posted date, and structured attributes. No proxy required. Parses server-side JSON-LD — stable against layout changes.
Pricing
$1.39 / 1,000 listing records
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Craigslist Scraper — Listings, Prices & Locations
Scrape Craigslist listings from any US city, category, and search query. Get title, price, images, location, post ID, and listing URL — plus optional description, posted datetime, and structured attributes (car specs, condition, odometer, etc.) from detail pages. This Craigslist scraper targets the JSON-LD ItemList block embedded by Craigslist itself — structural schema.org data, not CSS class names — making it immune to layout redesigns. No proxy required. Pay per result at $1.39 per 1,000 listings.
Not affiliated with or endorsed by Craigslist.
What you get
| Field | Source | Notes |
|---|---|---|
post_id | DOM link | 10-digit Craigslist post ID |
title | JSON-LD | Listing title |
price | JSON-LD | Numeric float; null for free/contact items |
price_currency | JSON-LD | "USD" |
city | JSON-LD | City name (e.g. "San Francisco") |
state | JSON-LD | State abbreviation (e.g. "CA") |
neighborhood | Detail page | Sub-city neighborhood; null if not set |
latitude / longitude | JSON-LD + detail | Precise coords from detail page when fetchDetails=true |
url | DOM link | Full listing URL |
category | URL | Category abbreviation (e.g. "bik", "cto") |
area_abbrev | URL | Metro sub-area (e.g. "sby", "sfc") |
posted_datetime | Detail page | ISO-8601 UTC; requires fetchDetails=true |
image_urls | JSON-LD | Array of full-size CDN image URLs |
description | Detail page | Plain-text body; requires fetchDetails=true |
attributes | Detail page | Dict of label→value (condition, make, cylinders, etc.) |
parse_confidence | Computed | 0.0–1.0 data quality score |
warnings | Computed | List of parse-issue codes |
scraped_at | Computed | ISO-8601 UTC timestamp |
Common city slugs
| City | Slug |
|---|---|
| San Francisco Bay Area | sfbay |
| New York | newyork |
| Los Angeles | losangeles |
| Chicago | chicago |
| Seattle | seattle |
| Austin | austin |
| Boston | boston |
| Denver | denver |
Full list: https://www.craigslist.org/about/sites
Common category codes
| Category | Code |
|---|---|
| For sale — all | sss |
| Bicycles | bik |
| Cars & trucks by owner | cto |
| Electronics | ele |
| Furniture | fua |
| Apartments | apa |
| Jobs | jjj |
| Clothing | clt |
Full list: https://www.craigslist.org/about/help/abbreviations
Example input
{"city": "sfbay","query": "honda civic","category": "cto","maxResults": 50,"fetchDetails": true}
Example output record
{"post_id": "7938685561","title": "2018 Honda Civic EX","price": 18500.0,"price_currency": "USD","city": "San Jose","state": "CA","neighborhood": "South Bay","latitude": 37.3403,"longitude": -121.9701,"url": "https://sfbay.craigslist.org/sby/cto/d/san-jose-2018-honda-civic-ex/7938685561.html","category": "cto","area_abbrev": "sby","posted_datetime": "2026-06-04T10:51:23+00:00","image_urls": ["https://images.craigslist.org/00h0h_ABC_600x450.jpg"],"description": "Clean title, low miles, well maintained...","attributes": {"condition": "excellent","cylinders": "4 cylinders","drive": "fwd","fuel": "gas","odometer": "45,000","title status": "clean","transmission": "automatic"},"parse_confidence": 1.0,"warnings": [],"scraped_at": "2026-06-04T12:00:00+00:00"}
How it works
- One HTTP request fetches the Craigslist search page for your city/category/query.
- JSON-LD parsing (structural, not CSS): Craigslist embeds all results as a
schema.org ItemListin the page<head>. Up to ~350 results per query. - DOM link extraction: listing URLs (with post_id, category, area_abbrev) are
extracted from
<a>tags in the body and matched to JSON-LD items by title slug. - Detail page (optional): each listing's page is fetched for
posted_datetime, description, and structured attributes.
Pricing
Pay-per-result: $0.00139 per listing ($1.39 / 1,000 listings).
With fetchDetails=false (default): ~1 request/run → very fast, very cheap.
With fetchDetails=true: 1 + N requests (one per listing) → richer data, proportionally more compute.
Use cases for Craigslist data
- Price research — benchmark used car, electronics, or furniture prices across cities
- Real estate leads — monitor for-rent and for-sale listings in target neighborhoods
- Resale arbitrage — find underpriced items listed by private sellers
- Job market intelligence — pull job listings from the
jjjcategory across metros - Academic research — analyze classifieds data for economics or sociology studies
- Competitor monitoring — track similar items listed by other sellers in your category
Frequently asked questions
Do I need a proxy? No. Craigslist search pages are server-side rendered and respond 200 from datacenter IPs. No proxy configuration is needed.
How many results per search? Craigslist includes all matching results in one JSON-LD block — typically up to ~350 items per query. For more coverage, run multiple narrowed queries.
How do I get descriptions and car specs? Set fetchDetails: true. This fetches each listing's detail page to extract description, posted_datetime, neighborhood, precise latitude/longitude, and structured attributes (condition, make, cylinders, etc.). This multiplies request count by N listings.
What is fetchDetails=false good for? Fast, cheap bulk listing collection — title, price, images, location, and URL from a single search-page request. Good for price monitoring and deduplication.
What does parse_confidence mean? 0.0–1.0 data quality score. 1.0 = all critical fields extracted. Below 0.7 = Craigslist may have changed its JSON-LD structure; check warnings for affected fields.
Can I scrape multiple cities? Yes — run the actor multiple times with different city slugs, or use Apify's batch run API to fan out across cities in parallel.
Limitations
- Results per search: up to ~350 (Craigslist's JSON-LD includes all results in one page).
posted_datetime,description,attributesrequirefetchDetails=true.neighborhoodis only available on listings where the poster set it.- Craigslist does not expose full
posted_datetimeon search pages.
Integrations
Built for market researchers and resellers tracking US local listings, pricing trends, and inventory by city and category — the JSON/dataset output drops into the tools you already run, no glue code:
- n8n / Make / Zapier — trigger a run or pipe every new dataset item into 500+ apps (Google Sheets, Airtable, Slack, HubSpot, your database) with no code: n8n, Make, Zapier.
- Webhooks — fire your own endpoint the moment a run finishes, to push results straight into your pipeline (docs).
- MCP server — expose this actor as a tool to Claude, Cursor, or any MCP client so an AI agent can pull this data mid-conversation (guide).
- API & SDKs — fetch the dataset as JSON, CSV, or Excel through the Apify REST API or the Python / JS SDKs.
See all Apify integrations.