{
  "openapi": "3.0.1",
  "info": {
    "title": "Craigslist Scraper & Tracker - Cars, Housing, Price Drops & MCP",
    "description": "Craigslist scraper, tracker and API for cars, apartments, housing, jobs and for sale by keyword, city, state or link: price, owner or dealer, photos, car and rental details. Only changes returns new listings, price drops and gone listings, with Slack, Discord or Teams alerts and MCP.",
    "version": "0.1",
    "x-build-id": "9TcOc35gt9RCme4bV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/akhil_rajesh~craigslist-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-akhil_rajesh-craigslist-scraper",
        "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/akhil_rajesh~craigslist-scraper/runs": {
      "post": {
        "operationId": "runs-sync-akhil_rajesh-craigslist-scraper",
        "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/akhil_rajesh~craigslist-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-akhil_rajesh-craigslist-scraper",
        "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": {
          "searches": {
            "title": "Searches",
            "type": "array",
            "description": "Keywords to search ('iphone 15', 'honda civic', '2 bedroom'), or Craigslist search links (craigslist.org/search/area/sfbay?cat=cta&query=civic, or sfbay.craigslist.org/search/cta). A link keeps its own area, category and filters. Each keyword is searched in each location. Leave empty to read a whole category.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Craigslist areas to search: a city or region as Craigslist names it ('SF bay area', 'New York', 'Los Angeles', 'Chicago', 'Toronto'), a part of one ('Manhattan, NY', 'city of san francisco'), its host ('sfbay'), or a US state or Canadian province ('CA', 'Texas', 'Ontario') for every area in it. Each area is searched on its own, up to 100 searches a run.",
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Craigslist's category, in its words or plain ones: 'cars & trucks' ('cars'), 'cars & trucks - by owner', 'apartments', 'rooms', 'real estate', 'furniture', 'electronics', 'free stuff', 'jobs', 'gigs', 'services'. Leave empty for everything for sale."
          },
          "listings": {
            "title": "Listings",
            "type": "array",
            "description": "Specific listings to read from their own pages: Craigslist listing links (craigslist.org/view/d/<title>/<id>, or an older link such as sfbay.craigslist.org/sfc/cto/d/<title>/7954213800.html). Each gives the full text, both dates and the attributes. A listing that is gone is answered as not found (free).",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Most listings (rows) a run returns, shared between searches. With Only changes: most changes a run returns (price drops first; the rest come with the next run).",
            "default": 1000
          },
          "onlyChanges": {
            "title": "Only changes since the last run",
            "type": "boolean",
            "description": "Track your searches: each run returns only what changed since the last run with the same searches and filters (new listings, price drops and increases, listings gone, ads posted again). The first run saves the listings there now as the baseline and returns them as firstRun. Each search is read whole, up to Max listings per search, so no change is missed."
          },
          "changeTypes": {
            "title": "Changes to return",
            "type": "array",
            "description": "Which changes Only changes returns. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "newListing",
                "priceDrop",
                "priceIncrease",
                "removed",
                "relisted"
              ],
              "enumTitles": [
                "New listings",
                "Price drops",
                "Price increases",
                "Gone (sold or taken down)",
                "Posted again (the same ad under a new id)"
              ]
            }
          },
          "alertWebhookUrl": {
            "title": "Alert webhook URL",
            "type": "string",
            "description": "Post each run's changes to Slack, Discord or Microsoft Teams (their incoming-webhook URL), or to any HTTPS endpoint that takes JSON (Zapier, Make, n8n). Switches on Only changes. The first run posts a short 'alerts are set up' message."
          },
          "alertChangeTypes": {
            "title": "Alert on",
            "type": "array",
            "description": "Which changes are posted. Leave empty for new listings and price drops.",
            "items": {
              "type": "string",
              "enum": [
                "newListing",
                "priceDrop",
                "priceIncrease",
                "removed",
                "relisted"
              ],
              "enumTitles": [
                "New listings",
                "Price drops",
                "Price increases",
                "Gone (sold or taken down)",
                "Posted again (the same ad under a new id)"
              ]
            }
          },
          "historyName": {
            "title": "History name",
            "type": "string",
            "description": "Keep a separate history for this tracker (a-z, 0-9 and hyphens). Leave empty to share the default one: histories are kept per search and filters anyway."
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "In the area's currency. Leave empty or 0 for no minimum. Craigslist applies it to the search."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Leave empty or 0 for no maximum. For rentals: monthly rent."
          },
          "sellerType": {
            "title": "Seller type",
            "type": "array",
            "description": "Only owners' or only dealers' listings (Craigslist's 'sold by'). Leave empty for both.",
            "items": {
              "type": "string",
              "enum": [
                "owner",
                "dealer"
              ],
              "enumTitles": [
                "Owner (private seller)",
                "Dealer (or broker)"
              ]
            }
          },
          "withPhotosOnly": {
            "title": "Only listings with photos",
            "type": "boolean",
            "description": "Craigslist's 'has image'."
          },
          "titlesOnly": {
            "title": "Search titles only",
            "type": "boolean",
            "description": "Match the keywords in titles only (Craigslist otherwise matches the text too: 'iphone' finds phone mounts and cases that mention it)."
          },
          "postalCode": {
            "title": "ZIP or postal code",
            "type": "string",
            "description": "Only listings within Distance of this ZIP or postal code ('94103', 'M5V')."
          },
          "distance": {
            "title": "Distance",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Miles (km in Canada) from the ZIP or postal code. 10 when left empty."
          },
          "makeModel": {
            "title": "Make and model (cars)",
            "type": "string",
            "description": "Cars: make and model as Craigslist matches them ('honda civic', 'toyota')."
          },
          "minYear": {
            "title": "Minimum year (cars)",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Cars: this model year or newer. Leave empty or 0 for any."
          },
          "maxYear": {
            "title": "Maximum year (cars)",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Cars: this model year or older. Leave empty or 0 for any."
          },
          "maxMiles": {
            "title": "Maximum odometer (cars)",
            "minimum": 0,
            "type": "integer",
            "description": "Cars: at most this odometer reading (miles; km in Canada). Leave empty or 0 for any."
          },
          "minBedrooms": {
            "title": "Minimum bedrooms (housing)",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Housing: this many bedrooms or more. Leave empty or 0 for any."
          },
          "maxBedrooms": {
            "title": "Maximum bedrooms (housing)",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Housing: this many bedrooms or fewer. Leave empty or 0 for any."
          },
          "sort": {
            "title": "Order",
            "enum": [
              "newest",
              "relevance",
              "priceLow",
              "priceHigh"
            ],
            "type": "string",
            "description": "Craigslist's order, which decides the listings kept when a search has more than Max results.",
            "default": "newest"
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only listings posted or renewed at most this many days ago. Leave empty or 0 for any."
          },
          "excludeWords": {
            "title": "Exclude words",
            "type": "array",
            "description": "Leave out listings whose title has any of these words ('wanted', 'parts', 'broken').",
            "items": {
              "type": "string"
            }
          },
          "hideDuplicates": {
            "title": "Hide duplicates",
            "type": "boolean",
            "description": "Craigslist groups copies of the same ad (posted again or in two categories). On: one listing per group, as Craigslist's 'hide duplicates' shows. Off: every copy, each marked with duplicateOf.",
            "default": true
          },
          "includeNearbyAreas": {
            "title": "Include nearby areas",
            "type": "boolean",
            "description": "Craigslist tops up a small search with listings from nearby areas. Off: only the areas you named."
          },
          "maxListingDetails": {
            "title": "Listing pages to read",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Read each listing's own page for this many listings per run (at most 200, about 2 seconds each): the full text, first posted and updated dates, a car's year, make, model, condition and title status, a rental's bathrooms and features. With Only changes, the changes are read first, most important first. 0 for the fastest runs.",
            "default": 0
          },
          "maxListingsPerSearch": {
            "title": "Max listings read per search",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Each search is read up to this many listings, in the order above. Craigslist lists at most 10,000 per search: narrow a bigger one with a category, a filter or a part of the area.",
            "default": 1000
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed: Craigslist answers Apify's servers directly. You can use your own proxies; residential proxies aren't available in this Actor."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}