{
  "openapi": "3.0.1",
  "info": {
    "title": "Aerial Imagery API - Roof, Pool and Damage Data",
    "description": "Property data derived from aerial imagery: roof material, condition grade, solar panels, footprint and height, pools, decks, trampolines, sport courts, vehicles and tree cover, post-catastrophe damage with FEMA classification, plus imagery coverage, capture dates and elevation.",
    "version": "0.1",
    "x-build-id": "0VPBB0WcuzLlM0RkF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~aerial-imagery-property-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-aerial-imagery-property-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~aerial-imagery-property-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-aerial-imagery-property-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~aerial-imagery-property-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-aerial-imagery-property-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": {
          "service": {
            "title": "What to read",
            "enum": [
              "propertyAttributes",
              "structures",
              "structureGeometry",
              "damageAssessment",
              "propertyCount",
              "damageCount",
              "orthoCollections",
              "orthoDates",
              "orientedCollections",
              "orientedImages",
              "damageCollections",
              "dsmCollections",
              "dtmCollections",
              "surfaceElevation",
              "terrainElevation"
            ],
            "type": "string",
            "description": "Property attributes reads the parcel and building facts derived from aerial imagery. Structures reads each building on its own. Damage assessment reads post-catastrophe condition. The coverage services say which imagery exists over a location and when it was flown. The elevation services add a height to every coordinate you give them.",
            "default": "propertyAttributes"
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "One location per line, either a \"latitude,longitude\" pair or a well known text geometry such as POINT(-87.2095 30.4047) or POLYGON((...)). Pairs are written latitude first and converted to the longitude-first order this API expects, so a pair written the way people write coordinates cannot become a real place somewhere else. On the coverage services this is optional: leave it empty to read the whole catalogue your licence covers.",
            "items": {
              "type": "string"
            }
          },
          "srid": {
            "title": "Coordinate reference system",
            "enum": [
              "4326",
              "3857"
            ],
            "type": "string",
            "description": "Which projection your coordinates are in. This is always sent explicitly rather than left to a server default, because the same numbers land in entirely different places under the two.",
            "default": "4326"
          },
          "layers": {
            "title": "Imagery layers",
            "type": "array",
            "description": "Which imagery programmes to read from. Urban is the highest resolution, wide area covers more ground at lower resolution, and graysky is flown after a catastrophe. The elevation and capture date services require at least one.",
            "items": {
              "type": "string",
              "enum": [
                "urban",
                "urban-g",
                "urban-r",
                "wide-area",
                "graysky",
                "graysky-g"
              ],
              "enumTitles": [
                "Urban - highest resolution urban programme",
                "Urban (partner collected)",
                "Urban (alternate sensor)",
                "Wide area - broader coverage, lower resolution",
                "Gray sky - flown after a catastrophe",
                "Gray sky (partner collected)"
              ]
            }
          },
          "unitSystem": {
            "title": "Units",
            "enum": [
              "metric",
              "imperial"
            ],
            "type": "string",
            "description": "Which units areas, lengths and heights come back in. The provider does not say in its response which one it used, so whichever you pick is recorded on every row.",
            "default": "metric"
          },
          "collection": {
            "title": "Collection",
            "type": "string",
            "description": "Restrict to one named imagery collection, for example us-tx-pearland-2021. Leave empty to use whatever covers the location."
          },
          "collectYear": {
            "title": "Collection year",
            "type": "integer",
            "description": "Restrict to imagery flown in this year, as four digits."
          },
          "graySkyEvent": {
            "title": "Catastrophe event",
            "type": "string",
            "description": "Restrict to imagery flown for one named catastrophe event, for the damage services."
          },
          "captureDateFrom": {
            "title": "Captured on or after",
            "type": "string",
            "description": "Only use imagery first captured on or after this day, written as YYYY-MM-DD."
          },
          "captureDateTo": {
            "title": "Captured on or before",
            "type": "string",
            "description": "Only use imagery last captured on or before this day, written as YYYY-MM-DD."
          },
          "latestOnly": {
            "title": "Latest imagery only",
            "type": "boolean",
            "description": "Read only the most recent imagery over each location rather than every capture the provider holds.",
            "default": true
          },
          "bufferMetres": {
            "title": "Search buffer (metres)",
            "type": "integer",
            "description": "Widen each location by this many metres before searching. Useful when a point falls just outside the parcel you meant."
          },
          "primaryStructureOnly": {
            "title": "Primary structure only",
            "type": "boolean",
            "description": "Return only the main building on each parcel, rather than sheds, garages and outbuildings as well.",
            "default": false
          },
          "minRoofCondition": {
            "title": "Minimum roof condition",
            "type": "integer",
            "description": "Only return properties whose roof condition grade is at least this. The provider grades from 1 to 5 and the grade is kept exactly as it publishes it, never rescaled or inverted."
          },
          "maxRoofCondition": {
            "title": "Maximum roof condition",
            "type": "integer",
            "description": "Only return properties whose roof condition grade is no more than this, on the provider's 1 to 5 scale."
          },
          "roofMaterial": {
            "title": "Roof material",
            "type": "array",
            "description": "Only return properties whose roof is made of one of these materials, as detected from the imagery.",
            "items": {
              "type": "string",
              "enum": [
                "shingle",
                "tile",
                "metal",
                "membrane",
                "shake",
                "gravel"
              ],
              "enumTitles": [
                "Shingle",
                "Tile",
                "Metal",
                "Membrane",
                "Shake",
                "Gravel"
              ]
            }
          },
          "hasPool": {
            "title": "Has a pool",
            "type": "boolean",
            "description": "Only return properties with a swimming pool detected in the imagery.",
            "default": false
          },
          "hasSolar": {
            "title": "Has roof solar panels",
            "type": "boolean",
            "description": "Only return properties with solar panels detected on the roof.",
            "default": false
          },
          "hasTrampoline": {
            "title": "Has a trampoline",
            "type": "boolean",
            "description": "Only return properties with a trampoline detected in the imagery.",
            "default": false
          },
          "hasDeck": {
            "title": "Has a deck",
            "type": "boolean",
            "description": "Only return properties with a deck detected in the imagery.",
            "default": false
          },
          "hasSportCourt": {
            "title": "Has a sport court",
            "type": "boolean",
            "description": "Only return properties with a sport court detected in the imagery.",
            "default": false
          },
          "hasPlayground": {
            "title": "Has a playground",
            "type": "boolean",
            "description": "Only return properties with playground equipment detected in the imagery.",
            "default": false
          },
          "hasEnclosure": {
            "title": "Has an enclosure",
            "type": "boolean",
            "description": "Only return properties with an enclosure detected in the imagery.",
            "default": false
          },
          "hasBoat": {
            "title": "Has a boat",
            "type": "boolean",
            "description": "Only return properties with a boat detected on the parcel.",
            "default": false
          },
          "minCatastropheScore": {
            "title": "Minimum catastrophe score",
            "type": "integer",
            "description": "Only return damaged properties scoring at least this, on the provider's own catastrophe scale."
          },
          "maxCatastropheScore": {
            "title": "Maximum catastrophe score",
            "type": "integer",
            "description": "Only return damaged properties scoring no more than this."
          },
          "minFemaClassification": {
            "title": "Minimum FEMA classification",
            "type": "integer",
            "description": "Only return damaged properties at or above this FEMA damage classification."
          },
          "maxFemaClassification": {
            "title": "Maximum FEMA classification",
            "type": "integer",
            "description": "Only return damaged properties at or below this FEMA damage classification."
          },
          "spatialOperation": {
            "title": "Spatial relationship",
            "enum": [
              "",
              "intersect",
              "covers-wkt",
              "within-wkt"
            ],
            "type": "string",
            "description": "How a coverage area has to relate to your geometry to count. Intersect returns anything overlapping it; covers returns only coverage containing all of it; within returns only coverage entirely inside it.",
            "default": ""
          },
          "orientationSource": {
            "title": "Orientation source",
            "enum": [
              "",
              "nadir",
              "ortho"
            ],
            "type": "string",
            "description": "Which imagery the structure measurements are taken from, for the structures service.",
            "default": ""
          },
          "productType": {
            "title": "Product type",
            "type": "string",
            "description": "Restrict to one of the provider's ortho or oriented product types. Leave empty for the default product."
          },
          "bands": {
            "title": "Image bands",
            "enum": [
              "",
              "all",
              "rgb",
              "irg"
            ],
            "type": "string",
            "description": "Which spectral bands to read for oriented image metadata. Infrared is only available where it was flown.",
            "default": ""
          },
          "include": {
            "title": "Extra fields",
            "type": "string",
            "description": "A comma separated list of extra fields to include, in the provider's own naming, for example first-capture-date,last-capture-date,min-gsd. Leave empty for the default field set."
          },
          "includeGeometry": {
            "title": "Include full geometry",
            "type": "boolean",
            "description": "Adds the full GeoJSON footprint or coverage polygon to each row. Off by default because a polygon makes a spreadsheet cell enormous without making it useful, and every row already carries a centre point.",
            "default": false
          },
          "pageSize": {
            "title": "Records per request",
            "type": "integer",
            "description": "How many records to ask for per request on the services that page.",
            "default": 100
          },
          "maxResults": {
            "title": "Maximum rows",
            "type": "integer",
            "description": "Stop after this many rows. Counts every row the run collects.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "type": "integer",
            "description": "How fast to call the provider. The default of 60 is one a second, which is polite for a metered imagery API. Raise it if your licence allows more.",
            "default": 60
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own account key, issued by the provider. Sent in an X-API-KEY header rather than in the query string, so it does not end up in server logs, proxy logs or browser history. Stored encrypted and never written into the dataset. Can also be supplied as the DATA_API_KEY environment secret."
          },
          "username": {
            "title": "Account username",
            "type": "string",
            "description": "Your own account username, for accounts issued a login rather than an API key. Exchanged with the password below for a session token. Leave empty if you have a key."
          },
          "password": {
            "title": "Account password",
            "type": "string",
            "description": "The password for the username above. Stored encrypted and never written into the dataset. Leave empty if you have a key."
          },
          "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."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}