Craigslist Scraper - $0.85 per 1,000, No API Key avatar

Craigslist Scraper - $0.85 per 1,000, No API Key

Pricing

Pay per event

Go to Apify Store
Craigslist Scraper - $0.85 per 1,000, No API Key

Craigslist Scraper - $0.85 per 1,000, No API Key

A flat $0.85 per 1,000 listings plus $0.002 per run. Search any Craigslist city and category and get listing id, title, price, neighborhood, posted date, images and the listing URL. No account, no API key, no captcha wrangling. Blocked or empty runs are never charged.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

Craigslist Scraper

Give it a city and a search term. Get back structured Craigslist listings — id, title, price, location, neighborhood, posted date, category, image URLs and the listing URL. Turn on Fetch full posting text and each row also carries the seller's body text and the attribute table.

No API key. No login. No browser.

Why this one

Craigslist's search pages are an empty shell that fills itself in from Craigslist's own JSON API. Most scrapers drive a headless browser at the shell and pay for the compute. This one talks to the JSON API directly with a real browser TLS fingerprint, so it is plain HTTP the whole way.

That has two effects you can measure:

  • 10,000 listings come back in one request. Roughly 7 seconds, 3.4 MB. There is no page-by-page crawl to wait on.
  • No browser means no bandwidth bill. You pay $0.85 per 1,000 listings and nothing else — there is no compute or proxy charge stacked on top.

Input

FieldWhat it does
cityCraigslist subdomain — newyork, sfbay, losangeles, london. Plain names like new york city also resolve. Pass several to search several cities in one run. 707 Craigslist sites across 79 countries are recognised.
querySearch terms. Leave empty to take the whole category.
categoryCategory abbreviation. sss all for sale, hhh housing, jjj jobs, ggg gigs, bbb services, ccc community, cta cars & trucks, eee events. Leaf codes work too — bia bicycles, apa apartments, fuo furniture, zip free stuff.
searchUrlsOr skip the fields above and paste Craigslist search URLs. Filters already in the URL are kept.
maxItemsTotal listings across all searches. Default 100, ceiling 50,000.
fetchDetailsOpen every posting page for body text, attributes, street address and last-updated time.
sortnewest (default) or relevant.
minPrice / maxPricePrice bounds.
postalCode + radiusMilesSearch around a ZIP instead of the whole city.
sellerTypeowner, dealer or anyone.
hasImage, titleOnly, postedTodayThe same switches Craigslist's own filter bar has.
{
"city": ["sfbay"],
"query": "toyota tacoma",
"category": "cta",
"maxItems": 500,
"maxPrice": 25000,
"fetchDetails": true
}

Output

Every row:

listingId, title, price, priceText, currency, url, postedAt, categoryId, categoryAbbr, categoryName, location, neighborhood, subarea, city, cityName, region, country, latitude, longitude, images, imageCount, searchUrl, scrapedAt

With fetchDetails on, five more: description, attributes, attributeTags, updatedAt, address.

{
"listingId": "7951229837",
"title": "21 Speed TREK NAVIGATOR 2.0 Hybrid Bicycle 15 inch frame",
"price": 220,
"priceText": "$220",
"currency": "USD",
"url": "https://www.craigslist.org/view/d/commack-21-speed-trek-navigator-20/pvSPx2jAvzkhXUUURwoxxd",
"postedAt": "2026-08-07T18:12:58.000Z",
"categoryId": 68,
"categoryAbbr": "bik",
"categoryName": "bicycles - by owner",
"location": "Commack/Western Suffolk",
"neighborhood": null,
"subarea": "que",
"city": "newyork",
"cityName": "new york city",
"region": "NY",
"country": "US",
"latitude": 40.843,
"longitude": -73.2799,
"images": ["https://images.craigslist.org/00m0m_kE7opkfWlRt_0jm0ew_600x450.jpg"],
"imageCount": 3,
"searchUrl": "https://newyork.craigslist.org/search/bia?query=trek",
"scrapedAt": "2026-08-07T18:45:21.751Z",
"description": "Selling 21 Speed TREK NAVIGATOR 2.0 Hybrid Bicycle. 26 inch tires, 15 inch frame...",
"attributes": { "bicycle type": "hybrid/comfort", "frame size": "15 inches", "wheel size": "26 in" },
"attributeTags": [],
"updatedAt": "2026-08-07T18:07:58.000Z",
"address": null
}

