Craigslist Classifieds Scraper avatar

Craigslist Classifieds Scraper

Pricing

from $0.03 / 1,000 item extracteds

Go to Apify Store
Craigslist Classifieds Scraper

Craigslist Classifieds Scraper

Scrape public Craigslist listings by city, category, keyword, price, and date. Export titles, prices, locations, images, descriptions, and attributes.

Pricing

from $0.03 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

Collect public Craigslist listings from city search pages, category pages, and keyword searches. Use it to monitor local prices, discover leads, compare housing or job supply, and export structured listing data to JSON, CSV, Excel, or your own workflow.

The actor accepts either ready-made Craigslist search URLs or simple city/category/query inputs. It can save lightweight search results only, or open each public listing page to add descriptions, attributes, images, timestamps, and map data when Craigslist exposes them.

What does Craigslist Classifieds Scraper do?

Craigslist Classifieds Scraper turns public Craigslist pages into clean dataset rows. Instead of manually refreshing local search pages, copying titles, and pasting prices into spreadsheets, you can run an automated extraction with a repeatable input.

Typical outputs include listing title, URL, posting ID, price, currency, location, city/site, category, scrape timestamp, and optional detail-mode fields such as description, attributes, images, posted date, updated date, and map coordinates.

Who is it for?

  • ๐Ÿ˜๏ธ Real estate researchers tracking apartment availability, rent ranges, and neighborhood supply.
  • ๐Ÿ›’ Resellers and marketplace teams monitoring local prices for furniture, electronics, vehicles, and collectibles.
  • ๐Ÿ’ผ Lead generation teams collecting public service, gig, and jobs listings for outreach workflows.
  • ๐Ÿ“Š Market analysts comparing classified activity across Craigslist cities and categories.
  • ๐Ÿงฐ Data operations teams feeding local listings into dashboards, databases, alerts, and enrichment pipelines.

Why use it?

Craigslist is local, fragmented, and constantly changing. A saved dataset lets you compare cities, watch price movement, and trigger downstream automations without manually checking dozens of tabs.

This actor is useful when you need:

  • recurring local-market monitoring,
  • structured exports for spreadsheets or BI tools,
  • repeatable query inputs,
  • optional listing details,
  • dataset-ready records with stable field names.

What data can you extract?

FieldDescription
titleListing headline from search or detail page
urlPublic Craigslist listing URL
idNumeric Craigslist posting ID parsed from the URL
priceNumeric price when visible
currencyCurrency code when detected, such as USD
locationLocation text shown on the result card
cityOrSiteCraigslist city/site subdomain, such as sfbay
categoryCategory code inferred from the search URL
postedAtListing posted timestamp when detail mode finds it
updatedAtListing updated timestamp when available
descriptionPublic listing body in detail mode
attributesListing attributes such as condition, make, size, bedrooms, or compensation when present
imageUrlsPublic Craigslist image URLs when present
latitudeLatitude when Craigslist exposes map data
longitudeLongitude when Craigslist exposes map data
sellerContactAvailableWhether a public reply control is present
scrapedAtTimestamp when the item was saved

How much does it cost to scrape Craigslist classifieds?

This actor uses pay-per-event pricing. You pay a small run-start event plus one result event for every dataset item saved. The exact live price is shown on the Apify Store actor page before you run it.

For a first test, use the prefilled input with maxItems set to 10. Increase the limit once the output matches your workflow.

Quick start

  1. Open the actor on Apify.
  2. Keep the prefilled Craigslist search URL or enter your own.
  3. Set maxItems to a small number for the first run.
  4. Enable includeDetails if you need descriptions, attributes, images, and timestamps.
  5. Click Start.
  6. Download results from the default dataset as JSON, CSV, Excel, XML, or RSS.

Input options

You can provide source pages in two ways.

Option 1: Craigslist search URLs

Use startUrls when you already have Craigslist URLs from your browser.

{
"startUrls": [
{ "url": "https://sfbay.craigslist.org/search/sss?query=desk" }
],
"maxItems": 25,
"includeDetails": true
}

Option 2: City, category, and query

Use the guided fields to generate a URL.

{
"cityOrSite": "sfbay",
"category": "sss",
"query": "desk",
"maxItems": 25,
"includeDetails": false
}

Common Craigslist category codes

CodeMeaning
sssall for sale
fuofurniture
apaapartments / housing
jjjjobs
ggggigs
bbbservices
gmsgarage sales
ccccommunity

You can use any public Craigslist category code that works in a normal Craigslist search URL.

Filtering tips

  • Set minPrice and maxPrice for categories where Craigslist supports price filters.
  • Set hasImage to keep searches focused on listings with photos.
  • Use postedWithin to focus on today's posts when freshness matters.
  • Use sort to switch between newest, relevance, and price order where Craigslist supports it.
  • Keep maxItems low for exploratory runs.
  • Use separate runs for different cities if you want clean city-by-city exports.

