Craigslist Scraper - Housing Jobs Cars Worldwide avatar

Craigslist Scraper - Housing Jobs Cars Worldwide

Pricing

from $1.32 / 1,000 results

Go to Apify Store
Craigslist Scraper - Housing Jobs Cars Worldwide

Craigslist Scraper - Housing Jobs Cars Worldwide

Scrape Craigslist classifieds worldwide: housing, jobs, cars, services, gigs, community, events, and resumes. 707 official cities. Price, photos, URLs — no login or API key.

Pricing

from $1.32 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

1

Monthly active users

14 hours ago

Last modified

Share

Craigslist Scraper — Housing Jobs Cars + Phones & 门牌

Scrape Craigslist classifieds in 707 official cities — housing, jobs, cars, services, gigs, community, events, and resumes — plus outreach fields: phones found in listing text, street/门牌 from detail JSON-LD, and Craigslist relay emails when the public reply popup is not captcha-gated.

Architecture: thin Apify Actor → craigslist-com Cloud Run worker (HTTPS + API key).
Worker URL is config (WORKER_BASE_URL), not hardcoded-only — migrate the worker by updating Actor env without a code change. Set WORKER_PROVIDES_PROXY=1 when the worker supplies its own PROXY_URL.

  • Search any official Craigslist area slug (austin, toronto, london, sydney, berlin, mexicocity, …) across 707 sites worldwide
  • Cover every Craigslist section: housing, for sale, jobs, gigs, services, community, events, and resumes (144 category codes)
  • Pull price, photos, geo, category, country, and posting URLs from Craigslist search results
  • Enrich from public detail pages by default (JSON-LD, attributes, map/门牌, images) and attach lead keys: phones, emails, address, person, leadAbsences
  • Go beyond Craigslist’s 360-result search cap with automatic sort/price sharding
  • Pay only for what you use: $0.005 per run + $1.80 per 1,000 listings (FREE/Bronze list price)

Craigslist does not offer a public API for third-party apps. This Actor reads the same public search and listing pages people browse on Craigslist and returns structured rows you can export as JSON, CSV, or Excel — or pipe into Sheets, Make, n8n, Zapier, and AI agents.


Need a dedicated scraper for one website?

This Actor is the general tool for protected public pages. If you already have one specific site and a field list, a dedicated scraper is faster and more stable: listing + detail, your export format, delivered to your Apify account or as a standalone runnable client.

I confirm the tier before you pay. The clock starts after that confirmation.

Start here: Submit a custom scraper request

Starter $50Dedicated $100Hard target $200–999
Site1 simple anti-bot public site1 medium anti-bot public siteCloudflare / aggressive anti-bot / custom parser
ScopeFull listing + detail fieldsListing + detail + pagination, your field listAgreed fields, repeatable runs
DeliveryCSV/JSON · Apify Actor or standalone runnable client (script/CLI)Same, plus a sample run and short instructionsFeasibility first, then build
Time24 hours after we confirm the URL is in scope48 hours after confirmationQuoted after feasibility
Fixes30 days for small public-layout changes30 daysScoped in the quote

Hard-target sites are not a 100% uptime promise. You get a dedicated parser that can be re-run on the agreed fields. If the URL is not feasible, you get a refund or pay an assessment fee only — you will know before the build starts.

Not in Starter/Dedicated: login-walled data, native APK / Windows installer / full web apps, or two-year maintenance. Those are a separate quote.


What does the Craigslist Scraper do?

This Actor is a Craigslist classifieds scraper for the whole site, not housing only: apartments and rooms, cars and furniture, jobs and gigs, services, community, events, and resumes. Give it one or more official area slugs anywhere Craigslist operates, pick a category (or a section code such as sss / jjj), set how many listings you want, and it returns structured posting data — with optional detail-page enrichment.

It is useful when you need:

  • Rent, sale, and room inventory snapshots for a city
  • Cars, furniture, and other for-sale listings
  • Job and gig monitoring across Craigslist markets
  • A Craigslist API alternative for research, lead lists, and automation

What you can scrape from Craigslist