attributes is whatever Craigslist labelled for that category — condition, odometer, VIN, transmission, title status on cars; rent period, pets cat, pets dog on housing; bicycle type, frame size on bikes. attributeTags holds the unlabelled chips: 1BR / 1Ba, 547ft2, available oct 1.

Pricing

$0.85 per 1,000 listings ($0.00085 each), plus $0.002 each time a run starts. Flat rate — no volume tiers, no plan gates — and you are charged only for listings actually returned.

Listings in the runListing feesAll-in, with the start fee
100$0.085$0.087
1,000$0.85$0.852
10,000$8.50$8.502
100,000$85.00$85.002

Because the start fee is charged once per run rather than per city or per search, batching several cities into one run is cheaper than running them separately. A run that returns no listings costs only the $0.002 start fee. Blocks, bad input and empty searches write a labelled diagnostic row instead of a listing, and diagnostic rows are never charged. fetchDetails adds description, attributes, attributeTags, updatedAt and address to the same row at no extra charge — there is no second event for the detail fetch.

Limits

Read this part before you build on it.

  • Relevance sorting stops at 360 results. That is Craigslist's cap, not ours. sort: "newest" has no such limit and is the default.
  • Craigslist does not sort by price. Its API dropped the option. Sort the dataset yourself.
  • neighborhood is usually null. Craigslist only assigns neighborhoods inside a handful of dense metros — about 7% of New York rows have one. location is populated on effectively every row.
  • One city per search. Craigslist has no nationwide index. Pass a list of cities to cover more ground; each is a separate search.
  • price is null on postings with no price — jobs, gigs, most community posts, and for-sale posts where the seller left it blank.
  • Cross-posts come back as separate rows. A seller who posts the same couch to three subareas creates three postings with three ids, and Craigslist reports them separately. listingId is deduplicated within a run; identical text under different ids is not.
  • fetchDetails costs about one extra second per 6 listings. Six detail pages run at a time. On 10,000 rows that is a long run — set maxItems deliberately.
  • Expired postings. A posting deleted between the search and the detail fetch returns detailError on that row rather than failing the run.
  • The RSS feed is dead. Craigslist answers ?format=rss with HTTP 403 from every address. If you have old tooling built on it, that is why it stopped.

FAQ

Do I need a Craigslist account or API key? No. Everything it reads is public.

Can it scrape all of Craigslist at once? No. Craigslist is organised as ~707 independent city sites with no combined index. You give it cities; it searches each one.

How many listings can I get from one city? One request returns up to 10,000. Past that the scraper walks backwards through posting dates, so a large maxItems keeps going until the search is exhausted. New York's "all for sale" section had 118,618 live postings when this was written.

Does it get the seller's phone number or email? No. Craigslist hides contact details behind a reply relay that requires solving a challenge. This scraper returns what the public posting shows. If a seller typed their number into the description, it will be in description — that is the seller's own doing, not an extraction.

Does it work outside the US? Yes. 79 countries. Non-US sites are much thinner than US ones — London's for-sale section had 2 matches for "bike" while New York had 3,711.

What do I get without fetchDetails? Everything except description, attributes, attributeTags, updatedAt and address. Titles, prices, images, coordinates, dates and URLs all come from the search response, so the cheap mode is not a stub.

Why is imageCount sometimes higher than what I see on the page? It is the count Craigslist reports for the gallery. Sellers occasionally upload duplicates.

Is this affiliated with Craigslist? No. It reads public pages. Check Craigslist's terms and your own local rules before you use the output commercially.

Notes

Built as plain HTTP with impit for a Chrome TLS fingerprint. No Playwright, no residential proxy, no per-GB bandwidth bill.