POST /api/craigslist/postings/search
Price: 20 credits
Search Craigslist postings in any of its regional sites: for each result returns title, price, posting date, location with coordinates, images and category-specific details such as odometer, bedrooms, square footage, salary or event dates. Supports the full filter surface of the site, including vehicle, motorcycle, boat, housing, job, gig and event facets.
Search live Craigslist postings. `area` is a regional site alias from craigslist/areas (sfbay, newyork, london) and `category` a category alias from craigslist/categories (sss for sale, cta cars & trucks, apa apartments, jjj jobs, ggg gigs, bbb services, eve events). Narrow geographically with subarea, with postal + radius, or with lat + lon + radius. Returns cards with id (pass to craigslist/postings for the full posting), posting_id, posting_title, price/price_string/currency, created_at, location (area, subarea, neighborhood, lat/lon), image/images and facet fields (bedrooms, sqft, auto_miles, salary, company, job_title, open_house_dates, event_dates).
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)area string required — Area alias of the regional Craigslist site to search, from craigslist/areas (examples: "sfbay", "newyork", "london"; minLength: 1)count integer required — Max number of postings to return (min: 1; max: 10000)category string — Category alias to search in, from craigslist/categories (default: "sss"; examples: "cta", "apa", "jjj")keyword string nullable — Free-text search query (examples: "toyota tacoma")subarea string nullable — Sub-area alias within the area (examples: "sfc")sort string — Result ordering (default: "newest"; one of: "newest", "oldest", "price_asc", "price_desc", "distance", "relevance", "upcoming")postal string nullable — Postal code to search around (examples: "94103")lat number nullable — Latitude of the point to search around, an alternative to postal (min: -90; max: 90)lon number nullable — Longitude of the point to search around, an alternative to postal (min: -180; max: 180)radius number nullable — Search radius around the postal code or coordinates, in miles (min: 0)min_price number nullable — Minimum price (min: 0)max_price number nullable — Maximum price (min: 0)free boolean — Only postings offering the item for free (default: false)purveyor string nullable — Filter by who is selling (one of: "all", "owner", "dealer")titles_only boolean — Match the query against posting titles only (default: false)has_image boolean — Only postings that have at least one image (default: false)posted_today boolean — Only postings published today (default: false)hide_duplicates boolean — Collapse duplicate postings (default: false)crypto_ok boolean — Only postings accepting cryptocurrency (default: false)delivery_available boolean — Only postings offering delivery (default: false)language array — Languages the posting is written in (default: []; one of: "afrikaans", "catala", "dansk", "deutsch", "english", "espanol", "suomi", "francais", "italiano", "nederlands", "norsk", "portugues", "svenska", "filipino", "turkce", "chinese", "arabic", "japanese", "korean", "russian", "vietnamese")condition array — Item condition (default: []; one of: "new", "like_new", "excellent", "good", "fair", "salvage")make_model string nullable — Vehicle make and model (examples: "toyota tacoma")min_auto_year integer nullable — Minimum vehicle model year (min: 0)max_auto_year integer nullable — Maximum vehicle model year (min: 0)min_auto_miles integer nullable — Minimum odometer reading (min: 0)max_auto_miles integer nullable — Maximum odometer reading (min: 0)min_monthly_payment number nullable — Minimum monthly payment (min: 0)max_monthly_payment number nullable — Maximum monthly payment (min: 0)transmission array — Vehicle transmission (default: []; one of: "manual", "automatic", "other")drivetrain array — Vehicle drivetrain (default: []; one of: "fwd", "rwd", "4wd")fuel_type array — Vehicle fuel type (default: []; one of: "gas", "diesel", "hybrid", "electric", "other")title_status array — Vehicle title status (default: []; one of: "clean", "salvage", "rebuilt", "parts_only", "lien", "missing")body_type array — Vehicle body type (default: []; one of: "bus", "convertible", "coupe", "hatchback", "minivan", "offroad", "pickup", "sedan", "truck", "suv", "wagon", "van", "other")paint array — Vehicle paint color (default: []; one of: "black", "blue", "brown", "green", "grey", "orange", "purple", "red", "silver", "white", "yellow", "custom")cylinders array — Vehicle engine cylinder count (default: []; one of: "3", "4", "5", "6", "8", "10", "12", "other")min_engine_displacement_cc integer nullable — Minimum engine displacement, cc (min: 0)max_engine_displacement_cc integer nullable — Maximum engine displacement, cc (min: 0)street_legal boolean — Only street-legal motorcycles (default: false)motorcycle_motor array — Motorcycle motor type (default: []; one of: "gas", "electric", "other")motorcycle_type array — Motorcycle type (default: []; one of: "adventure", "bobber", "cafe_racer", "chopper", "cruiser", "dirtbike", "dual_sport", "scooter_moped", "sport_bike", "sport_touring", "standard", "touring", "trike", "other")min_boat_length number nullable — Minimum boat length overall (min: 0)max_boat_length number nullable — Maximum boat length overall (min: 0)min_year_manufactured integer nullable — Minimum year manufactured (min: 0)max_year_manufactured integer nullable — Maximum year manufactured (min: 0)boat_propulsion array — Boat propulsion type (default: []; one of: "sail", "power", "human")boat_type array — Boat type (default: []; one of: "commercial_boat", "houseboat", "kayak_canoe_sup", "luxury_classic_yacht", "personal_watercraft", "pontoon_boat", "powerboat", "rowboat", "rowing_shell", "sailboat", "ski_boat", "small_outboard_fishing", "trawler", "other")min_bedrooms integer nullable — Minimum number of bedrooms (min: 0)max_bedrooms integer nullable — Maximum number of bedrooms (min: 0)min_bathrooms number nullable — Minimum number of bathrooms (min: 0)max_bathrooms number nullable — Maximum number of bathrooms (min: 0)min_sqft integer nullable — Minimum area in square feet (min: 0)max_sqft integer nullable — Maximum area in square feet (min: 0)housing_features array — Required housing features (default: []; one of: "cats_ok", "dogs_ok", "furnished", "no_smoking", "wheelchair_accessible", "air_conditioning", "ev_charging", "no_broker_fee", "no_application_fee", "private_room", "private_bath")rent_period array — Rent period (default: []; one of: "daily", "weekly", "monthly")availability string nullable — Move-in availability window (one of: "all", "within_30_days", "beyond_30_days")housing_type array — Housing type (default: []; one of: "apartment", "condo", "cottage_cabin", "duplex", "flat", "house", "in_law", "loft", "townhouse", "manufactured", "assisted_living", "land")laundry array — Laundry options (default: []; one of: "in_unit", "hookups", "in_building", "on_site", "none")parking array — Parking options (default: []; one of: "carport", "attached_garage", "detached_garage", "off_street", "street", "valet", "none")employment_type array — Job employment type (default: []; one of: "full_time", "part_time", "contract", "employees_choice")is_internship boolean — Only internship postings (default: false)is_nonprofit boolean — Only non-profit employers (default: false)is_telecommuting boolean — Only postings where telecommuting is allowed (default: false)is_paid string nullable — Whether the gig is paid (one of: "all", "paid", "unpaid")lost_or_found array — Lost or found postings (default: []; one of: "lost", "found")event_types array — Event categories (default: []; one of: "food_drink", "competition", "tech", "festival", "sustainability", "art_film", "singles", "fitness_health", "career", "outdoor", "sale", "free", "music", "charitable", "dance", "kid_friendly", "literary")@type string (default: "CraigslistPostingCard")id string requiredposting_id integer requiredposting_title string nullablealias string nullableurl string nullableprice number nullableprice_string string nullablecurrency string nullablemonthly_payment_string string nullablecreated_at integer nullablecategory_id integer nullablecategory_alias string nullablecategory string nullablelocation object nullable@type string (default: "CraigslistPostingLocation")area_id integer nullablearea_alias string nullablesubarea_alias string nullabledescription string nullableneighborhood string nullablelat number nullablelon number nullableimage string nullableimages array (default: [])image_count integer (default: 0)bedrooms number nullablesqft number nullableauto_miles number nullablesalary string nullablecompany string nullablejob_title string nullablestart_date string nullableend_date string nullableopen_house_dates array (default: [])event_dates array (default: [])422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — The entity was not found, or a precondition failed Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.