1. Scrape Craigslist apartments, rooms, and real estate

Monitor apartments and housing-for-rent (apa) in a target market. Filter by price, bedrooms, bathrooms, photos, or “posted today”, then download a table of listings. Use roo, sub, rea, or vac for rooms, sublets, for-sale housing, and vacation rentals.

2. Scrape Craigslist cars, furniture, and for-sale ads

Use section sss or a leaf such as cta (cars & trucks) or fua (furniture). Dealer vs owner filters apply on for-sale searches (purveyor).

3. Scrape Craigslist jobs, gigs, and services

Use jjj for jobs, ggg for gigs, bbb for services, or a leaf such as sof (software jobs). Jobs and gigs skip price sharding; the Actor still shards by sort when you need more than 360 rows.

4. Cover housing leaves in one run — or a whole site section

Set category to all to sample across apartments, swaps, offices, parking, sale, rooms, sublets, vacation, and wanted housing with a fair per-category quota. For the rest of Craigslist use section codes sss, jjj, ggg, bbb, ccc, eee, rrr.

5. Search outside the US

Area slugs from the official Craigslist sites list resolve cc / lang automatically (toronto → Canada, london → UK, sydney → Australia, berlin → Germany, mexicocity → Mexico, montreallang=fr). Override with country / lang if needed. Historic city hosts (toronto.craigslist.ca, london.craigslist.co.uk) are accepted as start URLs.

6. Feed Craigslist data into AI or automation tools

Ask an AI assistant to “scrape Craigslist apartments in Toronto under $2,000” or “Craigslist cars in sfbay” — or schedule the Actor in Apify and push results into Sheets, CRM, or alerting workflows.


More Actors like this

Looking for another classifieds / housing / jobs scraper, or a site outside Craigslist? Use a specialized Actor when one exists — structured fields, better coverage, usually lower cost. Use this Actor for Craigslist search and optional detail enrichment across official worldwide area slugs.

Similar real estate Actors

Prefer another specialized scraper?

Jobs & Freelance

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.


How to scrape Craigslist listings

  1. Open the Actor in Apify Console.
  2. Enter one or more Craigslist area slugs (for example toronto, london, or sfbay).
  3. Choose a category — housing leaf (apa), for-sale (cta / sss), jobs (jjj), or another 3-letter code.
  4. Set Max listings and whether to enrich from detail pages.
  5. Click Start and download the dataset as JSON, CSV, or Excel.

