{
  "openapi": "3.0.1",
  "info": {
    "title": "CMBS Loan Data API - CRE Loans, Comps, Financials",
    "description": "Securitised commercial real estate data: turn an address into a location ID, then read the loan on it, its servicer and watchlist status, valuations at origination and today, detailed financial statements by period and statement type, top tenants with lease expiries, and scored comparables.",
    "version": "0.1",
    "x-build-id": "mHweToIfWbgxlEZbo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~cmbs-loan-data-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-cmbs-loan-data-api",
        "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/nabeelbaghoor~cmbs-loan-data-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-cmbs-loan-data-api",
        "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/nabeelbaghoor~cmbs-loan-data-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-cmbs-loan-data-api",
        "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": "What to do",
            "enum": [
              "resolveLocations",
              "overview",
              "details",
              "searchLocations",
              "searchSingle",
              "comps",
              "list",
              "listLocations",
              "financials"
            ],
            "type": "string",
            "description": "Resolve turns an address, Plus Code or Place ID into the provider's location ID, which every other mode keys off. Overview is the light record. Details adds the loan summary, the financial snapshot, both valuations and the top tenants. Search runs the same lookup across an address fragment and pages the matches. Comparables returns the properties scored closest on loan, sale, property or financial terms. Lists read a saved screen back out. Financials returns detailed statements period by period.",
            "default": "searchLocations"
          },
          "locationIds": {
            "title": "Location IDs",
            "type": "array",
            "description": "One provider location ID per line. Used by overview, details, comparables and financials. Run resolve or search first if you only have addresses.",
            "items": {
              "type": "string"
            }
          },
          "listIds": {
            "title": "Saved list IDs",
            "type": "array",
            "description": "One saved list ID per line, as shown in your account. Used by the saved list and saved list locations modes.",
            "items": {
              "type": "string"
            }
          },
          "plusCodes": {
            "title": "Plus Codes",
            "type": "array",
            "description": "One Plus Code per line, for resolve mode. A Plus Code identifies a location without an address, which is how you look up a building that has not been given one yet.",
            "items": {
              "type": "string"
            }
          },
          "placeIds": {
            "title": "Place IDs",
            "type": "array",
            "description": "One Google Place ID per line, for resolve mode. Useful when your upstream system already geocodes through Google and you want to join on that identifier rather than on text.",
            "items": {
              "type": "string"
            }
          },
          "address": {
            "title": "Street address",
            "type": "string",
            "description": "Street address to search for. The provider combines whatever address parts you give it into one query, so a partial address is a valid search rather than an error."
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City name to search for, on its own or alongside the other address parts."
          },
          "state": {
            "title": "State",
            "type": "string",
            "description": "Two letter state abbreviation, for example NY or TX. Sent uppercase whatever you type."
          },
          "zip": {
            "title": "ZIP code",
            "type": "string",
            "description": "Five digit ZIP code to search for."
          },
          "compType": {
            "title": "Comparable type",
            "enum": [
              "",
              "loan",
              "sale",
              "property",
              "financial"
            ],
            "type": "string",
            "description": "What the comparables are compared on. Loan compares debt terms, sale compares transactions, property compares physical characteristics and financial compares trading performance. Leave empty and the provider returns both sale and loan comparables.",
            "default": ""
          },
          "financialsFrom": {
            "title": "Financials as of, from",
            "type": "string",
            "description": "Earliest financial as-of date to consider, as YYYY-MM-DD. Applies to financial comparables only."
          },
          "financialsTo": {
            "title": "Financials as of, to",
            "type": "string",
            "description": "Latest financial as-of date to consider, as YYYY-MM-DD. Applies to financial comparables only."
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "",
              "multifamily",
              "hotel",
              "retail",
              "office",
              "industrial",
              "flex",
              "land",
              "mixed-use",
              "self storage",
              "manufactured housing",
              "cooperative housing",
              "health care",
              "other"
            ],
            "type": "string",
            "description": "Required for financials mode, and ignored everywhere else. The category codes inside a statement differ by property type, so one request covers one type: split a mixed portfolio into one run per type.",
            "default": ""
          },
          "sourceCode": {
            "title": "Financial source code",
            "type": "integer",
            "description": "Optional source filter for detailed financials, when your agreement gives you more than one source and you want to pin the run to one of them."
          },
          "includeTenants": {
            "title": "Include top tenants",
            "type": "boolean",
            "description": "Emit the top tenants of each property as their own rows, with size, share of area and lease expiry. Turn this off to collect property rows only.",
            "default": true
          },
          "pageSize": {
            "title": "Records per request",
            "type": "integer",
            "description": "How many records to ask for per search request, up to 100. Lower it if your plan throttles large responses.",
            "default": 25
          },
          "startAt": {
            "title": "Start at record",
            "type": "integer",
            "description": "Skip this many search results before collecting. Use it to resume a large search where a previous run stopped.",
            "default": 0
          },
          "maxResults": {
            "title": "Maximum rows",
            "type": "integer",
            "description": "Stop after this many rows. Counts every row: locations, tenants, comparables, list entries and financial statements alike.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "type": "integer",
            "description": "How fast to call the provider. Lower this if your plan's rate limit is being hit.",
            "default": 60
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own API key, sent in the x-api-key header. Either this or a client ID and secret is required. Stored encrypted and never written into the dataset. Can also be supplied as the DATA_API_KEY environment secret."
          },
          "clientId": {
            "title": "Client ID",
            "type": "string",
            "description": "Your own OAuth2 client ID, used with the client secret to fetch an access token. Only needed when you are not using an API key."
          },
          "clientSecret": {
            "title": "Client secret",
            "type": "string",
            "description": "Your own OAuth2 client secret. Exchanged for a token once per run and cached until it expires, rather than on every request."
          },
          "baseUrl": {
            "title": "API host",
            "type": "string",
            "description": "Overrides the host the API is called on. Leave empty unless the provider has given you a different one."
          },
          "tokenUrl": {
            "title": "Token endpoint",
            "type": "string",
            "description": "Overrides the identity server the client ID and secret are exchanged at. Leave empty unless the provider has given you a different one."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}