{
  "openapi": "3.0.1",
  "info": {
    "title": "Craigslist Scraper (Cheap) — Listings, Alerts, Any City",
    "description": "Low-cost Craigslist scraper with the same input and output fields as the most popular one: title, priceUsd, location, GPS, postedAt, images, plus optional description, attributes, phones and emails. Any city or several at once, new-listing alerts. $0.50 per 1,000 listings.",
    "version": "0.1",
    "x-build-id": "BZ8MDggBgncjVNAvL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/istmobot~craigslist-scraper-cheap/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-istmobot-craigslist-scraper-cheap",
        "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/istmobot~craigslist-scraper-cheap/runs": {
      "post": {
        "operationId": "runs-sync-istmobot-craigslist-scraper-cheap",
        "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/istmobot~craigslist-scraper-cheap/run-sync": {
      "post": {
        "operationId": "run-sync-istmobot-craigslist-scraper-cheap",
        "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": "Craigslist URLs",
            "type": "array",
            "description": "Craigslist search URLs (https://sfbay.craigslist.org/search/sss?query=bike, https://newyork.craigslist.org/search/brk/cta, https://www.craigslist.org/search/city/west-wendover-nv?cat=rea&radius=50) or posting URLs. Every filter in the link is kept. When provided, these replace the City + Category fields below.",
            "items": {
              "type": "string"
            }
          },
          "region": {
            "title": "City",
            "enum": [
              "newyork",
              "losangeles",
              "chicago",
              "sfbay",
              "seattle",
              "boston",
              "washingtondc",
              "atlanta",
              "dallas",
              "houston",
              "denver",
              "philadelphia",
              "miami",
              "austin",
              "sandiego",
              "phoenix",
              "portland",
              "minneapolis",
              "detroit",
              "nashville",
              "raleigh",
              "charlotte",
              "baltimore",
              "stlouis",
              "orlando",
              "tampa",
              "lasvegas",
              "sacramento",
              "hartford",
              "columbus",
              "indianapolis",
              "cincinnati",
              "cleveland",
              "kansascity",
              "milwaukee",
              "sanantonio",
              "pittsburgh",
              "newhaven",
              "providence",
              "richmond",
              "salem",
              "saltlakecity",
              "anchorage",
              "honolulu",
              "montreal",
              "toronto",
              "vancouver",
              "calgary",
              "ottawa",
              "edmonton"
            ],
            "type": "string",
            "description": "Craigslist city to search. Any Craigslist city works: pick one from the list, or use \"Cities\" below to type any subdomain (raleigh, halifax, london...).",
            "default": "newyork"
          },
          "regions": {
            "title": "Cities (several)",
            "type": "array",
            "description": "Search several cities in one run: Craigslist subdomains such as \"newyork\", \"sfbay\", \"raleigh\", \"toronto\" (the part before .craigslist.org). Overrides \"City\" when set.",
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Category",
            "enum": [
              "sss",
              "cta",
              "ela",
              "fua",
              "apa",
              "roo",
              "sub",
              "jjj",
              "ggg",
              "bbb",
              "ccc",
              "rrr",
              "eee"
            ],
            "type": "string",
            "description": "What kind of listings to collect. \"For sale (all)\" returns the full for-sale catalogue; the more specific subcategories (Cars & Trucks, Electronics, Furniture, Housing) narrow Craigslist's own search.",
            "default": "sss"
          },
          "searchTerm": {
            "title": "Keyword",
            "type": "string",
            "description": "Optional search keyword. Matches against both the title and the description body of postings (e.g. \"honda civic\", \"two bedroom\"). Craigslist requires EVERY word you type to appear in the posting, so long phrases usually return nothing. To match ANY of several words or phrases, separate them with \"|\" and put multi-word phrases in quotes — for example: \"my house\"|\"our home\"|\"selling my home\". Leave empty to return every listing in the selected category."
          },
          "priceMin": {
            "title": "Minimum Price",
            "minimum": 0,
            "type": "integer",
            "description": "Only include postings priced at or above this amount. Leave empty for no minimum. Ignored on categories that don't have prices (Jobs, Community, Resumes)."
          },
          "priceMax": {
            "title": "Maximum Price",
            "minimum": 0,
            "type": "integer",
            "description": "Only include postings priced at or below this amount. Leave empty for no maximum."
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "any",
              "new",
              "like-new",
              "excellent",
              "good",
              "fair",
              "salvage"
            ],
            "type": "string",
            "description": "Restrict to a specific condition (For Sale categories only). Most posters tag this honestly; some leave it blank, which means the row is excluded when this filter is set.",
            "default": "any"
          },
          "hasImage": {
            "title": "Has image",
            "type": "boolean",
            "description": "When on, only return postings that have at least one photo.",
            "default": false
          },
          "postedToday": {
            "title": "Posted today",
            "type": "boolean",
            "description": "When on, only return postings published in the last 24 hours.",
            "default": false
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "date",
              "rel",
              "priceasc",
              "pricedsc"
            ],
            "type": "string",
            "description": "How Craigslist orders the results. Keep \"Newest first\" for recurring alerts. Also applied to pasted URLs that have no sort.",
            "default": "date"
          },
          "includeDetails": {
            "title": "Include full posting details",
            "type": "boolean",
            "description": "Also open every posting to add the full description, attributes (year, make/model, odometer, bedrooms, sqft, compensation...), full image gallery, phone numbers and emails from the text, updated date and reply token. Charged as a separate small event per listing. Off: rows have the search fields only (title, price, location, GPS, date, images, odometer, bedrooms, sqft).",
            "default": false
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum listings in total across all cities and URLs. 0 = no limit (each search returns at most 10,000, Craigslist's own limit).",
            "default": 200
          },
          "onlyNew": {
            "title": "Only new listings (alerts)",
            "type": "boolean",
            "description": "For scheduled runs: output only postings that were not there on the previous run of the same search (remembered per search in a named key-value store). The first run outputs everything up to \"Max results\".",
            "default": false
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Only postings published after this date (\"2026-10-01\") or within this period (\"24 hours\", \"3 days\", \"2 weeks\"). Filtered before fetching, so older listings cost nothing."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy (datacenter) is enough for Craigslist. The Actor switches to a fresh IP when a request is blocked.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}