{
  "openapi": "3.0.1",
  "info": {
    "title": "Crexi Scraper & New Listings Monitor - CRE Price Drop Alerts",
    "description": "Crexi scraper for commercial real estate: properties for sale or lease by state or city, newest first, with price, cap rate, NOI, building and lot size, property type, address and brokerage. Watch mode returns only new listings and price drops. Export as CSV, Excel or JSON.",
    "version": "0.1",
    "x-build-id": "COgaE6wGe9uT1DbDK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~crexi-new-listings-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-crexi-new-listings-monitor",
        "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/neverempty~crexi-new-listings-monitor/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-crexi-new-listings-monitor",
        "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/neverempty~crexi-new-listings-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-crexi-new-listings-monitor",
        "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": {
          "locations": {
            "title": "Locations (state or city, state)",
            "type": "array",
            "description": "One per line: a US state (TX or Texas) or a city with its state (Houston, TX). Each line is one search. Up to 20 per run. If empty, Houston, TX is searched.",
            "items": {
              "type": "string"
            }
          },
          "listingType": {
            "title": "For sale or for lease",
            "enum": [
              "sale",
              "lease"
            ],
            "type": "string",
            "description": "Which Crexi listings to search: properties for sale or spaces for lease. Empty means for sale.",
            "default": "sale"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Optional. Only these property types, as Crexi classifies them (a listing with several types matches if any of them is chosen). Empty means all types.",
            "items": {
              "type": "string",
              "enum": [
                "Retail",
                "Office",
                "Industrial",
                "Multifamily",
                "Land",
                "Mixed Use",
                "Special Purpose",
                "Hospitality",
                "Self Storage",
                "Business For Sale",
                "Mobile Home Park",
                "Senior Living",
                "Note/Loan",
                "Restaurant"
              ],
              "enumTitles": [
                "Retail",
                "Office",
                "Industrial",
                "Multifamily",
                "Land",
                "Mixed use",
                "Special purpose",
                "Hospitality",
                "Self storage",
                "Business for sale (sale only)",
                "Mobile home park (sale only)",
                "Senior living (sale only)",
                "Note / loan (sale only)",
                "Restaurant (lease only)"
              ]
            }
          },
          "minPrice": {
            "title": "Minimum asking price (USD, sale)",
            "minimum": 1,
            "type": "integer",
            "description": "Optional, for sale only. Only properties with an asking price at or above this amount in US dollars. Unpriced listings are left out when this is set. Empty means no minimum."
          },
          "maxPrice": {
            "title": "Maximum asking price (USD, sale)",
            "minimum": 1,
            "type": "integer",
            "description": "Optional, for sale only. Only properties with an asking price at or below this amount in US dollars. Unpriced listings are left out when this is set. Empty means no maximum."
          },
          "minCapRate": {
            "title": "Minimum cap rate (%, sale)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Optional, for sale only. Only properties whose listed cap rate is at or above this percentage, for example 6.5. Listings without a cap rate are left out when this is set. Empty means any."
          },
          "maxResultsPerSearch": {
            "title": "Max listings per location",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many listings to return for each location, newest on Crexi first (1 to 1000). Empty means 50. In watch mode this caps what one run returns; the rest comes in later runs."
          },
          "onlyNew": {
            "title": "Watch mode: only new listings and price drops",
            "type": "boolean",
            "description": "Run the same input on a schedule. The first run only saves the current listings as the starting point (nothing returned, nothing charged); later runs return listings that appeared on Crexi since then and price drops on listings the watch has seen. Empty means off (a plain search).",
            "default": false
          },
          "includePriceDrops": {
            "title": "Include price drops (watch mode)",
            "type": "boolean",
            "description": "In watch mode, also return properties for sale whose asking price went down since the watch saw them, with the previous price. Empty means on.",
            "default": true
          },
          "watchName": {
            "title": "Watch name (watch mode)",
            "type": "string",
            "description": "Optional. Keeps separate memories for separate watches of the same location and filters (letters, digits, dot, dash, underscore). Empty means the default watch."
          },
          "resetMonitoringState": {
            "title": "Start the watch again (watch mode)",
            "type": "boolean",
            "description": "Forget what this watch remembered and treat this run as the first check. Empty means off.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}