Aerial Imagery API - Coverage, AI Roof and Property Data
Pricing
from $5.00 / 1,000 aerial capture returneds
Aerial Imagery API - Coverage, AI Roof and Property Data
Find every aerial capture over a location with its date and resolution, then read what the provider's AI found in it: roofs with material, pitch and condition, buildings with heights, solar panels, pools, trees and surfaces, each with its area and confidence, plus one-row aggregate rollups.
Pricing
from $5.00 / 1,000 aerial capture returneds
Rating
0.0
(0)
Developer
Nabeel Hassan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Find every aerial capture over a location, with its date and its resolution, then read what the provider's computer vision models found in it: roofs with their material, pitch and condition, buildings with their heights, solar panels, pools, trees, driveways and surfaces - each with its own measured area and model confidence.
What this actor does
- Imagery coverage, free to ask about. Every survey over a point or a polygon with its capture date, the time of the first and last photo in the flight, the ground sample distance in metres per pixel, the timezone, and which resource classes it holds. This is how you find out whether the imagery you need exists before you spend anything on reading it.
- Post-catastrophe flights, identified. Captures carry tags, and a disaster tag is what separates imagery of a neighbourhood from imagery of a neighbourhood after the hurricane. Filter on them, or read them off the row.
- Detected features with real measurements. One row per roof, building, pool, solar panel, tree, driveway or other surface the models found, with its class, its confidence, and its area in square metres and square feet.
- Three areas, because one is not enough. Every feature carries its whole area, its area clipped to the area of interest you asked about, and an explicitly unclipped area. A roof that straddles a parcel boundary has different numbers for each, and which one is correct depends entirely on the question you are asking.
- The material mix, not just the dominant material. Turn on attribute rows and a roof's material attribute breaks into every material found on it, each with its area, its share of the roof and its confidence, with one marked dominant. Roof pitch in degrees and building height in metres and feet come through the same route.
- Aggregated rollups when you want one row per property. The same underlying analysis, already reduced to one value per measure - total solar panel area, roof condition, tree overhang - keyed by a stable identifier with a readable description.
- Find out what your account can ask for. The class and pack catalogues list exactly which feature classes and packs this credential holds. Running that first turns a later refusal into a decision made in advance.
- Credits recorded on the rows they bought. AI requests spend export credits. Every AI row carries the credits its request cost, and the run logs the total, so a month's spend is auditable from the data rather than only from an invoice.
- Pay per result. You are charged for rows carrying a real record. Locations with no coverage and areas where nothing was detected are free.
Bring your own key
This actor calls the provider with your own account key, created in your account rather than through an API call. Paste it into the API key field, or set it as the DATA_API_KEY secret. Nothing runs on anyone else's credentials, and a run without a key ends cleanly with an explanation rather than failing.
One detail worth knowing: the key travels in an Authorization header whose scheme word is spelled Apikey - capital A, everything else lowercase - and the provider states that the case is significant. A key sent as ApiKey or Bearer is simply not seen, which looks exactly like a wrong key. This actor gets that right, and strips a pasted scheme word if you copy the whole header line.
Preview is the default, so a check never costs you credits
The transactional endpoint has two modes that differ by one parameter. In preview it tells you what content is available for an address and costs nothing. Without preview it does the same thing, charges credits and returns a transaction token that unlocks the content.
Quietly spending somebody else's balance is not a reasonable default, so this actor previews unless you explicitly switch on Spend credits on transactions. Every row records which kind it was and what it cost.
A null rollup is not a zero
The provider is explicit about this: when a feature is not detected, its rollup value comes back null, and the confidence beside it comes back null too.
Coercing that to 0 would turn "no solar panel was found here" into "there are zero square metres of solar panel". Those sum and average identically and mean completely different things - one is an observation, the other is a non-observation. So nulls are preserved and flagged with a rollupNotDetected column, and the numeric value sits in its own column so an average only ever runs over real measurements.
Partial resources, and when absent means absent
Some AI survey resources only carry predictions over part of their area. Inside such a resource, a missing roof can mean the roof is not there, or that nothing looked. The actor warns in the log when a response is flagged partial and puts the flag on every row, and there is an input to exclude partial resources entirely when absent has to mean absent.
Example output
{"recordType": "feature","requested": "-33.7251728,151.2955012","found": true,"featureId": "a1b2c3d4-0001","classId": "0f4a1b2c-roof","classDescription": "Roof","confidence": 0.97,"areaSqm": 170.9,"areaSqft": 1840,"clippedAreaSqm": 164.2,"clippedAreaSqft": 1768,"unclippedAreaSqm": 170.9,"unclippedAreaSqft": 1840,"belongsToParcel": true,"roofSpotlightIndex": 78,"roofSpotlightConfidence": 0.91,"attributeCount": 4,"surveyId": "88d9f2a0-2026-0421","surveyDate": "2026-04-21","systemVersion": "gen6-3","creditsUsed": 1,"mapBrowserLink": "https://apps.example-provider.com/maps/#/@-33.7251728,151.2955012,20.00z,0d/V/20260421","partialResource": false}
FAQ
What does this aerial imagery API return?
Two things. Coverage: every aerial survey over a location, with its capture date, ground sample distance in metres per pixel, flight times, timezone and tags. And AI content derived from those surveys: individual detected features such as roofs, buildings, solar panels, pools, trees and surfaces with measured areas and model confidences, the attributes and material components beneath them, and aggregated rollups that reduce all of it to one value per measure.
How do I check whether imagery exists before paying for it?
Run coverage mode over the point or polygon. It lists every capture with its date and resolution and costs nothing. For transactional content, run transaction mode with the default preview setting, which returns the same availability answer without charging a credit or issuing a token. Only turning on Spend credits on transactions actually bills your balance.
What roof data can I get?
Roof features with their measured area in square metres and square feet, and through attribute rows the material breakdown - every material found on the roof with its area, its share and its confidence, one of them marked dominant. Where three dimensional coverage exists, roof pitch in degrees and building height in metres and feet. The roof spotlight index is available as supplementary data on feature rows.
What is the difference between features and rollups?
Features give you one row per detected object with its own geometry and confidence, which is what you want when you need to know how many, how big, and where. Rollups give you the same analysis already aggregated into one value per measure for the whole area, which is what you want when you need one row per property for a model or a spreadsheet. Rollups cost the same request; they are a different shape of answer, not a cheaper one.
Why do features have three different areas?
Because an area of interest cuts through real objects. A roof that straddles a parcel boundary has a true total area and a smaller area inside the parcel you asked about. The clipped area answers "how much of this is on the property", the unclipped area answers "how big is this thing", and blending them silently would make either question unanswerable. Both are returned, in both units.
How is a not-detected feature reported?
As null, flagged. The provider returns a null rollup value when the feature was never detected, and this actor preserves that null and sets a rollupNotDetected column rather than writing a zero. The numeric value gets its own column so that averaging over it never quietly mixes real zeros with non-observations.
Which countries are covered?
Coverage follows the provider's own imagery library, which is strongest across the United States, Australia, New Zealand and Canada. The AI geocoder supports US and Australian addresses specifically; elsewhere, supply a point or a polygon rather than an address. Coverage mode answers the question directly for any location.
Do AI requests cost credits?
Yes. AI feature and rollup requests spend export credits from your account. Each response reports how many it used, this actor writes that number onto every row the request produced, and logs the run total at the end. Coverage requests and the class and pack catalogues do not spend export credits.
Keyword map
aerial imagery API, aerial photo API, property imagery API, AI property data API, roof data API, roof material detection API, roof pitch API, building height API, solar panel detection API, pool detection API, tree overhang data, geospatial AI API, imagery coverage API, ground sample distance, orthoimagery API, post catastrophe imagery, insurance property inspection data, property condition AI, parcel level feature extraction, GIS aerial data, remote sensing API, building footprint API, surface area measurement API, rooftop solar assessment data, catastrophe response imagery