Free Apify plan limits (set by this Actor's developer)

LimitFree Apify planPaid Apify plan
Runs of this Actor10 runs totalUnlimited
Listings per run (maxItems)Up to 1,000Up to 2,000

These caps are enforced by the Actor developer (not Apify platform errors). When you hit the 10-run limit, the run finishes gracefully with a clear status message asking you to upgrade.


Input

FieldTypeDefaultDescription
locationsstring[]["phoenix"]Official area slugs (phoenix, toronto, london, sydney, …)
country / langstringautoOverride SAPI cc / lang. Blank uses the 707-area catalog
categorystringapaAny 3-letter Craigslist code; all = housing expander; sss/jjj/… = section
purveyorstring(all)For sale: blank / owner / dealer
querystringOptional keyword query
minPrice / maxPriceintegerPrice / rent bounds
minBedrooms / maxBedroomsintegerBedroom filters
minBathrooms / maxBathroomsintegerBathroom filters (SAPI)
minSqft / maxSqftintegerHousing sqft filters
housingType / laundry / parkingintegerCraigslist housing facet codes
catsOk / dogsOk / furnished / noSmokingbooleanfalseHousing amenity filters
hasPicbooleanfalseOnly listings with photos
postedTodaybooleanfalseOnly postings published today
sortstringdatedate, dateoldest, priceasc, pricedsc
startUrlsrequest listOptional search or detail URLs
maxItemsinteger1Max listings (1–2000); Store Test default is 1; free users capped at 1,000/run + 10 runs total
scrapeDetailsbooleantrueEnrich from public detail pages
maxDetailConcurrencyinteger5Parallel detail fetches (1–15)
imageSizestring600x450Search image size suffix
requestDelayMillisinteger250Politeness delay between requests
proxyConfigurationobjectproxy offOptional Apify Proxy

Output

Each dataset item is one Craigslist posting. Core fields include:

FieldDescription
postingIdCraigslist posting ID
titleListing title
priceNumeric price when available
category / categorySection3-letter code and section (housing, forsale, jobs, …)
location / city / country / ccArea slug, city, catalog country, SAPI cc
bedrooms / bathrooms / sqftUnit facts when present (housing)
urlPublic listing URL
postedAtPosting timestamp when available
sourceAlways craigslist
phones[]{ value, type, e164? } from listing body / tel:never the numeric posting id. Empty + leadAbsences.phones when the ad has no number
emails[]{ value, type } including Craigslist relay addresses (hex@hous.craigslist.org) when /reply/…/popup is reachable. Captcha/404 → empty + 闸门锁
address{ street, unit, locality, region, postalCode, country, full }. unit is 门牌 when Craigslist shows it (often absent). Legacy streetAddress / mapAddress strings are kept
geo{ lat, lng } from #map / JSON-LD, in addition to street
person{ name, role } poster name from reply flap (contact name: …) when ungated
org / webStructured agency/website are usually 本站无 on Craigslist P2P ads
leadSource / leadRevealsearch | detail | reveal-xhr and visible | click | gated | absent
leadAbsencesPer-subfield 本站无 / 闸门锁 / 未验证 when a lead key is empty
images / other detail fieldsPresent when search or detail enrichment provides them

Key-value store artifacts:

  • INPUT_ECHO — normalized public input
  • RUN_SUMMARY (and SUMMARY) — run stats and shard notes
  • ERROR_SUMMARY — written when the run fails

Empty searches return SUCCEEDED with zero dataset rows when the worker reports NO_MATCH (valid area, nothing listed) or LOCATION_UNRESOLVED (unknown slug). Hard blocks still fail the run.


Categories supported

Housing leaves stay the default. Section codes search that whole Craigslist column in one SAPI request. all still expands housing leaves only.

CodeMeaning
apaApartments / housing for rent
swpHousing swap
offOffice & commercial
prkParking & storage
reaReal estate for sale
rooRooms & shares
subSublets & temporary
vacVacation rentals
hou / hsw / sha / sbwWanted housing
reo / rebSale by owner / broker shortcuts
allAll housing leaves (not the whole site)
hhh / sss / jjj / ggg / bbb / ccc / eee / rrrHousing / for sale / jobs / gigs / services / community / events / resumes

Leaf codes such as cta (cars), sof (software jobs), and fua (furniture) are in the input dropdown (144 codes from the live sfbay homepage). Country/area catalog: 707 official slugs from craigslist.org/about/sites.


How the Craigslist scraper works

The Actor is HTTP-first (got-scraping + Cheerio):

  1. Primary search via Craigslist SAPI /web/v8/postings/search/full
  2. Optional public detail HTML enrichment (JSON-LD, attributes, map, images)
  3. Optional Apify Proxy when you enable it in input
  4. Never calls Craigslist /reply contact endpoints

SAPI /full returns at most 360 rows per request and does not expose a reliable offset. When maxItems > 360, the Actor automatically shards across alternate sorts (dateoldest, price asc/desc) and category-aware price buckets (rent vs sale vs commercial) to collect more unique postings. For category=all, unused per-category quota is refilled on a second pass.


Pricing

Pay per event:

EventPrice
Actor start (apify-actor-start)$0.005 per run
Result (apify-default-dataset-item)$1.80 / 1,000 listings (FREE / Bronze list price)

Paid Apify plans get Store volume discounts on the result event (Silver → Diamond). Platform compute for this Actor is paid by the developer (User pays platform usage = No). If you enable Apify Proxy in input, proxy usage is billed separately.

Examples at the list price:

  • 50 listings ≈ $0.005 + (50 × $0.0018) = $0.095 in Actor events
  • 1,000 listings ≈ $0.005 + $1.80 = $1.805 in Actor events

Free Apify plan: up to 10 runs of this Actor and 1,000 listings per run. Upgrade to a paid Apify plan for unlimited runs (schema max still applies). Limits set by the Actor developer.


Tips for better Craigslist data

  • Start with a real area slug from the Craigslist site URL (/search/area/{slug}), including non-US markets.
  • Pick the right section or leaf (apa, cta, jjj, sss, …). category=all is housing leaves only, not the whole site.
  • Keep scrapeDetails=true (default) when you need bathrooms, body text, map/门牌, phones in the ad, or reply-popup emails.
  • Raise maxItems above 360 only when you need deeper coverage; sharding fetches more pages.
  • Enable residential proxy if your network path is blocked from sapi.craigslist.org.
  • Prefer smaller scheduled runs (for example posted-today + modest maxItems) over giant one-off dumps.

FAQ

Why am I limited to 10 runs / 1,000 listings on the free plan?

Those limits are set by this Actor's developer for free Apify plan users (not an Apify platform bug). Upgrade to a paid Apify plan for unlimited runs of this Actor. Event pricing (PPE) is separate from these free-tier caps.

Can I scrape Craigslist apartments without an API key?

Yes. This Actor uses public Craigslist search and listing pages. You do not need a Craigslist API key or account login.

Does this scrape Craigslist contact / reply info?

No. The Actor does not call Craigslist /reply endpoints. It only reads public search and detail content.

Why do I sometimes get fewer than maxItems?

Craigslist may simply have fewer matching postings for your area, category, and filters. A valid empty search (NO_MATCH or unknown slug LOCATION_UNRESOLVED) still SUCCEEDED with zero rows. Hard 403/429 blocks fail.

How do I scrape more than 360 Craigslist results?

Set maxItems above 360. The Actor shards across alternate sorts and price buckets because SAPI /full has no true offset pagination.

Can I scrape all Craigslist housing categories at once?

Yes. Set category to all. The Actor splits the maxItems budget fairly across housing leaves. For the rest of Craigslist use section codes (sss for sale, jjj jobs, ggg gigs, bbb services, ccc community) or a leaf such as cta.

Which countries does this cover?

All 707 official area slugs from craigslist.org/about/sites, including the US, Canada, UK, Europe, Asia, Latin America, Oceania, and Africa. The Actor sets cc / lang from the catalog unless you override them.

Is there a Live-view / Standby API?

Yes, but it is metadata only. Standby exposes discovery endpoints (/, /health, /input-example, /openapi.json) and does not scrape Craigslist or return listings. Full scraping still runs as a normal Apify Actor batch run so listings land in the default dataset.


Integrations

  • Apify API / SDK — start runs and fetch the dataset programmatically
  • Schedules — daily or hourly monitors for housing, jobs, or for-sale ads
  • Make, n8n, Zapier — push new listings into Sheets, Slack, or CRM
  • MCP / AI agents — use the Actor as a Craigslist classifieds data tool

Limitations

  • Public listings only; no private or authenticated Craigslist data
  • Reply / contact is best-effort, not guaranteed. The worker GETs {city}.craigslist.org/reply/{area}/{cat}/{id}/popup after the detail page. Session-less fetches often return 404; browser sessions may hit hCaptcha. This Actor does not solve CAPTCHA or send messages. Empty emails / person then include leadAbsences reason 闸门锁
  • Phones are parsed from listing body / tel: only. Most professionally posted apartments have no number on the page. Numeric posting ids are not phones
  • Street / 门牌 is richest on US housing detail JSON-LD (example: 5035 E. Chandler Blvd). Many PH listings and some for-sale ads have locality only
  • Poster name appears on some rooms ads after reply popup (contact name: Elijah in recon); apartment ads often have none
  • Result volume depends on live Craigslist inventory and filters
  • Very large maxItems values take longer because of sharding, detail fetches, and politeness delays

Craigslist scraper · Craigslist classifieds scraper · Craigslist apartments scraper · Craigslist jobs scraper · Craigslist cars scraper · Craigslist rooms for rent scraper · Craigslist API alternative


All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss