{
  "openapi": "3.0.1",
  "info": {
    "title": "Craigslist Scraper: Listings, Phones, Alerts — No Login, $10/1k",
    "description": "Craigslist listings from many cities, states or Canada in one run: cars, for sale, housing, jobs, services. Paste search or posting URLs, filter, get phones and emails from posts, or monitor for new listings only. No login or cookies. MCP-ready for AI agents. $10 per 1,000 records.",
    "version": "1.0",
    "x-build-id": "xi0tWGwhbLs63IbhC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fortuitous_pirate~craigslist-listings-for-sale-housing-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fortuitous_pirate-craigslist-listings-for-sale-housing-jobs",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/fortuitous_pirate~craigslist-listings-for-sale-housing-jobs/runs": {
      "post": {
        "operationId": "runs-sync-fortuitous_pirate-craigslist-listings-for-sale-housing-jobs",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/fortuitous_pirate~craigslist-listings-for-sale-housing-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-fortuitous_pirate-craigslist-listings-for-sale-housing-jobs",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "startUrls": {
            "title": "Start URLs (search or posting)",
            "type": "array",
            "description": "Paste any Craigslist search URL (with your filters already set on craigslist.org) or posting URL. The type is detected automatically. Posting URLs always return full details. When start URLs are given, the Location field is ignored unless you also fill Cities or Search queries.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "One or more Craigslist areas. Use the subdomain from the Craigslist URL (sfbay, newyork, losangeles, chicago, austin, toronto, london…), an area name (\"Los Angeles\"), a whole US state (\"state:TX\") or a country (\"country:CA\" for every Canadian area). Every city is combined with every search query.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "One or more keywords. Each query runs in every city. Leave empty to list the whole category.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Craigslist Location",
            "type": "string",
            "description": "Single Craigslist area (subdomain), used when Cities is empty. Examples: sfbay, newyork, losangeles, chicago, seattle, boston, denver, austin, portland, miami",
            "default": "sfbay"
          },
          "category": {
            "title": "Category",
            "enum": [
              "sss",
              "ccc",
              "jjj",
              "hhh",
              "ggg",
              "bbb",
              "cta",
              "cto",
              "ctd",
              "moa",
              "mca",
              "boo",
              "rva",
              "pta",
              "ela",
              "fua",
              "hsa",
              "tla",
              "bia",
              "sga",
              "taa",
              "zip",
              "apa",
              "roo",
              "sub",
              "rea",
              "reo",
              "vac",
              "off",
              "prk",
              "sof",
              "web",
              "acc",
              "med",
              "trd",
              "hea"
            ],
            "type": "string",
            "description": "Craigslist category code. Common codes: sss (all for sale), cta (cars & trucks), apa (apartments), hhh (all housing), jjj (all jobs), ggg (gigs), bbb (services), zip (free stuff).",
            "default": "sss"
          },
          "searchQuery": {
            "title": "Search Query (single)",
            "type": "string",
            "description": "Single keyword search, kept for existing setups. Added to Search queries when both are filled."
          },
          "maxListings": {
            "title": "Max listings per search",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum listings saved from each search (city x query). Craigslist shows the newest ~360 matches per search, so narrow the search or add more cities/queries to get more.",
            "default": 100
          },
          "maxTotalItems": {
            "title": "Max listings in total",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap on listings saved across the whole run (all searches). Leave empty for no total cap."
          },
          "includeDetails": {
            "title": "Include full details (description, attributes, phones, emails)",
            "type": "boolean",
            "description": "Open each posting for the full description, all attributes (year, make/model, odometer, condition, sqft…), all full-size images, posted/updated dates, and phone numbers and emails found in the post. Slower (one extra request per listing) but much richer.",
            "default": false
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "date",
              "priceasc",
              "pricedsc"
            ],
            "type": "string",
            "description": "Sort order for results",
            "default": "date"
          },
          "minPrice": {
            "title": "Minimum Price",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price filter (optional)"
          },
          "maxPrice": {
            "title": "Maximum Price",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price filter (optional)"
          },
          "postalCode": {
            "title": "ZIP / postal code",
            "type": "string",
            "description": "Only listings near this ZIP or postal code (use with Search distance)."
          },
          "searchDistance": {
            "title": "Search distance (miles)",
            "minimum": 1,
            "type": "integer",
            "description": "Radius around the ZIP / postal code. Default 10."
          },
          "postedToday": {
            "title": "Posted today only",
            "type": "boolean",
            "description": "Only listings posted today."
          },
          "hasImage": {
            "title": "Has image",
            "type": "boolean",
            "description": "Only listings with photos."
          },
          "searchTitlesOnly": {
            "title": "Search titles only",
            "type": "boolean",
            "description": "Match search queries against titles only, not the description."
          },
          "hideDuplicates": {
            "title": "Bundle duplicates",
            "type": "boolean",
            "description": "Ask Craigslist to bundle duplicate postings."
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "all",
              "owner",
              "dealer"
            ],
            "type": "string",
            "description": "For-sale categories: only owners or only dealers."
          },
          "condition": {
            "title": "Condition",
            "type": "array",
            "description": "For-sale categories. Any of: new, like new, excellent, good, fair, salvage.",
            "items": {
              "type": "string"
            }
          },
          "deliveryAvailable": {
            "title": "Delivery available",
            "type": "boolean",
            "description": "Only listings that offer delivery."
          },
          "onlyFreeListings": {
            "title": "Free stuff only",
            "type": "boolean",
            "description": "Search the free stuff section (zip) instead of the chosen category."
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Housing categories."
          },
          "maxBedrooms": {
            "title": "Max bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Housing categories."
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Housing categories."
          },
          "catsOk": {
            "title": "Cats OK",
            "type": "boolean",
            "description": "Housing categories: only listings that allow cats."
          },
          "dogsOk": {
            "title": "Dogs OK",
            "type": "boolean",
            "description": "Housing categories: only listings that allow dogs."
          },
          "filters": {
            "title": "Extra Craigslist URL filters",
            "type": "object",
            "description": "Any other Craigslist search parameter as key/value, e.g. {\"auto_transmission\": 2, \"min_auto_year\": 2015, \"max_auto_miles\": 100000, \"is_furnished\": 1}."
          },
          "onlyNewListings": {
            "title": "Only new listings (monitor mode)",
            "type": "boolean",
            "description": "Return only listings not seen in earlier runs with the same Monitor ID. Schedule the actor (e.g. every 30 minutes) to get alerts for new posts. The first run returns the current listings (up to the limits) and remembers the rest.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Name of this watchlist. Each ID keeps its own seen-listings memory, so you can run several monitors side by side.",
            "default": "default"
          },
          "firstRunMode": {
            "title": "First monitor run",
            "enum": [
              "emitAll",
              "baseline"
            ],
            "type": "string",
            "description": "emitAll: the first run returns current listings (up to the limits). baseline: the first run only records current listings and returns nothing, so later runs report only what is new."
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. After each run a JSON summary with the first 50 listings is POSTed here (Slack, Zapier, Make, your API)."
          },
          "searches": {
            "title": "Saved searches (advanced)",
            "type": "array",
            "description": "Optional list of search objects, each with its own city, category, query, minPrice, maxPrice, postedToday, label and filters, e.g. [{\"city\": \"austin\", \"category\": \"cta\", \"query\": \"tacoma\", \"maxPrice\": 20000}]. Same format as Craigslist Listing Monitor."
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings for the scraper",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}