Craigslist API: Get listing details
Gets the public details of a Craigslist listing from its link. Deleted or expired listings are not returned, and hidden contact details are not included.
Unofficial. Not affiliated with or endorsed by Craigslist.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Listing, required
listing Link to the Craigslist listing, for example https://sfbay.craigslist.org/sfc/bik/d/san-francisco-kids-bike-accessories/7942706789.html.
https://sfbay.craigslist.org/sfc/bik/d/san-francisco-kids-bike-accessories/7942706789.html
Input as JSON
{ "listing": "https://sfbay.craigslist.org/sfc/bik/d/san-francisco-kids-bike-accessories/7942706789.html" }Output
{ "price": 1, "title": "Kid's Bike Accessories", "currency": "USD", "map_link": "https://www.google.com/maps/search/37.735400,-122.457100" , "city_area": "san francisco", "attributes": [ { "name": "bicycle type", "value": "mountain" }, { "name": "frame size", "value": "Medium, 24" }, { "name": "suspension", "value": "suspension fork (hardtail)" } ], "posting_id": "7942706789", "description": "Kid's bike stuff:\n\nRear Cargo rack - $10 (OBO) - Includes sweet rear light (needs batteries, and probably works)\n\nTraining wheels - $Free with purchase\n\nTag along bike, trailer bike, trailer cycle (whatever you call it) - $45\n\nTag along bikes, trailer bikes, trailer cycles – whatever you call them, …", "photo_links": [ "https://images.craigslist.org/00f0f_bIKkHm3BM6i_1320MM_600x450.jpg" , "https://images.craigslist.org/00909_4qelc7yarjT_0MM132_600x450.jpg" , "https://images.craigslist.org/00404_7BpgJvtEfcY_0MM132_600x450.jpg" ], "posted_date": "2026-06-22", "listing_link": "https://www.craigslist.org/view/d/san-francisco-kids-bike-accessories/j8LWNyjdpdnn47hU79WaM9" , "updated_date": "2026-10-21", "neighbourhood": "west portal / forest hill"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"craigslist.org/get_listing","input":{"listing":"https://sfbay.craigslist.org/sfc/bik/d/san-francisco-kids-bike-accessories/7942706789.html"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "craigslist.org/get_listing" , "input": { "listing": "https://sfbay.craigslist.org/sfc/bik/d/san-francisco-kids-bike-accessories/7942706789.html" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "craigslist.org/get_listing" , "input": { "listing": "https://sfbay.craigslist.org/sfc/bik/d/san-francisco-kids-bike-accessories/7942706789.html" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run craigslist.org/get_listing# with {"listing":"https://sfbay.craigslist.org/sfc/bik/d/san-francisco-kids-bike-accessories/7942706789.html"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "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." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "title", "price", "currency", "description", "neighbourhood", "city_area", "posted_date", "updated_date", "attributes", "photo_links", "map_link", "listing_link", "posting_id" ], "properties": { "price": { "type": [ "number", "null" ], "description": "Listed price, or null if none." }, "title": { "type": "string", "description": "Listing title." }, "currency": { "type": [ "string", "null" ], "description": "Three-letter currency code, or null if no currency is shown." }, "map_link": { "type": [ "string", "null" ], "description": "Map location link when a map is shown." }, "city_area": { "type": [ "string", "null" ], "description": "Local Craigslist city or area shown in the listing navigation, when available." }, "attributes": { "type": "array", "items": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string" }, "value": { "type": "string" } }, "additionalProperties": false }, "description": "Public listing characteristics." }, "posting_id": { "type": [ "string", "null" ], "description": "Craigslist posting ID.", "x-fous-developer": true }, "description": { "type": "string", "description": "Full publicly displayed listing description as plain text." }, "photo_links": { "type": "array", "items": { "type": "string" }, "description": "Full-sized listing photo links." }, "posted_date": { "type": [ "string", "null" ], "format": "date", "description": "Date the listing was posted." }, "listing_link": { "type": "string", "description": "Public listing page link." }, "updated_date": { "type": [ "string", "null" ], "format": "date", "description": "Date the listing was last updated, when shown." }, "neighbourhood": { "type": [ "string", "null" ], "description": "Neighbourhood shown with the listing title, when available." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
craigslist.org/get_listing- Returns
- title, price, currency, description, neighbourhood, city area, dates, attributes, photos, map link, posting ID
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method craigslist.org/get_listing with the inputs above.
Ask your agent
- What's the asking price and full description for this listing? https://seattle.craigslist.org/see/fuo/d/seattle-mid-century-walnut-dresser/7951234876.html
- Pull the photos, posting date, and neighborhood for https://chicago.craigslist.org/chc/apa/d/chicago-sunny-2br-logan-square/7948812230.html
- Can you check this Craigslist ad and tell me the bike's attributes like frame size and condition? https://portland.craigslist.org/mlt/bik/d/portland-trek-fx3-hybrid/7955019342.html
- I need the title, price, and map link for this used car post: https://denver.craigslist.org/cto/d/aurora-2014-honda-civic-ex/7953377105.html
- Get me the posting ID, when it was last updated, and what area of town this Craigslist rental is in: https://newyork.craigslist.org/brk/roo/d/brooklyn-room-in-bushwick-loft/7949960418.html
See more
All Craigslist methodsSearches public Craigslist listings in a city or area, newest first. Renewed listings may have older original posting dates.
craigslist.org/search_listingsGets the full public details of an eBay listing by link or item number: price, sale type, bids, condition, shipping, delivery, returns, location, item specifics, the seller's description, photos, seller and listing status. Shipping and delivery text may vary by destination; unavailable details are null.
ebay.com/get_listingGets public details for one Airbnb listing from its link. When dates are given, it also returns dated prices and cancellation terms if Airbnb offers a quote.
airbnb.com/get_listingGets a home's details from Realtor.com by street address or Realtor.com property link: status, list price, value estimate, beds, baths, size, year built, HOA fee, property and tax history, nearby schools, flood risk and photos.
realtor.com/get_homeSearches Homes.com homes for sale in a US city, neighborhood, or ZIP code, with optional price, bedroom, bathroom and home type filters. Returns listings in site order; days on market is null when not shown.
homes.com/search_homesSearches Realtor.com homes for sale, for rent, or recently sold in a city, neighborhood or ZIP code, with optional price, bedroom, bathroom and home type filters and sort order. Rentals with price ranges use the lowest advertised rent; withheld sold prices are blank.
realtor.com/search_homesFinds OfferUp items for sale near a US city or ZIP code, with prices, condition, seller names, distance and links. Distances use approximate listing locations.
offerup.com/search_listingsSearches Zillow homes for sale in a city and state, neighborhood or ZIP code, with optional price, bedroom, bathroom and property type filters and sort order, from Zillow's public search pages (up to 100 listings).
zillow.com/search_homes