{
  "openapi": "3.0.1",
  "info": {
    "title": "LoopNet API — Commercial Real Estate Listings & Site Data",
    "description": "LoopNet API for commercial real estate — search offices, industrial, retail, multifamily and land by location, ZIP or polygon. Dossiers with broker phones, owner info and traffic counts. For CRE investors and brokers. Independent, not affiliated with LoopNet or CoStar.",
    "version": "1.0",
    "x-build-id": "Nzo5XUyV8fjHV3Iw9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~loopnet-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-loopnet-property-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/sian.agency~loopnet-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-loopnet-property-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/sian.agency~loopnet-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-loopnet-property-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": {
          "mode": {
            "title": "🧭 Operation",
            "enum": [
              "search",
              "detail",
              "autocomplete",
              "propertytypes"
            ],
            "type": "string",
            "description": "Pick what to fetch from LoopNet. Each mode reads its own dedicated input fields below — fields outside the chosen mode are ignored.\n\n• **search** — commercial listings by location, ZIP, coordinates, polygon or URL (default; the bulk op)\n• **detail** — one full listing dossier (broker phones, owner, traffic counts, walk/transit scores) by id or URL\n• **autocomplete** — location type-ahead suggestions (free)\n• **propertytypes** — the full commercial property-type/subtype taxonomy (free)",
            "default": "search"
          },
          "locationMode": {
            "title": "📍 Search Input Type  (used when Operation = search)",
            "enum": [
              "bylocation",
              "bycoordinates",
              "bypolygon",
              "byzip",
              "byurl"
            ],
            "type": "string",
            "description": "How you're specifying where to search. Each option reads its own field below.\n\n• **bylocation** — free-text city, county, ZIP or address (default)\n• **bycoordinates** — center lat/lng + radius\n• **bypolygon** — a drawn area (bounding box)\n• **byzip** — a specific US ZIP code\n• **byurl** — paste a loopnet.com search-results URL",
            "default": "bylocation"
          },
          "location": {
            "title": "📍 Location  (locationMode = bylocation)",
            "type": "string",
            "description": "Free-text location — city, county, ZIP or address. Examples: 'Los Angeles, CA', 'Austin, TX', '90064'.",
            "default": "Los Angeles, CA"
          },
          "latitude": {
            "title": "🌐 Center Latitude  (locationMode = bycoordinates)",
            "type": "number",
            "description": "Center latitude of the search radius, e.g. 34.0522."
          },
          "longitude": {
            "title": "🌐 Center Longitude  (locationMode = bycoordinates)",
            "type": "number",
            "description": "Center longitude of the search radius, e.g. -118.2437."
          },
          "radiusMiles": {
            "title": "📏 Radius in Miles  (locationMode = bycoordinates)",
            "minimum": 0.1,
            "maximum": 100,
            "type": "number",
            "description": "Search radius around the center point, in miles.",
            "default": 5
          },
          "polygonCoords": {
            "title": "📐 Polygon Coordinates  (PAID, locationMode = bypolygon)",
            "type": "array",
            "description": "Array of at least 3 [longitude, latitude] pairs forming the area to search. LoopNet searches the bounding box of this area. Example: [[-118.45,34.05],[-118.40,34.05],[-118.40,34.00],[-118.45,34.00]]. PAID tier only."
          },
          "zipCode": {
            "title": "📮 ZIP Code  (locationMode = byzip)",
            "type": "string",
            "description": "A single US ZIP code to search, e.g. '90064'."
          },
          "searchUrl": {
            "title": "🔗 LoopNet Search URL  (locationMode = byurl)",
            "pattern": "^https?://(www\\.)?loopnet\\.com/.+",
            "type": "string",
            "description": "Paste a loopnet.com search-results URL, e.g. https://www.loopnet.com/search/office-space/los-angeles-ca/for-lease/. Filters are parsed from the URL itself."
          },
          "searchType": {
            "title": "🏷 Listing Mode",
            "enum": [
              "For_Lease",
              "For_Sale",
              "Auctions"
            ],
            "type": "string",
            "description": "Which slice of LoopNet inventory to search. Applies to all Search Input Types except URL (which encodes it in the URL itself).",
            "default": "For_Lease"
          },
          "propertyType": {
            "title": "🏢 Property Type",
            "enum": [
              "Office",
              "Industrial",
              "Retail",
              "Restaurant",
              "Shopping_Center",
              "Multifamily",
              "Specialty",
              "Health_Care",
              "Hospitality",
              "Sports_Entertainment",
              "Lab",
              "Land",
              "Residential_Income",
              "Flex"
            ],
            "type": "string",
            "description": "Commercial property type(s). Comma-separate multiple values, e.g. 'Office,Industrial'. Leave blank for all types. See the 'propertytypes' operation for the full subtype taxonomy."
          },
          "propertySubType": {
            "title": "🏗 Property Subtype",
            "type": "string",
            "description": "Narrow to a subtype, e.g. 'warehouse', 'data_center', 'medical_office', 'strip_center'. Resolves to its parent type and keyword-narrows the search. Run the 'propertytypes' operation for the full valid list."
          },
          "priceRange": {
            "title": "💰 Sale Price Range  (For Sale / Auctions)",
            "type": "string",
            "description": "Sale price in USD. Format: 'min:1000000', 'max:10000000', or 'min:1000000,max:10000000'."
          },
          "leaseRateRange": {
            "title": "💵 Lease Rate Range  (For Lease, $/SF)",
            "type": "string",
            "description": "Asking lease rate, $ per square foot. Format: 'min:15', 'max:60', or 'min:15,max:60'."
          },
          "buildingSizeRange": {
            "title": "📐 Building Size Range (SF)",
            "type": "string",
            "description": "Total building size in square feet. Format: 'min:5000', 'max:200000', or 'min:5000,max:200000'."
          },
          "spaceSizeRange": {
            "title": "📏 Available Space Range (SF)",
            "type": "string",
            "description": "Available space size in square feet. Format: 'min:1000', 'max:50000', or 'min:1000,max:50000'."
          },
          "lotSizeRange": {
            "title": "🌳 Lot Size Range (acres)",
            "type": "string",
            "description": "Lot size in acres. Format: 'min:0.5', 'max:10', or 'min:0.5,max:10'."
          },
          "capRateRange": {
            "title": "📈 Cap Rate Range (%)",
            "type": "string",
            "description": "Capitalization rate, percent (For Sale / investment listings). Format: 'min:5', 'max:12', or 'min:5,max:12'."
          },
          "yearBuiltRange": {
            "title": "🏗 Year Built Range",
            "type": "string",
            "description": "Building construction year. Format: 'min:1990', 'max:2020', or 'min:1990,max:2020'."
          },
          "sortOrder": {
            "title": "↕️ Sort Order",
            "enum": [
              "Recommended",
              "Newest",
              "Oldest",
              "Price_Low_to_High",
              "Price_High_to_Low",
              "Cap_Rate_Low_to_High",
              "Cap_Rate_High_to_Low",
              "Building_Size_Low_to_High",
              "Building_Size_High_to_Low"
            ],
            "type": "string",
            "description": "How to order search results.",
            "default": "Recommended"
          },
          "keywords": {
            "title": "🔍 Keywords",
            "type": "string",
            "description": "Free-text keyword filter, e.g. 'corner lot', 'drive-thru'."
          },
          "subLease": {
            "title": "🔁 Sublease Only",
            "type": "boolean",
            "description": "Only return sublease spaces.",
            "default": false
          },
          "netLeased": {
            "title": "📄 Net-Leased (NNN) Only",
            "type": "boolean",
            "description": "Only return net-leased (NNN) investment listings.",
            "default": false
          },
          "distressed": {
            "title": "⚠️ Distressed Only",
            "type": "boolean",
            "description": "Only return distressed or value-add listings.",
            "default": false
          },
          "opportunityZone": {
            "title": "🏙 Opportunity Zone Only",
            "type": "boolean",
            "description": "Only return listings inside a designated Opportunity Zone.",
            "default": false
          },
          "maxResultsPerQuery": {
            "title": "📊 Max Results",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on listings returned for this search. We auto-paginate (25 listings/page, LoopNet's own page size) until this cap is reached or the search is fully drained. FREE tier is always capped at 25.",
            "default": 40
          },
          "startPage": {
            "title": "📄 Start Page",
            "minimum": 1,
            "type": "integer",
            "description": "1-based page number to start pagination from. Default 1 (first page). Useful for resuming a large pull.",
            "default": 1
          },
          "listingId": {
            "title": "🆔 Listing ID  (used when Operation = detail)",
            "type": "string",
            "description": "The numeric LoopNet listing id — from a search result's `listingId` field, or the number in a LoopNet listing URL, e.g. '29122043'. Provide either Listing ID or Listing URL."
          },
          "listingUrl": {
            "title": "🔗 Listing URL  (used when Operation = detail)",
            "pattern": "^https?://(www\\.)?loopnet\\.com/.+",
            "type": "string",
            "description": "A full LoopNet listing URL, e.g. https://www.loopnet.com/Listing/11340-W-Olympic-Blvd-Los-Angeles-CA/29122043/."
          },
          "autocompleteTerm": {
            "title": "🔍 Location Text  (used when Operation = autocomplete)",
            "type": "string",
            "description": "Partial location text to get type-ahead suggestions for, e.g. 'Los Angeles'."
          },
          "taxonomyCountry": {
            "title": "🌍 Taxonomy Country  (used when Operation = propertytypes)",
            "enum": [
              "USA",
              "CAN",
              "GBR",
              "FRA",
              "ESP",
              "AUS"
            ],
            "type": "string",
            "description": "Country to fetch the commercial property-type/subtype taxonomy for.",
            "default": "USA"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}