Craigslist Scraper + Listing Change Monitor avatar

Craigslist Scraper + Listing Change Monitor

Pricing

from $0.80 / 1,000 craigslist listings

Go to Apify Store
Craigslist Scraper + Listing Change Monitor

Craigslist Scraper + Listing Change Monitor

Collect rich source-published Craigslist listing data across locations, categories, queries, and direct URLs, or track verified NEW, UPDATED, and ENDED changes.

Pricing

from $0.80 / 1,000 craigslist listings

Rating

0.0

(0)

Developer

Luka

Luka

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Collect current Craigslist listings across multiple locations, categories, search terms, and direct URLs—or run the same scope repeatedly to receive only verified changes.

The Actor returns source-published fields and mechanical normalization. It does not score listings, recommend purchases, infer quality, estimate value, or reinterpret the seller’s text.

Actual Craigslist listing rows from a verified Actor run

Two clear workflows

Get current listings

Use current for a fresh export. Search cards include stable listing ID, URL, title, published price, location text, category provenance, and matching target IDs. Enable Open each listing for full details to add the source description, posting/update timestamps, published attributes, map coordinates, and image URLs to the same result row.

Track new/changed listings

The first run of changes establishes a verified baseline and emits NEW rows for listings in that complete scope. Use the same scope and stateNamespace on repeat runs:

  • NEW — first verified appearance in this scope, including the baseline run.
  • UPDATED — one or more normalized source fields changed.
  • ENDED — the listing was absent from two sequential, comparable, complete scans.

Unchanged listings produce no Dataset row. A capped, blocked, partial, or failed scan cannot emit ENDED and cannot commit monitoring state.

Quick start

{
"workflow": "current",
"locations": ["newyork"],
"categories": ["sss"],
"searchQueries": ["bicycle"],
"maxItems": 25
}

You may also provide startUrls for existing Craigslist search pages and listingUrls for direct listings. Generated searches combine every location, category, and search term, then deduplicate identical targets. The run fails before source traffic if the combination exceeds 50 targets.

Input guide and search controls

Available source filters include price range, owner/dealer, free listings, photos, posted today, Craigslist duplicate bundling, delivery, postal radius, nearby areas, condition codes, bedroom/bathroom ranges, cats/dogs, and sort order. These values are sent as Craigslist search parameters and included in the monitoring scope fingerprint.

Output contract

Every Dataset row declares recordType (listing or change). Change rows also declare changeType, changedFields, before, and after. stableId is based on Craigslist’s opaque current identity or accepted legacy numeric posting ID—not the search position or URL slug.

The OUTPUT Key-Value Store record is authoritative for coverage, target receipts, delivery count, state commit, resource guards, route, billing mode, and limitations. Empty searches are reported as EMPTY_CONFIRMED; they are never represented by fake Dataset rows.

Coverage and reliability

Every run reports one explicit coverage state. COMPLETE means the bounded request finished. CAPPED means a declared row, request, byte, runtime, or spending guard stopped additional work after preserving any trustworthy prefix allowed by the selected workflow. BLOCKED and FAILED never advance monitoring state. EMPTY_CONFIRMED is a positive source-backed empty result, not a placeholder row. A changes run commits its new snapshot only after its delivered events are confirmed.

API and automation

Use the same JSON input with the Apify API, client libraries, webhooks, or your own scheduled workflow. For monitoring, keep the same stateNamespace and search scope on later runs. The Dataset contains delivered rows; the OUTPUT Key-Value Store record contains authoritative coverage, target receipts, billing status, resource guards, and state status. This Actor does not create Tasks or schedules for you.

Safety and boundaries

The Actor uses public listing/search pages only. It does not visit reply, email, CAPTCHA, account, login, or contact-deanonymization routes. It does not create an email field. It returns source fields and mechanical normalization without adding an opinion about the listing.

Pricing status

Pricing is not active in this private build. Any future event pricing requires a separate owner decision and an exact read-back before it can be presented as active.

FAQ and support

Why can a current run be CAPPED and still return rows? Current export can safely return the trustworthy prefix up to maxItems. Changes mode is stricter and will not commit state or emit ENDED from an incomplete scan.

Are descriptions and images always present? No. Enable Open each listing for full details to request fields available on the listing page. A field remains null or empty when Craigslist does not publish it or the bounded detail request is unavailable.

Does this Actor evaluate a deal or seller? No. It does not score, rank, recommend, infer seller quality, or estimate market value. Review the source listing yourself.