Craigslist Scraper — Listing Titles, Prices & Locations avatar

Craigslist Scraper — Listing Titles, Prices & Locations

Pricing

from $2.40 / 1,000 results

Go to Apify Store
Craigslist Scraper — Listing Titles, Prices & Locations

Craigslist Scraper — Listing Titles, Prices & Locations

Scrape Craigslist search results in 26 US metros by category and keyword: listing title, asking price, neighborhood and photo URL. About USD 3 per 1,000.

Pricing

from $2.40 / 1,000 results

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Craigslist Scraper reads Craigslist search results for 26 large US metros and returns each listing's title, asking price, neighborhood or town, main photo URL, listing link, posting date and full description, tagged with the city, category and keyword you searched. It is built for resellers, car dealers, rental-market researchers and analysts who track local asking prices, and it costs about USD 3 per 1,000 listings on the FREE tier (USD 2.40 per 1,000 on GOLD).

What data does the Craigslist scraper return?

Each listing is one dataset row:

FieldWhat it contains
titleListing title as shown in search results
priceAsking price formatted as text, for example $19,900, or null when none is given
locationNeighborhood or town from the listing, for example Oakland
imageUrlURL of the first listing photo, or null
categoryThe Craigslist category code you searched, for example cta
cityThe Craigslist site searched, for example sfbay
searchKeywordYour keyword, or (all) when you searched without one
scrapedAtCollection time (ISO 8601)
urlLink to the listing on Craigslist
datePostedWhen the listing was posted (ISO 8601, UTC)
descriptionFull listing text, with line breaks kept

In a cloud run on 2026-10-27 (San Francisco Bay Area, cars and trucks, 20 listings), all 20 rows had every field above filled.

How do I scrape Craigslist listings by city, category and keyword?

Pick a city, list one or more category codes, optionally add keywords, and set the total limit.

InputExampleNotes
citysfbayOne of 26 sites: sfbay, losangeles, newyork, chicago, dallas, houston, miami, seattle, boston, washingtondc, philadelphia, atlanta, phoenix, denver, sandiego, portland, detroit, minneapolis, tampa, sacramento, lasvegas, austin, orlando, nashville, charlotte, sanantonio
categories["cta"]Craigslist category codes, such as sss (all for sale), cta (cars and trucks), apa (apartments), jjj (jobs), bbb (services) or ggg (gigs)
searchKeywords["toyota", "honda"]Optional; each keyword is searched in every category
maxResults1001 to 500 listings in total (default 20)
maxRequestRetries3Retries per page, 0 to 10

Toyota and Honda listings in Dallas cars and trucks:

{
"city": "dallas",
"categories": ["cta"],
"searchKeywords": ["toyota", "honda"],
"maxResults": 100
}

Furniture and appliance listings across all for-sale items in Seattle:

{
"city": "seattle",
"categories": ["sss"],
"searchKeywords": ["sofa", "refrigerator"],
"maxResults": 60
}

The Actor reads the first search results page for every category and keyword pair (Craigslist lists up to about 350 listings there; deeper result pages are not read), opens each listing for its link, date and description, and stops at maxResults. A listing found under two keywords is saved and charged once. To collect more listings, add categories or keywords.

Does it return listing URLs, posting dates or seller contacts?

It returns the listing link, the posting date and the full description: the Actor opens every listing it saves. It never returns seller phone numbers or emails, and it does not click the contact button. Listings that were deleted or expired before they could be opened are skipped without a charge and counted in OUTPUT.

When should I use it, and when not?

Use it when you want a quick snapshot of asking prices and titles for a product, vehicle or rental type in one of the 26 supported metros, for price research or deal spotting.

Use another Actor when:

How do I run it from code?

JavaScript with apify-client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/craigslist-scraper').call({
city: 'chicago',
categories: ['cta'],
searchKeywords: ['tacoma'],
maxResults: 40,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) console.log(item.title, item.price, item.location);

Python with apify-client:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("muhammadafzal/craigslist-scraper").call(run_input={
"city": "austin",
"categories": ["apa"],
"maxResults": 50,
})
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item["title"], item["price"], item["location"])

Use it from an AI assistant

