{
  "openapi": "3.0.1",
  "info": {
    "title": "Cook County Property Sales & Assessed Values (Chicago)",
    "description": "Cook County Assessor open data as clean JSON: parcel sales with buyer, seller, price and deed type; assessed values (mailed, certified, Board of Review); building permits; assessment appeals with agent and outcome. Filter by date, township, class, price, PIN list and buyer or seller name.",
    "version": "1.0",
    "x-build-id": "E39y1hvVtCUIIprOX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jserle~cook-county-property-sales-values/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jserle-cook-county-property-sales-values",
        "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/jserle~cook-county-property-sales-values/runs": {
      "post": {
        "operationId": "runs-sync-jserle-cook-county-property-sales-values",
        "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/jserle~cook-county-property-sales-values/run-sync": {
      "post": {
        "operationId": "run-sync-jserle-cook-county-property-sales-values",
        "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": "Dataset",
            "enum": [
              "sales",
              "assessedValues",
              "permits",
              "appeals"
            ],
            "type": "string",
            "description": "Sales: one record per recorded parcel sale (buyer, seller, price, deed type). Assessed values: one record per parcel per tax year (mailed, certified and Board of Review values). Permits: building permits reported to the Assessor. Appeals: assessment appeals filed with the Assessor, with agent and outcome.",
            "default": "sales"
          },
          "pins": {
            "title": "PIN list",
            "uniqueItems": true,
            "type": "array",
            "description": "Up to 500 Cook County Parcel Index Numbers, one per line. Dashes are fine (17-04-207-086-1145) and short PINs are zero-padded to 14 digits. With a PIN list, the default date window and tax year are not applied, so you get the parcel's full history in the chosen dataset.",
            "items": {
              "type": "string"
            }
          },
          "township": {
            "title": "Township",
            "type": "string",
            "description": "One Cook County township, by name or two-digit code, case-insensitive. Examples: Lake View, 73, Hyde Park, Evanston. The eight Chicago townships are Hyde Park (70), Jefferson (71), Lake (72), Lake View (73), North Chicago (74), Rogers Park (75), South Chicago (76) and West Chicago (77)."
          },
          "classCodes": {
            "title": "Property class codes",
            "uniqueItems": true,
            "type": "array",
            "description": "Assessor property class codes, one per line, for example 211 (two to six unit apartment), 203 (single family), 299 (condominium), 500-599 (commercial). Applies to sales, assessed values and appeals; permits carry no class.",
            "items": {
              "type": "string"
            }
          },
          "taxYear": {
            "title": "Tax year",
            "minimum": 1999,
            "maximum": 2100,
            "type": "integer",
            "description": "Four-digit tax year. For assessed values and appeals this is the main selector and defaults to the newest year in the dataset. For sales and permits it restricts to that year's records and switches off the default date window."
          },
          "dateFrom": {
            "title": "Date from",
            "type": "string",
            "description": "ISO date, for example 2026-01-01. Sales: sale date (recorded date) on or after. Permits: issue date on or after. Ignored for assessed values and appeals, which are by tax year."
          },
          "dateTo": {
            "title": "Date to",
            "type": "string",
            "description": "ISO date, for example 2026-06-30. Sales: sale date on or before. Permits: issue date on or before."
          },
          "minPrice": {
            "title": "Minimum price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Sales: sale price at least this. Permits: estimated job amount at least this. Ignored for assessed values and appeals."
          },
          "maxPrice": {
            "title": "Maximum price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Sales: sale price at most this. Permits: estimated job amount at most this."
          },
          "buyerName": {
            "title": "Buyer name contains",
            "type": "string",
            "description": "Sales only. Case-insensitive substring matched against the buyer name as recorded. Example: LLC, or a surname. Roughly one recent sale in five has no buyer name on file; those cannot match."
          },
          "sellerName": {
            "title": "Seller name contains",
            "type": "string",
            "description": "Sales only. Case-insensitive substring matched against the seller name as recorded. Examples: bank, trust, auction."
          },
          "saleFilter": {
            "title": "Sale filter (sales only)",
            "enum": [
              "under10k",
              "strict",
              "none"
            ],
            "type": "string",
            "description": "The Assessor flags three kinds of likely non-market sales. Default drops sales flagged under $10,000. Strict also drops repeat same-price sales within 365 days and quit claim, executor and beneficiary deeds (the Assessor's own pre-2023 filtering). None delivers every recorded sale. The three flags are delivered on every record either way.",
            "default": "under10k"
          },
          "maxResults": {
            "title": "Maximum records",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "How many records to deliver. Sales and permits come newest first; assessed values and appeals come in PIN order. You are charged per delivered record, so this is also your cost cap.",
            "default": 100
          },
          "includeRaw": {
            "title": "Include the raw source row",
            "type": "boolean",
            "description": "Attach the original Socrata row under `raw`, with the Assessor's own column names. Useful for auditing the normalization; roughly doubles item size.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}