Craigslist Listings Scraper: Every Listing, Counted avatar

Craigslist Listings Scraper: Every Listing, Counted

Pricing

from $0.70 / 1,000 listings

Go to Apify Store
Craigslist Listings Scraper: Every Listing, Counted

Craigslist Listings Scraper: Every Listing, Counted

Every listing a Craigslist search shows, up to 10,000, checked against Craigslist's own count. $1 per 1,000 listings. Any city, any category, optional descriptions.

Pricing

from $0.70 / 1,000 listings

Rating

0.0

(0)

Developer

Luzi

Luzi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Get every listing a Craigslist search shows, up to 10,000 a search, checked against Craigslist's own count for that search: title, price, place and map point, pictures, date, category, and what the listing type adds (bedrooms and floor area, pay and company, odometer, event dates). Any Craigslist city, with prices in its own currency. Turn on descriptions to add each listing's full text, its attributes, and any phone numbers and emails written in it. One row per listing. No Craigslist account needed.

Tested daily. Latest check: 500 "bike" listings in the SF bay area; 5,123 of 5,123 listings from four whole searches in the US, the UK, Canada and Australia, matching Craigslist's counts.

What does this Actor do?

You give it Craigslist cities and a category, with search words if you want them, or links to Craigslist searches. For each search it reads the whole result list Craigslist shows and saves one row per listing, until it reaches your limit or the end of the list. The run's final status tells you whether every listing was read: "Saved 214 listings from 1 search. That is every listing the site lists for the search (214 of 214)."

Each listing comes with:

  • its title, link, the date it was posted, and its position in the search
  • the price as a number and as shown ("$1,100", "£280"), and the city's currency
  • the category, the city, the sub-area and the place the poster gave, with the neighborhood and a map point
  • every picture's link
  • for housing: bedrooms and floor area, and open-house dates
  • for jobs and gigs: pay, company and job title
  • for cars and motorcycles: the odometer reading
  • for events: the start and end dates, or every date it runs
  • the search it was found in, and how many listings Craigslist counted for it

With Include descriptions and attributes on, each listing also gets:

  • the full description, as text
  • its attributes: make, model, year, odometer, fuel, transmission, bedrooms, bathrooms, pets, laundry, parking, pay, employment type, condition and the rest, each with the value Craigslist's search filters use
  • phone numbers and emails written in the description
  • whether Craigslist flags the listing as having contact details
  • the street address, when the poster gave one
  • when the listing was first created and last updated
  • for a car with a VIN: the decoded vehicle details (make, model, year, engine, body and the rest), and the earlier listing it reposts

Why use it?

  • Know you have the whole search. For a search of up to 10,000 listings the run checks what it read against Craigslist's own count, so a short read is never silent.
  • Fast. Four whole searches, 5,123 listings, in under two and a half minutes without descriptions.
  • Any Craigslist city. Give a city by the name in its address, with prices in its own currency. Measured in the US, the UK, Canada and Australia.
  • Use the data anywhere. Download as JSON, CSV or Excel, or send it to your own tools through Apify's API and integrations.

