{
  "openapi": "3.0.1",
  "info": {
    "title": "Crexi Scraper - Commercial Real Estate Listings & CRE Data",
    "description": "Scrape Crexi commercial real estate listings, no API key. Get asking price, cap rate, NOI, occupancy, units, building and lot size, zoning, GPS, broker and brokerage for CRE properties for sale across the US. Filter by type, state, price, cap rate, size. JSON, CSV, Excel.",
    "version": "0.2",
    "x-build-id": "xJPQRAZXPviNCucOg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapers_lat~crexi-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapers_lat-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/scrapers_lat~crexi-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapers_lat-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/scrapers_lat~crexi-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapers_lat-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": {
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text search across listing titles, addresses and descriptions (e.g. warehouse, medical office, gas station). Leave empty to browse all listings."
          },
          "types": {
            "title": "Property types",
            "type": "array",
            "description": "Filter by one or more property types.",
            "items": {
              "type": "string",
              "enum": [
                "Office",
                "Retail",
                "Industrial",
                "Land",
                "Multifamily",
                "Hospitality",
                "Mixed Use",
                "Special Purpose",
                "Self Storage",
                "Business for Sale"
              ]
            },
            "default": []
          },
          "subtypes": {
            "title": "Property subtypes",
            "type": "array",
            "description": "Filter by one or more subtypes (e.g. Warehouse, Medical Office, Strip Center, Gas Station, Apartments).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "state": {
            "title": "State",
            "type": "string",
            "description": "Two-letter US state code (e.g. TX, CA, FL). For multiple states use the States field."
          },
          "states": {
            "title": "States",
            "type": "array",
            "description": "One or more two-letter US state codes (e.g. TX, CA, FL). Overrides the single State field when set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum asking price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings at or above this asking price. Unpriced listings are excluded when set."
          },
          "maxPrice": {
            "title": "Maximum asking price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings at or below this asking price."
          },
          "minCapRate": {
            "title": "Minimum cap rate (%)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings with a published cap rate at or above this percentage (e.g. 5 for 5%)."
          },
          "maxCapRate": {
            "title": "Maximum cap rate (%)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings with a published cap rate at or below this percentage (e.g. 10 for 10%)."
          },
          "minSquareFootage": {
            "title": "Minimum building size (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings at or above this building square footage."
          },
          "maxSquareFootage": {
            "title": "Maximum building size (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings at or below this building square footage."
          },
          "includeUnpriced": {
            "title": "Include unpriced listings",
            "type": "boolean",
            "description": "Include listings with no visible asking price. Defaults to true, unless a minimum asking price is set."
          },
          "transactionType": {
            "title": "Transaction type",
            "enum": [
              "sale",
              "lease"
            ],
            "type": "string",
            "description": "Which marketplace to scrape. This actor covers Crexi's for-sale marketplace (which includes net-leased / NNN investment sales). Lease-rate space listings are a separate Crexi surface and are not returned.",
            "default": "sale"
          },
          "propertyUrls": {
            "title": "Property URLs or IDs",
            "type": "array",
            "description": "Scrape specific properties directly. Paste Crexi property page URLs or numeric asset IDs. When set, the search filters above are ignored.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxListings": {
            "title": "Max Listings",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of listings to collect. Free Apify plans are capped at 10 per run."
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Parallel detail requests when fetching details. 1 to 10.",
            "default": 4
          },
          "withDetails": {
            "title": "Fetch full details and brokers",
            "type": "boolean",
            "description": "Enrich each listing with detail-page fields (cap rate, NOI, occupancy, units, lot size, year built, zoning, class, and more) and the full broker list. Requires a paid Apify plan.",
            "default": true
          },
          "withAiSummary": {
            "title": "AI listing summary (paid add-on)",
            "type": "boolean",
            "description": "Add a plain-English AI summary of each listing (property, use, size, price, investment appeal). Opt-in, billed per enriched record; requires a paid Apify plan.",
            "default": false
          },
          "withAiFeatures": {
            "title": "AI feature extraction (paid add-on)",
            "type": "boolean",
            "description": "Extract normalized features, property class, highlights and tenancy from each listing via AI. Opt-in, billed per enriched record.",
            "default": false
          },
          "withAiExtract": {
            "title": "AI investment-metric extraction (paid add-on)",
            "type": "boolean",
            "description": "Extract structured investment metrics (cap rate, price, price/sqft, square footage, NOI, occupancy) via AI. Opt-in, billed per enriched record.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The Crexi data API works without a proxy; residential proxy is available as insurance if you hit rate limits.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}