Output example

{
"title": "Standup desk",
"url": "https://sfbay.craigslist.org/sfc/fuo/d/example/1234567890.html",
"id": "1234567890",
"price": 150,
"currency": "USD",
"location": "san francisco",
"cityOrSite": "sfbay",
"category": "sss",
"postedAt": "2026-06-14T08:12:00-0700",
"updatedAt": "2026-06-14T09:00:00-0700",
"description": "Adjustable standing desk in good condition.",
"attributes": { "condition": "good" },
"imageUrls": ["https://images.craigslist.org/example.jpg"],
"latitude": 37.77,
"longitude": -122.42,
"sellerContactAvailable": true,
"scrapedAt": "2026-06-14T12:00:00.000Z"
}

Search-only mode vs detail mode

Search-only mode is faster and cheaper because it reads the listing cards already visible on search pages. It is best for title, URL, price, and location monitoring.

Detail mode opens each listing page. Use it when you need descriptions, attributes, images, posted timestamps, updated timestamps, or map information. Detail mode makes more requests, so keep limits reasonable.

Integrations

Use this actor with:

  • ๐Ÿ“ˆ Google Sheets or Excel exports for price monitoring.
  • ๐Ÿงฑ Databases such as Postgres, BigQuery, or Airtable.
  • ๐Ÿ”” Alert workflows that notify you when matching listings appear.
  • ๐Ÿงช Enrichment workflows that classify listings by product type, neighborhood, or lead quality.
  • ๐Ÿงฐ Apify API, webhooks, and integrations for scheduled pipelines.

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('<ANNA_APIFY_USERNAME>/craigslist-classifieds-scraper').call({
startUrls: [{ url: 'https://sfbay.craigslist.org/search/sss?query=desk' }],
maxItems: 25,
includeDetails: true,
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('<ANNA_APIFY_USERNAME>/craigslist-classifieds-scraper').call(run_input={
'cityOrSite': 'sfbay',
'category': 'sss',
'query': 'desk',
'maxItems': 25,
})
print(run['defaultDatasetId'])

cURL

curl -X POST "https://api.apify.com/v2/acts/<ANNA_APIFY_USERNAME>~craigslist-classifieds-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"cityOrSite":"sfbay","category":"sss","query":"desk","maxItems":25}'

MCP usage

Connect this actor to Apify MCP at:

https://mcp.apify.com/?tools=<ANNA_APIFY_USERNAME>/craigslist-classifieds-scraper

Claude Code setup:

$claude mcp add apify-craigslist --url "https://mcp.apify.com/?tools=<ANNA_APIFY_USERNAME>/craigslist-classifieds-scraper"

Claude Desktop JSON setup:

{
"mcpServers": {
"apify-craigslist": {
"url": "https://mcp.apify.com/?tools=<ANNA_APIFY_USERNAME>/craigslist-classifieds-scraper"
}
}
}

Example prompts:

  • "Run Craigslist Classifieds Scraper for desks in sfbay and summarize price ranges."
  • "Find apartment listings in a Craigslist city and export the dataset URL."
  • "Monitor furniture listings and tell me which ones mention excellent condition."

Best practices

  • Start with one city and one category.
  • Use maxItems: 10 for the first run.
  • Enable detail mode only when you need full descriptions or images.
  • Schedule recurring runs at a respectful cadence.
  • Save source URLs that encode your exact Craigslist filters.

FAQ

Can I use any Craigslist city?

Yes. Use the city/site subdomain from the public Craigslist URL, such as sfbay, newyork, losangeles, chicago, seattle, or austin.

Does the actor open every listing page?

Only when includeDetails is enabled. Search-only mode is faster; detail mode returns richer descriptions, images, attributes, and timestamps.

Troubleshooting

Why did I get fewer items than requested?

The source page may have fewer public listings for your query, or Craigslist may hide some cards for the selected city/category/filter combination. Broaden the query or remove filters.

Why are some detail fields empty?

Not every listing includes every public field. For example, some posts have no price, no map, no images, or no updated timestamp.

Can I scrape private contact details?

This actor is designed for public listing information. Respect Craigslist terms, privacy expectations, and applicable laws. Do not use scraped data for spam or prohibited outreach.

Legality and responsible use

Craigslist pages can contain user-generated content. You are responsible for using this actor lawfully, respecting the website's terms, and complying with privacy, anti-spam, and data-protection rules. Only collect data you have a legitimate reason to process.

Explore other Apify Store actors by <ANNA_APIFY_USERNAME> for complementary local-market, lead-generation, and monitoring workflows.

Changelog

  • Initial version: search result extraction, optional detail extraction, filters, proxy support, and structured dataset schema.

Support

If a run fails, include the run URL, input, and a short description of what you expected to receive. For best results, include one public Craigslist URL that reproduces the issue.