Sourcelane

Craigslist Listings Scraper

E-commerce & Marketplaces

Operated by Sourcelane✓ verified

A web-scraping connector that extracts Craigslist classified listings across cities and categories (cars & trucks, housing, jobs, gigs, services, for sale, free items, etc.) using keyword and filter-based search or by scraping specific listing URLs; it returns per-listing records with identifiers and metadata (headline and permalink), numeric price and currency, site/city and category metadata, timestamps, textual location and map coordinates, full listing description as clean text, structured attribute sets for vehicles/housing/jobs (e.g., odometer, VIN, year/make/model; bedrooms, bathrooms, square footage, availability dates; compensation, employment type), photo URLs and image counts, and reply/availability status. The connector supports filters including keyword search, price ranges, posted-today and has-photo, sorting by relevance/newest/price, option for lightweight search-only results or full-detail scraping that opens each listing to parse attributes, and a mode to process lists of explicit listing URLs.

Verified Sep 28, 12:10 AM

$0.0015

per listing

Up to 100 per call. Only pay for results returned; failed calls are refunded.

What people use it for

Trust & reliability

7d uptime trend
WindowUptimeSuccess ratep50p95Calls
24h————0
7d————0
30d————0

Calling contract

Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.

Call it via Sourcelane

curl -X POST https://cool-puffin-608.convex.site/v1/call \
  -H "Authorization: Bearer sl_live_your_agent_key" \
  -H "Content-Type: application/json" \
  -d '{"listing":"craigslist-listings-scraper","params":{"city":"sfbay","maxItems":5},"maxResults":10}'

Request params

FieldTypeRequiredDescription
modestringoptionalSearch: browse a Craigslist city + category with optional keyword and filters. URLs: paste listing links and get their full details.
citystringoptionalCraigslist site name - the subdomain in the URL, e.g. 'sfbay', 'newyork', 'losangeles', 'chicago', 'toronto', 'london'. A full Craigslist URL is accepted too. Required in Search mode.
categorystringoptionalThe Craigslist section to search. For any other category use the 'Custom category code' field below, which overrides this choice.
categoryCodestringoptionalAny Craigslist category code as it appears in a search URL, e.g. 'cto' (cars by owner), 'boo' (boats), 'pta' (auto parts), 'sof' (software jobs), 'vga' (video gaming). Overrides the Category dropdown when set.
querystringoptionalSearch terms, exactly as you would type them into the Craigslist search box. Leave empty to list everything in the category.
minPriceintegeroptionalOnly return listings priced at or above this amount (in the city's local currency).
maxPriceintegeroptionalOnly return listings priced at or below this amount (in the city's local currency).
postedTodaybooleanoptionalOnly return listings posted within the last 24 hours.
hasImagebooleanoptionalOnly return listings that include at least one photo.
sortstringoptionalOrder in which results are returned; matters when Max items cuts the list short.
maxItemsintegeroptionalMaximum number of listings to return in Search mode. 0 = every matching listing (up to the site's 10,000-result limit). Capped at 100 per call.
fetchDetailsbooleanoptionalOpen every listing page to capture the full description, attributes, all photo URLs, address and posting dates. Turn off for a faster, cheaper title/price/location-only crawl.
urlsarrayoptionalCraigslist listing links to scrape in URLs mode, one per line. Both classic (https://sfbay.craigslist.org/sby/cto/d/slug/1234567890.html) and new (https://www.craigslist.org/view/d/slug/key) link formats work.

Each result contains

FieldTypeDescription
listingIdstringListing Id
urlstringUrl
titlestringTitle
pricenullPrice
currencynullCurrency
citystringCity
categorystringCategory
categoryCodestringCategory Code
postedAtstringPosted At
updatedAtnullUpdated At
locationstringLocation
latitudenumberLatitude
longitudenumber—
bodystring—
attributesobject—
imageUrlsarray—
imageCountinteger—
hasImageboolean—
replyAvailableboolean—
querynull—

Use Craigslist Listings Scraper from Claude, ChatGPT or Cursor

Pick your tool and connect in under a minute. Then just ask — for example: “Track the price of these 20 grocery items at Woolworths and Coles every week.”

Connect Claude

Web, desktop and mobile. Paste one URL.

  1. 1Copy your personal connector URL
  2. 2In Claude open Settings → Connectors → Add custom connector
  3. 3Paste the URL and click Add — done
Manual setup (config files, REST, Python) +

Claude Code

Adds the Sourcelane MCP server with your key as a header.

terminal
claude mcp add --transport http sourcelane https://cool-puffin-608.convex.site/mcp \
  --header "Authorization: Bearer sl_live_your_agent_key"

Claude Desktop (config file)

Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.

claude_desktop_config.json
{
  "mcpServers": {
    "sourcelane": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://cool-puffin-608.convex.site/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer sl_live_your_agent_key"
      }
    }
  }
}

Cursor & Windsurf

Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).

mcp.json
{
  "mcpServers": {
    "sourcelane": {
      "url": "https://cool-puffin-608.convex.site/mcp",
      "headers": {
        "Authorization": "Bearer sl_live_your_agent_key"
      }
    }
  }
}

VS Code

Save as .vscode/mcp.json. VS Code prompts for your key once.

.vscode/mcp.json
{
  "servers": {
    "sourcelane": {
      "type": "http",
      "url": "https://cool-puffin-608.convex.site/mcp",
      "headers": {
        "Authorization": "Bearer ${input:sourcelane-key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "sourcelane-key",
      "description": "Sourcelane agent key",
      "password": true
    }
  ]
}

ChatGPT Custom GPT (Actions)

Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.

OpenAPI schema URL
https://sourcelane-amber.vercel.app/openapi.json

REST

One POST. Pass maxResults to cap cost.

curl
curl -X POST https://cool-puffin-608.convex.site/v1/call \
  -H "Authorization: Bearer sl_live_your_agent_key" \
  -H "Content-Type: application/json" \
  -d '{"listing":"craigslist-listings-scraper","params":{"city":"sfbay","maxItems":5},"maxResults":10}'

Python, LangChain, CrewAI, OpenAI Agents SDK…

Wrap the REST call as a tool, or point an MCP client at the endpoint.

python
import requests

res = requests.post(
    "https://cool-puffin-608.convex.site/v1/call",
    headers={"Authorization": "Bearer sl_live_your_agent_key"},
    json={
        "listing": "craigslist-listings-scraper",
        "params": {"city":"sfbay","maxItems":5},
        "maxResults": 10,
    },
    timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])

Reviews

—

0 reviews

5
0
4
0
3
0
2
0
1
0

Leave a review

Loading reviews…