Craigslist with Optional Emails [Only $1.5π°] Search | Details
Pricing
from $1.50 / 1,000 results
Craigslist with Optional Emails [Only $1.5π°] Search | Details
π° $1.50 per 1,000 results β No limits, no quotas, unlimited extraction. Get attributes like bedrooms, square footage, prices, or compensation. Captures descriptions, high-res images, embedded map coordinates (Lat/Lon), phone numbers, and directly extracts EMAILS! Outputs directly to JSON/CSV.
Pricing
from $1.50 / 1,000 results
Rating
5.0
(3)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
2
Bookmarked
100
Total users
36
Monthly active users
0.87 hours
Issues response
13 hours ago
Last modified
Categories
Share
Craigslist Scraper
Unlock the Full Power of Craigslist Data - The only scraper you need to track, analyze, and extract local listings on Craigslist with enterprise-grade reliability and precision. Whether you're monitoring housing markets, hunting for cars, finding gigs, or conducting research, our scraper delivers comprehensive, real-time insights while saving you time and resources.
"From apartments to vintage cars and local services, we turn Craigslist data into your competitive advantage."
Overview
The Craigslist Scraper is your go-to tool for extracting detailed listings and classified data from Craigslist. Ideal for real estate agents, vehicle resellers, market analysts, and deal hunters, it tracks post details, pricing, direct contact emails, and location information across the entire network of Craigslist sub-domains. With easy setup and multiple export formats (JSON, CSV), it's perfect for anyone looking to gather comprehensive data from local classifieds.
What does Craigslist Scraper do?
The Craigslist Scraper is a powerful tool that enables you to:
Comprehensive Data Collection
- Listing Data
- Extract complete classified details, descriptions, and specifications.
- Scrape specific categories: housing, for sale, jobs, gigs, community, and services.
- Gather deep listing attributes (e.g., bedrooms, square footage, vehicle models, job compensation).
- Download high-quality images and extract raw text from posts.
- Contact & Location Data
- Extract explicit email addresses from listing descriptions using regex parsing.
- Pull embedded map coordinates (Latitude/Longitude) and address accuracy.
- Capture explicitly listed phone numbers.
- π Premium (opt-in): capture Craigslist's anonymized reply forwarder
(e.g.
8efb2β¦@sale.craigslist.org) for each listing β the address sellers expose through the reply button. One toggle, no external accounts; cost is baked into the Apify per-email charge. See Premium feature: anonymized reply email below.
Advanced Scraping Capabilities
- Pagination Handling: Automatically navigates through all search result pages up to the requested maximum.
- Structured Outputs: Converts unstructured Craigslist posts into clean, easy-to-read JSON attributes.
Flexible Scraping Options
- Search Results: Extract property listings by search criteria using any valid Craigslist search URL.
- Housing:
https://phoenix.craigslist.org/search/apa?query=tempe#search=1~list~0~0 - Gigs:
https://yuma.craigslist.org/search/ggg#search=1~list~0~0
- Housing:
- Individual Properties: Target specific posts using direct HTML URLs.
- Post:
https://spacecoast.craigslist.org/mar/d/melbourne-marketing/7914263508.html
- Post:
This tool is ideal for:
- Local market research and analysis
- Price analysis and competitive intelligence for resellers
- Job lead generation and gig hunting
- Building comprehensive databases for business intelligence
- Tracking price trends, inventory, and market conditions
Supported Listing Categories
The Craigslist Scraper can extract data from virtually any listing category:
-
Housing (
apa,roo,rea) - Apartments, rooms, houses, and commercial real estate.- Fields:
bedrooms,bathrooms,space,rentPeriod,availableFrom
- Fields:
-
For Sale (
sss,cta,ele) - Cars, electronics, furniture, and general items.- Fields:
price,condition,make/model
- Fields:
-
Jobs & Gigs (
jjj,ggg,mar) - Open positions and short-term labor.- Fields:
compensation,employment type
- Fields:
Each category has its own unique unstructured data that the scraper attempts to intelligently map into the properties and amenities fields.
Quick Start
- Sign up for Apify: Create your free account at apify.com.
- Find the Scraper: Search for "Craigslist Scraper" in the Apify Store.
- Configure Input: Set up your scraping parameters using the input schema (Search URLs or Post URLs).
- Run the Scraper: Execute the scraper on the Apify platform.
- Data Collection: The scraper will output all available property data.
Input Configuration
Here's an example of how to set up the input for the Craigslist Scraper:
{"startUrls": ["https://phoenix.craigslist.org/search/apa?query=tempe#search=1~gallery~0~0","https://spacecoast.craigslist.org/mar/d/melbourne-marketing/7914263508.html"],"maxItems": 100,"maxConcurrency": 50,"minConcurrency": 1,"maxRequestRetries": 15,"proxy": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Or, instead of pasting URLs, use the Scrape by Query filter set to build URLs from a city + keywords + filters:
{"subdomain": "phoenix","category": "apa","searchQueries": ["arizona state university"],"minPrice": 800,"maxPrice": 2500,"onlyWithPhotos": true,"minBedrooms": 1,"catsOk": true,"maxItems": 100}
To also capture the anonymized reply forwarder per listing, flip a single toggle (see Premium feature for cost details):
{"startUrls": ["https://newyork.craigslist.org/search/ele?query=audio"],"maxItems": 50,"extractReplyEmail": true}
No external account or API key required β the managed unlock service is provided by the actor maintainer and its cost is fully covered by the per-email charge.
Input Fields Explanation
startUrls: Array of URLs to start scraping from. You can mix Search Result URLs and direct Post URLs.subdomain/category/searchQueries/minPrice/maxPrice/sellerType/onlyWithPhotos/postedToday/hideDuplicates/deliveryAvailable/postalCode/searchDistance/searchNearby/minBedrooms/maxBedrooms/minBathrooms/maxBathrooms/catsOk/dogsOk/condition: filter inputs used to build Craigslist search URLs automatically (Scrape by Query mode). Combine withstartUrlsor use alone.extractReplyEmail(boolean, defaultfalse): When on, captures each listing's anonymized reply forwarder. Billed as ~68 dataset items per success. No external account or API key required from the buyer β the managed unlocker service is provided by the actor maintainer.maxItems: Maximum number of individual posts to scrape per start URL (default: 1000).maxConcurrency: Maximum number of pages processed simultaneously (default: 10).minConcurrency: Minimum number of pages processed simultaneously (default: 1).maxRequestRetries: Number of retries for failed requests (default: 100).proxy: Proxy settings for enhanced scraping reliability. Residential proxies are heavily recommended.
Output Structure
The scraper provides comprehensive information extracted from the HTML and embedded JSON objects on Craigslist pages.
Sample JSON Output
[{"id": "7914263508","url": "https://spacecoast.craigslist.org/mar/d/melbourne-marketing/7914263508.html","title": "Marketing","datetime": "2026-02-10T12:16:54-0500","location": "","category": "marketing","price": "","email": "cnich1962@gmail.com","label": "post","longitude": "-80.787498","latitude": "28.211274","mapAccuracy": "22","post": "Are you looking to make $1500 a week just knocking doors? Central Florida. Our home improvement company currently has positions for outside canvassers... Give us a call at 321-626-2543. Or send your rΓ©sumΓ© to our email cnich1962@gmail.com.","notices": ["OK for recruiters to contact this job poster."],"pics": [],"amenities": ["Earn up to $1500.00 per week","full-time","mid level","Marketing"],"properties": {"other": ["Earn up to $1500.00 per week","full-time","mid level","Marketing"]},"bedrooms": "","bathrooms": "","space": "","availableFrom": "","rentPeriod": "","phoneNumbers": ["3216262543"],"address": {"postalCode": "","street": "","city": "","region": "","country": "US"},"citySubdomain": "spacecoast","scrapedAt": "2026-02-23T09:06:44.147Z"}]
Output Fields Explanation
id: The unique numerical Craigslist Post ID.url: The full canonical URL of the listing.title: The designated title of the post.datetime: The ISO string of the time the post was published/updated.location: The user-provided string location (e.g. "Tempe", "Downtown").category: The designated Craigslist category (parsed from the URL code, e.g.apa->apartments).price: The price listed on the post.email: Extracted email address. The scraper uses regex to pull explicit emails from the description text.longitude/latitude: Map coordinates if the poster attached a map.post: The raw, plaintext description of the listing with HTML tags stripped.notices: Array of standard Craigslist footers (e.g. "Do not contact me with unsolicited services").pics: Array of URLs linking to the high-resolution images attached to the post.amenities/properties: Key-value pairs and arrays of standard attributes (like compensation, laundry, parking, pet policies).bedrooms/bathrooms/space: Parsed specifically for Housing search categories.phoneNumbers: Extracted 10-digit phone numbers found in the post description.address: Attempted parsing of the localized map address string into Street, City, Region, Zip.citySubdomain: The root Craigslist domain the post belongs to (e.g.spacecoastorsfbay).
Premium output fields (when extractReplyEmail is enabled)
replyEmail: The anonymized Craigslist reply forwarder for the listing β e.g.8efb2cβ¦@sale.craigslist.org. Sending a message to that address forwards to the poster's real inbox.replyEmailAttempts: How many unlock attempts were made (1 or 2). The actor automatically retries once on a soft failure.replyEmailDurationMs: Wall-clock time spent on the premium unlock for this row.replyEmailFailReason: WhenreplyEmailisnull, a free-text explanation (e.g. "no @*.craigslist.org pattern in rendered HTML β likely captcha not solved", "premium unlocker credits exhausted").replyEmailSkipReason: WhenreplyEmailisnulland we didn't even try, why we skipped. Two common values: "budget exhausted (N units left, needs 68)" and (implicit) listings without an active reply button.
Premium feature: anonymized reply email
Some Craigslist sellers hide their email behind Craigslist's anonymized reply system β instead of pasting me@example.com in the description, they let buyers contact them through a forwarder like 8efb2cβ¦@sale.craigslist.org. To get those forwarders programmatically, the actor's reply system has to defeat Craigslist's hCaptcha protection on the reply popup.
How it works
- Enable the Extract anonymized reply email toggle in the actor input. No API key or external sign-up needed.
- For every scraped listing that has an active reply button, the actor routes the page through the managed unlocker service (the actor maintainer's account, baked into the actor's environment), simulates the two-click flow that opens the reply popup, waits for the captcha + the reply API round-trip to complete, and parses the rendered HTML for the forwarder.
Realistic success rate: ~75% single-attempt, ~92% with the built-in one-shot retry on soft failures.
Coverage & what it costs
- You only pay for emails actually captured. Each successfully captured
replyEmailis billed at 68 dataset units (β $0.10 at the default $1.50 / 1,000 rate). A listing that comes back with an emptyreplyEmailis free beyond the normal 1-unit listing row β there is no charge for a miss. - Typical coverage is 50β90% of listings per run, depending on Craigslist's live anti-bot load when you run it. Like every email-enrichment tool (Hunter, RocketReach, Clearbit), this is best-effort matching, not a guarantee β but because you only pay per captured email, partial coverage never means wasted spend.
- The flat per-email charge fully covers the unlock service β you do not need a separate account with any third-party captcha-bypass provider, and there is no extra spend outside the Apify charge you can see in your run cost.
- If your per-run Apify budget would be exceeded by another premium row, the actor automatically skips the premium unlock for that listing β no wasted spend, no over-billing. The skip reason is recorded on the row.
Topping up coverage β retry-failed mode
Because coverage varies with Craigslist's anti-bot load, the cleanest way to reach high coverage is to re-run the failures. After a run, copy its dataset ID and start a second run with that ID in the retryFailedFromDatasetId field. The actor re-attempts only the listings that came back empty (it skips everything already captured), so each follow-up run tops up your coverage and you're billed only for the new emails it recovers. Two or three passes over a few hours typically converges toward ~90%. You can also schedule a run that points at the same dataset to make this fully automatic β no babysitting, the dataset just fills in over time.
What replyEmail is not good for
The forwarder is designed for one-on-one inquiries through Craigslist's reply system. It does not work as a bulk-mailing target β Craigslist throttles and bans senders that hit many forwarders in a short period, and most email providers (Gmail, Yahoo, SES, etc.) will land your messages in spam if they detect bulk sending to Craigslist addresses.
FAQ
Q: My replyEmail field is null. Why?
Check the replyEmailFailReason or replyEmailSkipReason field on the row. Common causes:
- The listing doesn't have an active reply button (some posts disable replies entirely).
- The buyer's per-run Apify budget got hit mid-run.
- Craigslist's anti-bot load was high at run time and the captcha couldn't be solved for that listing. This is transient β re-run the failures with
retryFailedFromDatasetId(see "Topping up coverage" above) and most will come through on a later pass. You're not charged for the misses.
Q: How do I get from 50% coverage to ~90%?
Re-run with retryFailedFromDatasetId set to your previous run's dataset ID. It re-attempts only the empty-replyEmail listings and tops up the same data over time. Schedule it against the same dataset to make it self-healing.
Q: Why do I see Found 0 listings on a search URL I know has results?
Usually one of:
- The category code isn't a real Craigslist category and Craigslist silently treated it as "for sale". Check your
categoryinput or the/search/<code>path in your URL. - Your search query is too specific. Craigslist matches the exact phrase:
Affordable move-in cleaning asapmatches no posts butcleaningmatches hundreds. - The region+category genuinely has no current listings.
The actor logs which of these applies on every 0-results page, and also pushes 10 placeholder rows labeled NO_RESULTS with the diagnostic in the causes field.
Q: Can the actor get the seller's real Gmail / Yahoo / etc.?
Only when the seller pasted it in the listing description. The actor regex-extracts those into the email field automatically. For sellers who hide behind Craigslist's anonymized reply system, the seller's real email is never exposed publicly β even the premium replyEmail feature only gets the Craigslist-internal forwarder.
Q: What about phone numbers?
Same idea β phoneNumbers is regex-extracted from the description text. Some sellers paste phones, most don't. There's no equivalent to the replyEmail feature for the anonymized call/text system in this version.
Q: Will my Apify spending limit protect me?
Yes. The actor reads your per-run budget at startup and caps how many listings it will queue. With extractReplyEmail enabled, the cap math accounts for the 68-unit multi-charge per premium row β so you can't over-spend even if you queue an unbounded URL list.
Q: I don't want the premium feature. Will I still be charged extra?
No. When the extractReplyEmail toggle is off (default), the actor never calls the premium unlocker and every row bills at 1 unit.
Q: Do I need any external account or API key to use the premium feature?
No. The managed unlock service is provided by the actor maintainer β the cost is fully baked into the per-email Apify charge. You only need a paid Apify subscription (the premium feature is unavailable on Apify free-tier accounts).
Troubleshooting
Subdomain "..." doesn't exist on Craigslist
The actor pre-probes every subdomain you provide. Real Craigslist subdomains are usually just the city name without state suffix β scottsbluff not scottsbluffnebraska, phoenix not phoenixaz. Full sites list: craigslist.org/about/sites
Unknown Craigslist category "..."
You provided a category code that isn't in our known set. The actor continues but logs a warning β Craigslist silently treats unknown codes as "for sale" which usually returns 0 results. Common service codes: hss (household services), lbs (labor/moving), srv (services umbrella). Use the dropdown in Scrape by Query to avoid this.
No listings found for this search
Each empty search pushes 10 NO_RESULTS placeholder rows to the dataset with the diagnostic in the causes field. Read those before debugging anything else.
βΉοΈ For custom solutions or support, contact muhameddidovic@gmail.com.