Craigslist Scraper
Pricing
from $1.50 / 1,000 results
Craigslist Scraper
Scrapes Craigslist postings — title, price, location and link — from any city and any category.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Mina
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
What does Craigslist Scraper do?
Craigslist Scraper collects postings from any Craigslist search: cars, apartments, furniture, jobs, gigs, or anything else, in any city worldwide. For each posting you get the title, price, ISO currency code, location, city and a direct link. Jobs, gigs, services, community, events and resumes have no price on Craigslist, so for them the price is left empty. You paste the search links you already use on Craigslist, and every filter in them is kept.
It runs on the Apify platform, so you also get API access, scheduled runs, integrations (Google Sheets, Zapier, Make, webhooks), rotating residential proxies and run monitoring without extra setup.
Why use Craigslist Scraper?
- Market research: see what the same kind of item sells for across cities and categories.
- Rental tracking: run the same apartment search every morning and watch rents in a neighbourhood move.
- Deal alerts: schedule a narrow search, such as one car model under a price, and get new postings into a sheet or a webhook.
- Inventory snapshots: capture what is on offer in a local market today, for a report or a dataset.
How to scrape Craigslist
- Go to Craigslist, pick a city and search for what you want.
- Narrow the search with the filters on the page: price range, neighbourhood, category, keywords.
- Copy the address from your browser's address bar.
- Paste it into Craigslist search links and click Start.
- Download the results, or connect them to your tools, when the run finishes.
You can paste several links, one per line. Different cities and categories can go in the same run, and their results land in one table. Both link styles work: https://www.craigslist.org/search/area/newyork?cat=cta and the older https://newyork.craigslist.org/search/cta.
Input
The Input tab has three fields:
- Craigslist search links: one or more search pages copied from Craigslist.
- Max results per search: stops after this many postings per link. The default is 400.
- Proxy country: the 2-letter code of the country the requests come from, such as
USorGB. The default, US, works for every Craigslist city.
{"search_urls": ["https://newyork.craigslist.org/search/cta","https://losangeles.craigslist.org/search/apa"],"max_results_per_search": 400,"proxy_country": "US"}
Output
Each posting becomes one row:
{"id": "vqWL5SYy8CNy1cbcwNjFVp","title": "Yonge/Steeles 2 bedroom + den, heat and parking included","price": 2250,"currency": "CAD","location": "Yonge and Steeles","url": "https://www.craigslist.org/view/d/thornhill-yonge-steeles-bedroomdenfree/vqWL5SYy8CNy1cbcwNjFVp","city": "toronto","position": 1,"search_url": "https://www.craigslist.org/search/area/toronto?cat=apa"}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Data fields
| Field | Description |
|---|---|
id | Craigslist's posting ID, taken from the posting link |
title | Posting title |
price | Asking price as a whole number. Empty for jobs, gigs, services, community, events and resumes, which have no price, and for the odd posting listed without one |
currency | ISO currency code of the city's site, such as USD, CAD, GBP or EUR. Empty whenever price is empty |
location | The neighbourhood, town or address the poster gave. Empty if they left it blank, which is more common outside the US |
url | Direct link to the posting |
city | The Craigslist site the posting was found on, such as newyork or london |
position | Position of the posting within its search, starting at 1 |
search_url | The search link the posting came from |
How much does it cost to scrape Craigslist?
The Actor uses pay-per-event pricing:
- $0.0015 per posting saved to the dataset
- $0.00005 per run for the Actor start
That comes to about $1.50 per 1,000 results. A full search of about 350 postings costs roughly $0.53. Links that return nothing are not charged per row. The monthly credit on Apify's free plan is enough to try the Actor on several searches.
Tips for complete coverage
- This Actor reads at most about 360 postings per search link, however many match. That is the first batch Craigslist sends with the search page; the Actor does not page further. If a link returns around 350 postings, it has most likely hit that cap.
- Split big searches to reach the rest: by price band (
min_price/max_price), by neighbourhood, or by a more specific category. Put each slice in as its own link. - Lower "Max results per search" when you only need the first few postings of each search. A run then saves fewer rows and costs less.
- Schedule the run (daily or hourly) to track new postings and price changes over time.
FAQ, disclaimers, and support
Is it legal to scrape Craigslist? Craigslist's Terms of Use forbid scraping and other automated access to the site. Craigslist has sued companies that scraped it, including 3Taps and RadPad. This Actor reads only publicly visible search pages. You are responsible for how you use it and the data it collects, including following Craigslist's terms and the laws that apply to you, such as data-protection rules for any personal information in postings. If you are unsure, ask a lawyer. This Actor is not affiliated with or endorsed by Craigslist.
Does it get descriptions, photos or posting dates?
No. It reads Craigslist's search results, which carry the title, price, location and link but not the full posting. Open the url to see the posting.
Why do some prices read 0 or 1?
In for-sale and housing searches, that is what the poster entered. Some dealers use it for "call for price" or to advertise a down payment, and everything under "free stuff" reads 0. Jobs, gigs, services, community, events and resumes have no price, so their price and currency are empty instead.
What happens to links that return nothing?
They are listed with the reason in the FAILED_INPUTS record of the run's key-value store, and the run's status message says how many there were. Examples are a link that is not a Craigslist search, a search with no matches, or a page Craigslist would not serve. The run fails only when no postings came back and every search it tried was blocked or could not be loaded. A mistyped link is listed too, but does not change that.
Found a problem or need a custom solution? Open an issue on the Issues tab and include the search link you used. Custom Craigslist extractions, such as other fields or other sites, are available on request.