{
  "openapi": "3.0.1",
  "info": {
    "title": "Craigslist Scraper & Monitor - $0.50/1K Listings",
    "description": "$0.50 per 1,000 listings. Search Craigslist for sale, cars, housing, jobs, gigs and services by area, keyword and filters or by URL. Monitor mode returns only new listings and price drops. Optional full details. No phone numbers or emails.",
    "version": "0.1",
    "x-build-id": "8raqKWEX34POCmwzo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zhyou~craigslist-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zhyou-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/zhyou~craigslist-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zhyou-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/zhyou~craigslist-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zhyou-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": {
          "areas": {
            "title": "Areas",
            "type": "array",
            "description": "Craigslist areas as subdomains (sfbay, newyork, losangeles, chicago, seattle, toronto, london, ...) or names (\"SF bay area\"). Add a subarea after a slash to narrow it: sfbay/eby, newyork/brk. Every area is searched for every keyword. Ignored when Search URLs are given.",
            "default": [
              "sfbay"
            ],
            "items": {
              "type": "string"
            }
          },
          "queries": {
            "title": "Keywords",
            "type": "array",
            "description": "One search per keyword and area. Leave empty to list the whole category.",
            "default": [
              "bike"
            ],
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Category",
            "enum": [
              "sss",
              "cta",
              "cto",
              "ctd",
              "mca",
              "rva",
              "boo",
              "pta",
              "wta",
              "tra",
              "hva",
              "sna",
              "bia",
              "bip",
              "ela",
              "sya",
              "syp",
              "moa",
              "vga",
              "pha",
              "fua",
              "hsa",
              "ppa",
              "tla",
              "maa",
              "gra",
              "msa",
              "sga",
              "taa",
              "baa",
              "cla",
              "jwa",
              "haa",
              "ata",
              "cba",
              "ara",
              "bka",
              "ema",
              "tia",
              "bfa",
              "gms",
              "zip",
              "bar",
              "waa",
              "foa",
              "hhh",
              "apa",
              "roo",
              "sub",
              "rea",
              "vac",
              "off",
              "prk",
              "jjj",
              "ggg",
              "bbb"
            ],
            "type": "string",
            "description": "Craigslist category. Community, events, resumes and housing-wanted posts are not collected (they are mostly about private people).",
            "default": "sss"
          },
          "searchUrls": {
            "title": "Search URLs (alternative)",
            "type": "array",
            "description": "Paste searches straight from Craigslist, with any filters you set on the site (make / model, bedrooms, odometer, ...), e.g. https://sfbay.craigslist.org/search/cta?query=tacoma&max_price=20000. When given, Areas, Keywords, Category and the filters below are ignored (sort still applies unless the URL has its own).",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Optional."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Optional."
          },
          "sellerType": {
            "title": "Seller",
            "enum": [
              "all",
              "owner",
              "dealer"
            ],
            "type": "string",
            "description": "For-sale categories only.",
            "default": "all"
          },
          "postedToday": {
            "title": "Posted today only",
            "type": "boolean",
            "description": "Craigslist's own 'posted today' filter.",
            "default": false
          },
          "hasImage": {
            "title": "With images only",
            "type": "boolean",
            "description": "Only listings that have photos.",
            "default": false
          },
          "searchTitlesOnly": {
            "title": "Search titles only",
            "type": "boolean",
            "description": "Match keywords in the title only, not the description.",
            "default": false
          },
          "bundleDuplicates": {
            "title": "Bundle duplicates",
            "type": "boolean",
            "description": "Craigslist's option to group near-identical reposts.",
            "default": false
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "date",
              "relevance",
              "priceasc",
              "pricedsc"
            ],
            "type": "string",
            "description": "Craigslist returns up to 360 listings per search, picked in this order. Monitor mode always uses Newest.",
            "default": "date"
          },
          "maxItemsPerSearch": {
            "title": "Max listings per search",
            "minimum": 1,
            "maximum": 360,
            "type": "integer",
            "description": "Craigslist returns at most 360 listings per search. For more, split the search by price range, subarea or keyword.",
            "default": 100
          },
          "includeNearbyAreas": {
            "title": "Include nearby areas",
            "type": "boolean",
            "description": "When an area has few matches, Craigslist adds listings from nearby areas. Off = only the areas you asked for. Nearby rows have nearbyArea: true.",
            "default": false
          },
          "includeDetails": {
            "title": "Include posting details",
            "type": "boolean",
            "description": "Opens every listing to add the description, all attributes (condition, make / model, odometer, bedrooms, compensation, ...), city, ZIP code, last update time and every photo. Priced as a detailed listing. Phone numbers and email addresses in the text are removed.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitor mode: only new listings and price changes",
            "type": "boolean",
            "description": "Remembers the listings each search returned (per monitor key). Schedule the Actor and every run returns only listings posted since the last run, plus listings whose price changed (change: priceDrop / priceIncrease, with previousPrice). The first run returns the current listings as the baseline. Uses Newest sorting.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor key",
            "type": "string",
            "description": "Name of the watch list. Use different keys for independent schedules.",
            "default": "default"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Parallel requests. Lower it if you see many retries.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Requests go out through Apify Proxy and are retried on a fresh IP if blocked. Datacenter proxies are the default and work well.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}