How to use it

  1. Type one or more Cities (the name in the city's Craigslist address: sfbay, newyork, london), pick a Category, and add Search words if you want them. Or paste Search links, or both.
  2. Optionally, set a Price range, Posted today, Has pictures, Search titles only, Sort by, Max listings per search, and Include descriptions and attributes.
  3. Click Start. When the run ends, open the Output tab to view the listings or download them.

Run it with no input to see a sample: up to 500 "bike" listings in the SF bay area, charged as usual.

A Craigslist search on a city's site, such as https://sfbay.craigslist.org/search/sss?query=bike or https://sfbay.craigslist.org/search/sfc/apa?min_price=2000&max_bedrooms=2, with every filter it carries (price, bedrooms, make and model, odometer, distance from a postcode, and the rest). The all-cities form https://www.craigslist.org/search/area/sfbay?cat=apa works too. A single listing's link, or another site, stops the run before anything is read, naming the link.

Input

FieldWhat it doesDefault
Cities (cities)Craigslist cities by the name in their address, one search each—
Category (category)The section searched in each citysss
Search words (searchQueries)Words to search for, one search per word in each city—
Search links (startUrls)Craigslist search links, with their own filters—
Price from / to (minPrice, maxPrice)Only listings priced in this range, in the city's currency—
Posted today (postedToday)Only listings posted todayoff
Has pictures (hasImages)Only listings with a pictureoff
Search titles only (searchTitlesOnly)Match the search words in titles onlyoff
Sort by (sortBy)default, newest, oldest, relevance, priceAsc, priceDescdefault
Max listings per search (maxListingsPerSearch)Stop each search after this many listings, 1 to 10,0001000
Include descriptions and attributes (includeDetails)Also read each listing's description, attributes and contact detailsoff
Include nearby cities (includeNearby)Also save the listings Craigslist adds from nearby citiesoff

Give at least one city or one link. A city with no search words gets every listing in the category. Example input:

{
"cities": ["sfbay", "losangeles"],
"category": "cta",
"searchQueries": ["tacoma"],
"maxPrice": 20000,
"sortBy": "newest",
"maxListingsPerSearch": 2000,
"includeDetails": true
}

Output

One row per listing. An example, with made-up values:

{
"posting_id": "7980000001",
"uuid": "aB3dE5fG7hJ9kL1mN3pQ5r",
"url": "https://www.craigslist.org/view/d/san-francisco-road-bike/aB3dE5fG7hJ9kL1mN3pQ5r",
"title": "Road bike, 56 cm, Shimano 105",
"posted_at": "2026-10-21T17:04:12.000Z",
"price": 650,
"price_text": "$650",
"currency": "USD",
"category": "bik",
"category_name": "bicycles - by owner",
"area": "sfbay",
"area_name": "SF bay area",
"area_country": "US",
"subarea": "sfc",
"subarea_name": "city of san francisco",
"location": "inner sunset / UCSF",
"neighborhood": "inner sunset / UCSF",
"latitude": 37.7551,
"longitude": -122.4657,
"image_urls": ["https://images.craigslist.org/00a0a_madeUpPicture_600x450.jpg"],
"image_count": 1,
"position": 1,
"details_read": true,
"description": "Light road bike, new tires.\nPick up only.",
"attributes": [
{ "key": "condition", "label": "condition", "value": "excellent", "filter_value": "30" },
{ "key": "bicycle_frame_size", "label": "frame size", "value": "56 cm", "filter_value": null }
],
"phone_numbers": [],
"emails": [],
"has_contact_info": true,
"created_at": "2026-09-30T08:12:00.000Z",
"updated_at": "2026-10-21T17:04:12.000Z",
"search_url": "https://sfbay.craigslist.org/search/sss?query=road+bike",
"search_area": "sfbay",
"search_path": "sss",
"search_query": "road bike",
"search_total": 214,
"search_listed": 214
}

Every field:

FieldWhat it holds
posting_idCraigslist's id for the listing
uuidCraigslist's other id for the listing, used in its link
urlThe listing on Craigslist
titleThe title
posted_atWhen it was posted, or last renewed
priceThe price as a number. Empty when the listing shows none
price_textThe price as Craigslist shows it ("$1,100")
currencyThe city's currency (USD, GBP, CAD...)
monthly_paymentThe monthly payment, when a dealer shows one
categoryCraigslist's code for the listing's category (bik, apa, cto)
category_idIts id
category_nameIts name ("bicycles - by owner")
sectionThe section ("for sale", "housing", "jobs"), with descriptions on
areaThe city's Craigslist site (sfbay)
area_idCraigslist's id for the city
area_nameThe city's name ("SF bay area")
area_countryThe city's country code
subareaThe sub-area's code (sfc), in cities that have them
subarea_nameThe sub-area's name ("city of san francisco"), with descriptions on
locationThe place the poster gave
neighborhoodThe neighborhood, when Craigslist knows it
latitudeThe map point's latitude
longitudeThe map point's longitude
image_urlsEvery picture's link
image_countHow many pictures
bedroomsBedrooms, for housing
floor_areaFloor area, for housing
floor_area_unitft (square feet) or m (square metres)
salaryPay, for jobs and gigs
companyThe hiring company, for jobs
job_titleThe job title, for jobs
odometerThe odometer, for cars and motorcycles
odometer_unitmi or km
event_start_dateThe first day, for events
event_end_dateThe last day, for events
event_datesEvery day it runs, for events with separate dates
open_house_datesOpen-house days, for housing
duplicate_groupThe same number on listings Craigslist sees as repeats of one another
positionWhere the listing stood in the search's list
is_nearbytrue for a listing Craigslist added from a nearby city (only with Include nearby cities on)
details_readWith descriptions on: false when the listing was taken down while the run read it. Empty with them off
descriptionThe full description, as text (descriptions on)
attributesThe listing's attributes: key, label, value and the value the search filters use (descriptions on)
noticesCraigslist's notices on the listing (descriptions on)
phone_numbersPhone numbers written in the description (descriptions on)
emailsEmails written in the description (descriptions on)
has_contact_infoCraigslist's own flag that the listing has contact details (descriptions on)
street_addressThe street address, when the poster gave one (descriptions on)
display_addressThe address as Craigslist shows it, when given (descriptions on)
location_typeHow exact the map point is, as Craigslist marks it (descriptions on)
created_atWhen the listing was first created (descriptions on)
updated_atWhen it was last updated (descriptions on)
see_my_othertrue when the poster links their other listings (descriptions on)
repost_ofThe id of the earlier listing this one reposts, when Craigslist links them (descriptions on)
vin_dataFor a car with a VIN: the decoded vehicle details (section, name, value) (descriptions on)
search_urlThe search on Craigslist
search_areaThe city searched
search_pathThe category searched, with its sub-area
search_queryThe search words
search_totalHow many listings Craigslist counts for the search
search_listedHow many of them Craigslist lists (at most 10,000), not counting nearby cities

Not included: the poster's reply email and phone behind Craigslist's reply button (Craigslist shows them only through its reply form), and listings Craigslist lists past the first 10,000 of a search.

How much does it cost?

No surcharges and no paid options; an item that fails is not charged.

You pay for what you get:

  • $1 per 1,000 listings ($0.001 a listing), with or without descriptions. Each listing is charged once per run, even when two of your searches list it.
  • No start fee, and nothing per search.

So a search that lists 400 listings costs $0.40. If you set a maximum cost for a run, the Actor stops when it reaches it and keeps every listing saved so far.

How long does a run take?

About 500 listings in 20 to 40 seconds, and 5,123 listings from four searches in about two and a half minutes. With descriptions on, each listing takes longer: about 1,200 listings in under five minutes.

Good to know

  • At most 10,000 listings per search. That is what Craigslist lists for one search. For more, split it: sub-areas, categories, price ranges, or "Posted today" every day. A search of more than 10,000 listings is read to Craigslist's limit and is not checked against the count.
  • Craigslist decides what matches. The Actor returns what Craigslist lists for the search, in Craigslist's order.
  • Nearby cities. When a search has few listings, Craigslist adds listings from nearby cities below them. They are left out unless you turn on Include nearby cities; the count check covers the city's own listings either way.
  • Counts move. A busy search gains and loses listings while it is read, so a search can come back a listing or two short of its count. The final status says so, by search.
  • One listing, one row. A listing found again in the same run, under another search, is saved and charged once.
  • Map points are approximate. Craigslist places a listing near, not at, the address.
  • A search that cannot be read, such as a city Craigslist does not have, is reported in the run's status; the other searches carry on.
  • Running it daily? Remove repeats by posting_id.

More Actors from us

Use it from an AI agent or the API

One call starts a run and returns its items (Apify waits up to 300 seconds; for a longer run, start it with POST /v2/acts/…/runs and read its dataset):

POST https://api.apify.com/v2/acts/luzivanlt~craigslist-listings-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>

With the sample input as its JSON body:

{
"cities": ["sfbay"],
"category": "sss",
"searchQueries": ["bike"],
"postedToday": false,
"hasImages": false,
"searchTitlesOnly": false,
"sortBy": "default",
"maxListingsPerSearch": 500,
"includeDetails": false,
"includeNearby": false
}

Its inputs, in the order of the input form:

InputWhat it takesDefault
cities (Cities)Craigslist cities to search, by the name in their address: "sfbay" for sfbay.craigslist.org, "newyork", "london", "toronto".—
category (Category)Which Craigslist section the cities are searched in."sss"
searchQueries (Search words)Words to search for, one search per word in every city above (e.g. "road bike").—
startUrls (Search links)Links to Craigslist searches, copied from your browser, e.g. https://sfbay.craigslist.org/search/sfc/apa?min_price=2000&max_bedrooms=2.—
minPrice (Price from)Only listings priced at least this, in each city's own currency (dollars, pounds, euros...), for the cities above.—
maxPrice (Price to)Only listings priced at most this, in each city's own currency (dollars, pounds, euros...), for the cities above.—
postedToday (Posted today)Only listings posted today, for the cities above.false
hasImages (Has pictures)Only listings with at least one picture, for the cities above.false
searchTitlesOnly (Search titles only)Match the search words in listing titles only, not in their descriptions, for fewer and closer matches.false
sortBy (Sort by)The order Craigslist lists the listings in."default"
maxListingsPerSearch (Max listings per search)Stop each search after this many listings, from 1 to 10,000.1000
includeDetails (Include descriptions and attributes)Also read each listing's own page: the full description, its attributes (make, model, year, odometer, bedrooms, bathrooms, pay, condition and the rest), phone numbers and emails written in the description, its address when given, and when it was created and updated.false
includeNearby (Include nearby cities)Also save the listings Craigslist adds from nearby cities when a search has few of its own (shown on Craigslist under "more from nearby areas").false

Apify's MCP server, https://mcp.apify.com, lists it as luzivanlt/craigslist-listings-scraper. To give an AI agent this Actor as a tool, add the server to the agent's MCP config:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=luzivanlt/craigslist-listings-scraper"
}
}
}

The client signs in with OAuth, or add "headers": { "Authorization": "Bearer <APIFY_TOKEN>" }.

Charged per listing delivered; the sample input above costs at most $1.00.

FAQ

Do I need a Craigslist account? No. The Actor reads what anyone can see on Craigslist without signing in.

Which cities work? Craigslist city sites, by the name in the site's address: sfbay for sfbay.craigslist.org, newyork, london, toronto, sydney. Measured in the US, the UK, Canada and Australia.

Can I run it from my own code, on a schedule, or with other apps? Yes. Like any Apify Actor, you can start it through the Apify API, run it on a schedule, and connect it to other apps with Apify's integrations and webhooks.

This Actor reads only public listings. A listing can carry a person's name, phone number or email; treat those as personal data. Check Craigslist's terms and the laws that apply to you (such as the GDPR or the CCPA) before you use the data. If you are unsure, ask a lawyer.

Support

Found a problem or missing a feature? Open an issue on the Issues tab and include the run's link.


This Actor is not affiliated with, endorsed by or sponsored by Craigslist.