{
  "openapi": "3.0.1",
  "info": {
    "title": "Crexi Commercial Real Estate Scraper",
    "description": "[💰 $1.30 / 1K] Extract commercial real estate listings from Crexi.com — addresses, asking prices and rents, square footage, cap rates, broker contacts and full-resolution photos. Search any city, county, ZIP or state, and filter by deal type, property type, price or lease rate.",
    "version": "1.0",
    "x-build-id": "bRPVq46hb4jyZqeM1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~crexi-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-crexi-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/solidcode~crexi-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-crexi-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/solidcode~crexi-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-crexi-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": {
          "city": {
            "title": "Location",
            "type": "string",
            "description": "Filter by city, county or ZIP code (e.g. \"Austin\", \"Austin, TX\", \"Travis County, TX\" or \"78702\"). Common short forms work too, like \"NYC\" or \"Washington DC\". Add more than one by separating them with commas or semicolons, e.g. \"Austin, TX; Dallas, TX\" or \"Miami, Orlando, Tampa\". Combine with the State filter below for the most precise results. Ignored when you paste URLs."
          },
          "startUrls": {
            "title": "Crexi URLs",
            "type": "array",
            "description": "Paste one or more Crexi.com search result URLs. Any filters you applied on Crexi (property type, price, lease rate, city, county, ZIP, state) are respected. When provided, these replace the Location and Filters settings — those fields are ignored.",
            "items": {
              "type": "string"
            }
          },
          "dealType": {
            "title": "Deal Type",
            "enum": [
              "sale",
              "lease",
              "auction",
              "all"
            ],
            "type": "string",
            "description": "Whether to collect sale listings, lease listings, auction listings, or all types. When 'All Deal Types' is selected, the actor returns up to maxResults Sale listings AND up to maxResults Lease listings (up to 2× total rows). Auction listings are rare on Crexi (a few dozen live at any time), so an auction run usually finishes well below your Max Results — that is the whole auction market, not a short run.",
            "default": "sale"
          },
          "propertyTypes": {
            "title": "Property Types",
            "uniqueItems": true,
            "type": "array",
            "description": "Only collect listings of these commercial property types. Leave empty to include all types. Crexi lists Multifamily, Hospitality, Self Storage and Mobile Home Park for sale only, so pairing one of those with Deal Type \"For Lease\" has nothing to return.",
            "items": {
              "type": "string",
              "enum": [
                "Multifamily",
                "Office",
                "Retail",
                "Industrial",
                "Land",
                "Hospitality",
                "SpecialPurpose",
                "Healthcare",
                "SelfStorage",
                "MobileHomePark"
              ],
              "enumTitles": [
                "Multifamily (apartments, residential income)",
                "Office",
                "Retail (shopping centers, strip malls)",
                "Industrial (warehouse, manufacturing, flex)",
                "Land (development sites, agricultural)",
                "Hospitality (hotels, motels)",
                "Special Purpose (church, school, gas station)",
                "Healthcare (medical office, senior living)",
                "Self Storage",
                "Mobile Home Park"
              ]
            },
            "default": []
          },
          "state": {
            "title": "State",
            "enum": [
              "",
              "AL",
              "AK",
              "AZ",
              "AR",
              "CA",
              "CO",
              "CT",
              "DE",
              "FL",
              "GA",
              "HI",
              "ID",
              "IL",
              "IN",
              "IA",
              "KS",
              "KY",
              "LA",
              "ME",
              "MD",
              "MA",
              "MI",
              "MN",
              "MS",
              "MO",
              "MT",
              "NE",
              "NV",
              "NH",
              "NJ",
              "NM",
              "NY",
              "NC",
              "ND",
              "OH",
              "OK",
              "OR",
              "PA",
              "RI",
              "SC",
              "SD",
              "TN",
              "TX",
              "UT",
              "VT",
              "VA",
              "WA",
              "WV",
              "WI",
              "WY",
              "DC"
            ],
            "type": "string",
            "description": "Limit results to a specific US state. Leave empty to search nationwide."
          },
          "priceMin": {
            "title": "Minimum Price ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings at or above this asking price. Applies to sale and auction listings only — Crexi prices space for lease by the square foot per year, so use the Lease Rate range below for lease searches. Setting any price range also leaves out listings whose broker did not publish a price, since there is no way to tell whether they fall inside your range. Leave empty for no minimum."
          },
          "priceMax": {
            "title": "Maximum Price ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings at or below this asking price. Applies to sale and auction listings only — use the Lease Rate range below for lease searches. Setting any price range also leaves out listings whose broker did not publish a price, since there is no way to tell whether they fall inside your range. Leave empty for no maximum."
          },
          "leaseRateMin": {
            "title": "Minimum Lease Rate ($ per sq ft / year)",
            "minimum": 0,
            "type": "integer",
            "description": "For lease searches only: include listings asking at or above this rate, in dollars per square foot per year (a typical office suite runs $15-$45). Listings quoted per month are converted for you, so a $20-$40 range finds both a $30/sq ft/year suite and a $2.50/sq ft/month one. Listings priced per acre cannot be compared against a per-square-foot rate and are left out; the run tells you how many. Setting any rate range also leaves out listings marked \"contact for pricing\", since there is no published rate to compare against. Leave empty for no minimum."
          },
          "leaseRateMax": {
            "title": "Maximum Lease Rate ($ per sq ft / year)",
            "minimum": 0,
            "type": "integer",
            "description": "For lease searches only: include listings asking at or below this rate, in dollars per square foot per year. Listings quoted per month are converted for you; listings priced per acre are left out and counted for you. Setting any rate range also leaves out listings marked \"contact for pricing\", since there is no published rate to compare against. Leave empty for no maximum."
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of listings to collect. The actor stops requesting new pages once this number is reached (the last page is kept whole, so the final count may slightly exceed this). Set to 0 for no cap.",
            "default": 200
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}