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, 3:55 AM
$0.0015
per listing
Up to 100 per call. Only pay for results returned; failed calls are refunded.
| Window | Uptime | Success rate | p50 | p95 | Calls |
|---|---|---|---|---|---|
| 24h | — | — | — | — | 0 |
| 7d | — | — | — | — | 0 |
| 30d | — | — | — | — | 0 |
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://api.usesourcelane.com/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
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Search: browse a Craigslist city + category with optional keyword and filters. URLs: paste listing links and get their full details. |
city | string | optional | Craigslist 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. |
category | string | optional | The Craigslist section to search. For any other category use the 'Custom category code' field below, which overrides this choice. |
categoryCode | string | optional | Any 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. |
query | string | optional | Search terms, exactly as you would type them into the Craigslist search box. Leave empty to list everything in the category. |
minPrice | integer | optional | Only return listings priced at or above this amount (in the city's local currency). |
maxPrice | integer | optional | Only return listings priced at or below this amount (in the city's local currency). |
postedToday | boolean | optional | Only return listings posted within the last 24 hours. |
hasImage | boolean | optional | Only return listings that include at least one photo. |
sort | string | optional | Order in which results are returned; matters when Max items cuts the list short. |
maxItems | integer | optional | Maximum 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. |
fetchDetails | boolean | optional | Open 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. |
urls | array | optional | Craigslist 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
| Field | Type | Description |
|---|---|---|
listingId | string | Listing Id |
url | string | Url |
title | string | Title |
price | null | Price |
currency | null | Currency |
city | string | City |
category | string | Category |
categoryCode | string | Category Code |
postedAt | string | Posted At |
updatedAt | null | Updated At |
location | string | Location |
latitude | number | Latitude |
longitude | number | — |
body | string | — |
attributes | object | — |
imageUrls | array | — |
imageCount | integer | — |
hasImage | boolean | — |
replyAvailable | boolean | — |
query | null | — |
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.
Adds the Sourcelane MCP server with your key as a header.
claude mcp add --transport http sourcelane https://api.usesourcelane.com/mcp \
--header "Authorization: Bearer sl_live_your_agent_key"Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.
{
"mcpServers": {
"sourcelane": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.usesourcelane.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer sl_live_your_agent_key"
}
}
}
}Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).
{
"mcpServers": {
"sourcelane": {
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer sl_live_your_agent_key"
}
}
}
}Save as .vscode/mcp.json. VS Code prompts for your key once.
{
"servers": {
"sourcelane": {
"type": "http",
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer ${input:sourcelane-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "sourcelane-key",
"description": "Sourcelane agent key",
"password": true
}
]
}Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.
https://usesourcelane.com/openapi.jsonOne POST. Pass maxResults to cap cost.
curl -X POST https://api.usesourcelane.com/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}'Wrap the REST call as a tool, or point an MCP client at the endpoint.
import requests
res = requests.post(
"https://api.usesourcelane.com/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"])—
0 reviews
Leave a review
Loading reviews…