Craigslist Scraper — Price, Location & Geo-Coordinates
Pricing
from $1.01 / 1,000 results
Craigslist Scraper — Price, Location & Geo-Coordinates
Scrape Craigslist listings by city, category and keyword: title, price, location, images and geo-coordinates. No login, no API key.
Pricing
from $1.01 / 1,000 results
Rating
0.0
(0)
Developer
Axery
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Craigslist Search Scraper
Scrapes Craigslist listings by city, category and keyword — title, price, location, images and geo-coordinates. No login, no API key.
Useful for local market research, price monitoring on specific item categories, and building a search alert across one or many cities.
What makes this different
Images and precise geo-coordinates, which the listing cards alone don't carry. Craigslist's search page splits its data across two places: the visible listing cards (title, price, neighborhood, URL) and a separate structured ItemList block (images, exact latitude/longitude) with no shared ID linking the two. This Actor merges them by title match into one row, so you get both the clickable listing and its images/coordinates together — something neither source alone provides.
The real depth limit is stated honestly, not hidden. This search page has a fixed ceiling around 350–400 results with no working pagination — the s= offset parameter Craigslist's full site uses for "next page" is silently ignored here, and the RSS export that used to be a workaround is blocked outright. Rather than pretending to page past that (and quietly returning the same listings over and over), this Actor reports what it actually found and documents the limit so you can narrow with query, category, or price filters when a search is broader than that.
Price filters that actually filter, verified against live results rather than assumed from the URL parameter names.
Input
| Field | Type | Notes |
|---|---|---|
city | string | Craigslist city subdomain, e.g. sfbay, newyork. |
category | string | Category code, e.g. sss (for sale - all), bik (bicycles), zip (free). Defaults to sss. |
query | string | Optional keyword, same as the site's own search box. |
minPrice / maxPrice | integer | Optional price range. |
maxItems | integer | 0 = everything this search returns (up to the endpoint's own ~350-400 ceiling). |
incremental | boolean | Only listings not seen in previous runs. |
proxyConfiguration | object | Not normally needed. |
Finding city and category codes
City: the subdomain from that city's Craigslist URL (sfbay.craigslist.org → sfbay). The full list is at craigslist.org/about/sites. Category: the short code visible in the search URL when browsing the category on the site itself.
Output
{"listing_id": "craigslist.org:jNAsa3GTtJA3uJWjxeh7fs","title": "Purple lowrider bicycle 20\"","price": 50,"currency": "USD","location": "sunnyvale","neighborhood": "Sunnyvale","latitude": 37.3764004252778,"longitude": -122.023795650699,"images": ["https://images.craigslist.org/..."],"url": "https://www.craigslist.org/view/d/sunnyvale-purple-lowrider-bicycle-20/jNAsa3GTtJA3uJWjxeh7fs"}
neighborhood, coordinates and images are only present when the structured data block matched that listing by title — most listings match, but not all. Each run also writes a RUN_COVERAGE record to the key-value store with what was requested, what came back, and any failure.
Local development
pip install -r requirements.txtpython test_local.py sfbay --query bike --max 30 --out sample_output.jsonpython test_local.py sfbay --category bik --min-price 50 --max-price 300
sample_output.json is real output from a live search.