Craigslist Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add the single-tool URL https://mcp.apify.com/?tools=muhammadafzal/craigslist-scraper and ask, for example: "Pull 40 Toyota Tacoma listings from Craigslist Chicago and give me the median asking price." Each listing is charged, so include a limit.

What does the output look like?

Two rows from the 2026-10-27 cloud run (descriptions shortened):

[
{
"title": "2022 Ram 2500 Crew Cab Tradesmen Truck***4x4 Hemi 6.4 liter***",
"price": "$19,800",
"location": "Pleasant Hill",
"datePosted": "2026-10-27T09:30:25.000Z",
"url": "https://www.craigslist.org/view/d/pleasant-hill-2022-ram-2500-crew-cab/opARBnGFdwZb6D61ALQ6my",
"imageUrl": "https://images.craigslist.org/00A0A_bQRfG8pxVzG_0CI0t2_600x450.jpg",
"description": "2022 Ram 2500 Crew cab 4x4 V8 Hemi 6.4 liter in excellent condition inside out. 139k miles, Back up Camera, ...",
"category": "cta",
"city": "sfbay",
"searchKeyword": "(all)",
"scrapedAt": "2026-10-27T12:03:53.005Z"
},
{
"title": "Audi A4 S-Line Quattro 3.0L V6, Clean Title, Well-Maintained",
"price": "$5,000",
"location": "San Jose",
"datePosted": "2026-10-27T09:24:01.000Z",
"url": "https://www.craigslist.org/view/d/san-jose-audi-a4-line-quattro-30l-v6/6DBHv98okkqkxZ6CsSsai4",
"description": "Audi A4 Quattro 3.0L V6 S-Line (B6)\n* Milltek Exhaust\n* H&R Sport Springs\n...",
"category": "cta",
"city": "sfbay",
"searchKeyword": "(all)"
}
]

Pricing: how much does it cost to scrape Craigslist?

The Actor uses pay-per-event pricing, and platform usage is included in the event prices. Each row saved to the default dataset is charged automatically.

EventFREEBRONZESILVERGOLDPLATINUM / DIAMOND
Listing (one dataset row)USD 0.003001USD 0.002925USD 0.00285USD 0.0024USD 0.0024
Actor start (per started GB of allocated memory)USD 0.006251USD 0.006094USD 0.005938USD 0.005USD 0.005

Worked totals on the FREE tier at the default 512 MB memory (one start event):

  • 20 listings: 20 × USD 0.003001 + USD 0.006251 = USD 0.0663
  • 500 listings: 500 × USD 0.003001 + USD 0.006251 = USD 1.5068

A search with no results charges only the start event, and deleted or expired listings are never charged.

Limits and reliability

  • Speed: 20 listings took about 50 seconds on 2026-10-27, including opening each listing.
  • Scope: first results page per category and keyword pair, up to about 350 listings each; deeper result pages, price filters and date filters are not supported.
  • Cities: the 26 sites listed above only.
  • Failed pages are retried up to maxRequestRetries times with a fresh connection. A run where no page loads ends as failed with no listing charges; the run summary in OUTPUT lists every search with its listing count, plus skipped and failed pages.

FAQ

Is there a Craigslist API for listings?

Craigslist offers no public API for reading search results. This Actor reads the public search pages and returns them as JSON, CSV or Excel through Apify.

Can I scrape a city that is not in the list?

No. The city field accepts only the 26 sites shown.

Why did I get fewer listings than maxResults?

Each category and keyword pair covers only Craigslist's first results page, listings found under two keywords are saved once, and deleted or expired listings are skipped. Add categories or keywords to reach a higher limit.

Does it get seller phone numbers or emails?

No. Contact details are not part of Craigslist search results.

How many listings can one run return?

Up to 500 in total, limited to the first results page (about 350 listings) of each category and keyword pair you list.

Can I filter by price?

Not directly. Add specific keywords, then filter the price column after export.

The Actor reads public Craigslist search pages without logging in. Craigslist's terms of use restrict automated collection of its content, so review them and make sure your use is lawful. Listings can contain personal information; do not use the data to contact or profile individuals without a lawful basis. This tool is not affiliated with Craigslist, and this is not legal advice.

Last verified: 2026-10-27