# Craigslist API

> Craigslist returns local classified listings and public listing details as a workflow and API.

Craigslist (CL) Search listings returns matching public listings using a required area and search query, with optional category and price filters. Get listing returns public details from a required Craigslist listing link, including its description, price, photos, and attributes when available.

- Page: https://fous.com/tools/craigslist
- Handle: `@craigslist`
- Category: [Commerce](https://fous.com/tools/category/commerce)
- Source website: https://craigslist.org
- Last verified: Sep 29, 2026

## Methods

### Get listing

Operation `get_listing`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get the full public details of a Craigslist listing from its link. Deleted or expired listings are not returned; hidden contact details are not included.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `listing` | string | yes | `"https://www.craigslist.org/view/d/san-francisco-845-california-stunning/duah7T3y3m5Sb2mVDvHyd8"` | Link to the Craigslist listing, for example https://sfbay.craigslist.org/sfc/bik/d/san-francisco-kids-bike-accessories/7942706789.html. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "listing"
  ],
  "properties": {
    "listing": {
      "type": "string",
      "description": "Link to the Craigslist listing, for example https://sfbay.craigslist.org/sfc/bik/d/san-francisco-kids-bike-accessories/7942706789.html.",
      "examples": [
        "https://www.craigslist.org/view/d/san-francisco-845-california-stunning/duah7T3y3m5Sb2mVDvHyd8",
        "https://sfbay.craigslist.org/sfc/bik/d/san-francisco-kids-bike-accessories/7942706789.html",
        "https://www.craigslist.org/view/d/san-francisco-1976-schwin-womens/wquxFQqhqWrSmzYKVbFunx"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "listing": "https://www.craigslist.org/view/d/san-francisco-845-california-stunning/duah7T3y3m5Sb2mVDvHyd8"
    },
    {
      "listing": "https://sfbay.craigslist.org/sfc/bik/d/san-francisco-kids-bike-accessories/7942706789.html"
    },
    {
      "listing": "https://www.craigslist.org/view/d/san-francisco-1976-schwin-womens/wquxFQqhqWrSmzYKVbFunx"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `price` | number or null | `3940` | Listed price, or null if none. |
| `title` | string | `"845 California #206 - Stunning Studio - WD in Unit - Fully Renovated"` | Listing title. |
| `currency` | string or null | `"USD"` | Three-letter currency code, or null if no currency is shown. |
| `map_link` | string or null | `"https://www.google.com/maps/search/37.792146,-122.408325"` | Map location link when a map is shown. |
| `city_area` | string or null | `"san francisco"` | Local Craigslist city or area shown in the listing navigation, when available. |
| `attributes` | array |  | Public listing characteristics. |
| `attributes[].name` | string | `"bedrooms"` |  |
| `attributes[].value` | string | `"0"` |  |
| `posting_id` | string or null | `"7974681024"` | Craigslist posting ID. |
| `description` | string | `"I bought it from a friend in need who said it was his mothers.  Lightly ridden, and need of new tires.   Will send phot` | Full publicly displayed listing description as plain text. |
| `photo_links` | array |  | Full-sized listing photo links. |
| `posted_date` | string or null | `"2026-09-28"` | Date the listing was posted. |
| `listing_link` | string | `"https://www.craigslist.org/view/d/san-francisco-845-california-stunning/duah7T3y3m5Sb2mVDvHyd8"` | Public listing page link. |
| `updated_date` | string or null | `"2026-09-28"` | Date the listing was last updated, when shown. |
| `neighbourhood` | string or null | `"nob hill"` | Neighbourhood shown with the listing title, when available. |

**Example input**

```json
{
  "listing": "https://www.craigslist.org/view/d/san-francisco-845-california-stunning/duah7T3y3m5Sb2mVDvHyd8"
}
```

**Example output**

```json
{
  "price": 3940,
  "title": "845 California #206 - Stunning Studio - WD in Unit - Fully Renovated",
  "currency": "USD",
  "map_link": "https://www.google.com/maps/search/37.792146,-122.408325",
  "city_area": "san francisco",
  "attributes": [
    {
      "name": "bedrooms",
      "value": "0"
    },
    {
      "name": "bathrooms",
      "value": "1"
    },
    {
      "name": "availability",
      "value": "available now"
    }
  ],
  "posting_id": "7974681024",
  "description": "845 California Street Unit #206 - San Francisco, CA - Brick and Timber\n\nPlease Enjoy a 3D Virtual Tour Available Here - https://my.matterport.com/show/?m=6SJAFSBqikx\n\nFOR A QUICKER RESPONSE PLEASE CAL…",
  "photo_links": [],
  "posted_date": "2026-09-28",
  "listing_link": "https://www.craigslist.org/view/d/san-francisco-845-california-stunning/duah7T3y3m5Sb2mVDvHyd8",
  "updated_date": null,
  "neighbourhood": "nob hill"
}
```

### Search listings

Operation `search_listings`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Search public Craigslist listings in a city or area, newest first by Craigslist search order. Renewed listings may have older original posting dates.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `area` | string | yes | `"Chicago"` | Craigslist city or area, such as San Francisco Bay Area or Chicago. |
| `query` | string | yes | `"sofa"` | Words to search for, such as road bike. |
| `category` | string | no | `"jobs"` | Listing category, such as for_sale or housing. |
| `max_price` | number or null | no | `500` | Highest price in local currency, such as 500. Leave empty for no maximum. |
| `min_price` | number or null | no | `100` | Lowest price in local currency, such as 100. Leave empty for no minimum. |
| `max_results` | integer | no | `5` | Most listings to return, such as 25. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query",
    "area"
  ],
  "properties": {
    "area": {
      "type": "string",
      "minLength": 1,
      "description": "Craigslist city or area, such as San Francisco Bay Area or Chicago.",
      "examples": [
        "Chicago",
        "San Francisco Bay Area"
      ]
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Words to search for, such as road bike.",
      "examples": [
        "sofa",
        "road bike",
        "dog walker"
      ]
    },
    "category": {
      "enum": [
        "for_sale",
        "housing",
        "jobs",
        "services",
        "cars_and_trucks",
        "gigs"
      ],
      "type": "string",
      "default": "for_sale",
      "description": "Listing category, such as for_sale or housing.",
      "examples": [
        "jobs"
      ]
    },
    "max_price": {
      "type": [
        "number",
        "null"
      ],
      "default": null,
      "minimum": 0,
      "description": "Highest price in local currency, such as 500. Leave empty for no maximum.",
      "examples": [
        500
      ]
    },
    "min_price": {
      "type": [
        "number",
        "null"
      ],
      "default": null,
      "minimum": 0,
      "description": "Lowest price in local currency, such as 100. Leave empty for no minimum.",
      "examples": [
        100
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "minimum": 1,
      "description": "Most listings to return, such as 25.",
      "x-fous-developer": true,
      "examples": [
        5
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "area": "Chicago",
      "query": "sofa",
      "max_price": 500,
      "min_price": 100,
      "max_results": 5
    },
    {
      "area": "San Francisco Bay Area",
      "query": "road bike"
    },
    {
      "area": "Chicago",
      "query": "dog walker",
      "category": "jobs",
      "max_results": 5
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `listings` | array |  | Matching listings in Craigslist newest-first search order. |
| `listings[].price` | number or null | `100` |  |
| `listings[].title` | string | `"###  TALL LAMP BY THE SOFA  ###"` |  |
| `listings[].photo_link` | string or null | `"https://images.craigslist.org/01616_Uhbdoz5Ozh_0t20CI_600x450.jpg"` |  |
| `listings[].posting_id` | string or null | `"7961701542"` |  |
| `listings[].posted_date` | string or null | `"2026-09-06"` | Original date the listing was posted, in YYYY-MM-DD format. |
| `listings[].listing_link` | string | `"https://www.craigslist.org/view/d/western-springs-tall-lamp-by-the-sofa/14wn1PfuJjCEEX84bDRgnn"` |  |
| `listings[].currency_code` | string or null | `"USD"` |  |
| `listings[].neighbourhood` | string or null | `"LAGRANGE"` |  |
| `area_used` | string | `"chicago"` | Craigslist area searched. |

**Example input**

```json
{
  "area": "Chicago",
  "query": "sofa",
  "max_price": 500,
  "min_price": 100,
  "max_results": 5
}
```

**Example output**

```json
{
  "listings": [
    {
      "price": 100,
      "title": "###  TALL LAMP BY THE SOFA  ###",
      "photo_link": "https://images.craigslist.org/01616_Uhbdoz5Ozh_0t20CI_600x450.jpg",
      "posting_id": "7961701542",
      "posted_date": "2026-09-06",
      "listing_link": "https://www.craigslist.org/view/d/western-springs-tall-lamp-by-the-sofa/14wn1PfuJjCEEX84bDRgnn",
      "currency_code": "USD",
      "neighbourhood": "LAGRANGE"
    },
    {
      "price": 250,
      "title": "West Elm 3‑Seat Sofa – Light Gray",
      "photo_link": "https://images.craigslist.org/00n0n_5CuWGarQq6e_1u8176_600x450.jpg",
      "posting_id": "7963160046",
      "posted_date": "2026-09-08",
      "listing_link": "https://www.craigslist.org/view/d/wheaton-west-elm-3seat-sofa-light-gray/qShXftxGSPoPZyNLo9KMGY",
      "currency_code": "USD",
      "neighbourhood": "Wheaton"
    },
    {
      "price": 200,
      "title": "Vintage Sofa.",
      "photo_link": "https://images.craigslist.org/00i0i_dR0hAPM10td_0t20CI_600x450.jpg",
      "posting_id": "7959983910",
      "posted_date": "2026-09-03",
      "listing_link": "https://www.craigslist.org/view/d/chesterton-vintage-sofa/rt2iZqQidpRg8TZDGdobYj",
      "currency_code": "USD",
      "neighbourhood": "Chesterton"
    }
  ],
  "area_used": "chicago"
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@craigslist",
  "visibility": "public",
  "operation": "get_listing",
  "version": 1,
  "input": {
    "listing": "https://www.craigslist.org/view/d/san-francisco-845-california-stunning/duah7T3y3m5Sb2mVDvHyd8"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@craigslist\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_listing\",\n  \"version\": 1,\n  \"input\": {\n    \"listing\": \"https://www.craigslist.org/view/d/san-francisco-845-california-stunning/duah7T3y3m5Sb2mVDvHyd8\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@craigslist",
  "visibility": "public",
  "operation": "get_listing",
  "version": 1,
  "input": {
    "listing": "https://www.craigslist.org/view/d/san-francisco-845-california-stunning/duah7T3y3m5Sb2mVDvHyd8"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/craigslist`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_listing`: Get listing. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `search_listings`: Search listings. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-craigslist https://api.fous.com/mcp/tools/craigslist --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Find local listings that match a product search.
- Compare asking prices across listings in an area.
- Review public descriptions and attributes for a listing.
- Collect listing links and posting dates for research.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Craigslist tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Craigslist account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from craigslist.org when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### What listings match a search in my area?

Search listings returns matching public listings for a required area and query, with optional category and price filters.

### What is the full description of a listing?

Get listing returns the full publicly displayed description and other public details from a listing link.

### When was a listing posted?

Search listings returns the original posting date for matching listings. Get listing returns the posting date for a specific listing.

## Related

- [eBay API](https://fous.com/tools/ebay.md): eBay provides listings, listing details, seller reputation and newest feedback; shipping varies by destination, and some details or counts may be missing or approximate.
- [Airbnb API](https://fous.com/tools/airbnb.md): Airbnb returns public stays, listing details, dated trip prices, and night availability, which depend on dates and may be limited, unavailable, or change.
- [Etsy API](https://fous.com/tools/etsy.md): Etsy provides current listings and prices, shop ratings and shipping, plus public item and shop details; some review counts or listings may be unavailable.
- [OfferUp API](https://fous.com/tools/offerup.md): Local marketplace for buying and selling items.
- [Cars.com API](https://fous.com/tools/cars-com.md): Cars.com finds car listings by make, model, and U.S. ZIP code, and provides dealerships’ latest customer reviews when available.
- [Apartments.com API](https://fous.com/tools/apartments-com.md): Apartments.com returns U.S. apartments and homes matching location and optional filters, plus community details; rent and availability may be missing or change.
- [Realtor.com API](https://fous.com/tools/realtor-com.md): Realtor.com returns home listings for sale, rent, or recently sold, property details and estimates, and local agent profiles; some fields or sold prices may be missing.
- [CarGurus API](https://fous.com/tools/cargurus.md): CarGurus helps shoppers browse dealer-listed new and used cars with deal ratings, and view average used prices, price ranges and 12-month price history by model year.
- [All Commerce tools](https://fous.com/tools/category/commerce)
