Buildings in an area, ranked
GETapi.baseray.ai/v1/buildings
One ranked page of the buildings inside bbox that pass every filter given. Filters of different names combine with AND; the values of one list filter combine with OR. An area outside the countries baseray covers answers with no buildings; https://baseray.tech/countries lists them and takes requests for others.
Requires an API key. How to authenticate.
Query parameters57
Area and paging
bboxstringrequired- The area to search:
minLon,minLat,maxLon,maxLatin WGS84 degrees. Each side may span at most 3 degrees; search a county, city or district. sortvolume | area | height | registered_business_turnover | registered_business_employeesdefault "volume"- Ranking, largest first:
volume(m³),area(footprint, m²),height(m),registered_business_turnover(the largest latest turnover of a business registered at the address, inregistered_business_turnover_currency, which it requires) orregistered_business_employees(the largest stated size; a band ranks where it starts, so 10–19 ranks as 10). limitinteger1–100default 25- Buildings per page, 1 to 100.
offsetinteger0–10000default 0- Buildings to skip, for the next page.
offset + limitmust be at most 10,000; past that, narrowbbox.
Building
categoryarray of residential_house | apartment_block | commercial | industrial | public | agricultural | ancillary | unknown- Keep buildings of any of these categories. Repeat the parameter or give a comma list:
category=commercial,industrial.ancillaryis an annex or outbuilding. building_typearray of string- Keep buildings of any of these granular types, combined with
categoryby OR: e.g.office,warehouse,school,apartments,garage. Repeatable or a comma list. roof_shapearray of gabled | hipped | flat | pyramidal | skillion | round | mansard | half_hipped | gambrel | dome- Keep buildings with any of these roof shapes. Repeatable or a comma list.
min_floorsinteger0–500- At least this many floors above ground. Buildings where this value is unknown are left out.
max_floorsinteger0–500- At most this many floors above ground. Buildings where this value is unknown are left out.
min_dwellingsinteger0–1000000- At least this many dwellings, where known. Buildings where this value is unknown are left out.
max_dwellingsinteger0–1000000- At most this many dwellings, where known. Buildings where this value is unknown are left out.
min_entrancesinteger1–1000000- At least this many entrances (each listed address of the building counts as one). Buildings where this value is unknown are left out.
max_entrancesinteger1–1000000- At most this many entrances. Buildings where this value is unknown are left out.
address_corroborationarray of corroborated | single_source | conflicting- Keep buildings whose shown address is graded any of:
corroborated(an independent record gives the same house number),single_source(only one record),conflicting(another record gives another number). Buildings shown without a house number match none.
Size
min_area_m2number0–1000000000- Minimum ground footprint, in square metres.
max_area_m2number0–1000000000- Maximum ground footprint, in square metres.
min_height_mnumber0–1000- Minimum height, in metres. Buildings where this value is unknown are left out.
max_height_mnumber0–1000- Maximum height, in metres. Buildings where this value is unknown are left out.
min_volume_m3number0–1000000000- Minimum volume, in cubic metres. Buildings where this value is unknown are left out.
max_volume_m3number0–1000000000- Maximum volume, in cubic metres. Buildings where this value is unknown are left out.
measured_height_onlybooleandefault false- Keep only buildings whose volume comes from a measurement of the building itself: a survey, or a surface model measured over its roof. Despite its name this filter reads the volume, not the height, and a volume integrated under a measured roof still has
volume_basisestimated, since its heights, not its solid, were measured.
Roof and solar
solar_presencearray of registered | detected | registered_at_address | none_seen | unclear | unknown- Keep buildings whose settled solar answer, their
solar_presence, is any of these.registeredanddetectedtogether are the buildings known to carry panels;registered_at_addressis an installation registered at an address the building shares with others;none_seenis a roof photo showing none with no register entry;unknownis neither a register entry nor a usable photo. Repeatable or a comma list. exclude_solar_presencearray of registered | detected | registered_at_address | none_seen | unclear | unknown- Leave out buildings whose
solar_presenceis any of these, for exampleregistered,detectedto leave out the buildings known to carry panels. An answer may not be both kept bysolar_presenceand left out here. Repeatable or a comma list. existing_solar_panelsarray of detected | none_seen | unclear- Keep buildings whose roof photo was checked for solar panels with any of these results. This reads the photo alone, whatever a register states:
none_seenkeeps a building with a registered installation its photo does not show. Usesolar_presencefor the settled answer. Buildings never checked, or whose photo was too coarse to check, match none. Repeatable or a comma list. registered_solarbooleantruekeeps buildings at whose address an official register (a grid operator's list of connected installations, or the energy regulator's licence register) states a solar installation: those whoseregistered_solaris not null.falsekeeps buildings no register states one for, which says nothing of their roofs: a register lists only what was connected to the grid, and only where its address is one a building holds. Leave it out to keep both.registered_solar_storageboolean- Among buildings with a registered solar installation:
truekeeps those a register states store energy (a battery),falsethose stated to store none. A building whose register does not say matches neither. Not accepted withregistered_solar=false. min_registered_solar_kwnumber≤ 1000000000- At least this much installed power, in kW, registered at the building's address, counting the installations that state theirs. Where only some state it a building can match on those while its
registered_solar.installed_power_kw, which is given only for a whole sum, is null. Buildings with no registered installation, or none stating its power, are left out. Not accepted withregistered_solar=false. has_solar_potentialbooleandefault false- Keep only buildings whose roof has a solar-potential estimate.
min_panel_countinteger0–1000000- At least this many solar panels fit on the roof. Buildings where this value is unknown are left out.
max_panel_countinteger0–1000000- At most this many solar panels fit on the roof. Buildings where this value is unknown are left out.
min_capacity_kwpnumber0–1000000000- Minimum rooftop solar capacity, in kWp. Buildings where this value is unknown are left out.
max_capacity_kwpnumber0–1000000000- Maximum rooftop solar capacity, in kWp. Buildings where this value is unknown are left out.
min_yearly_energy_kwhnumber0–1000000000- Minimum yearly rooftop solar energy, in kWh. Buildings where this value is unknown are left out.
max_yearly_energy_kwhnumber0–1000000000- Maximum yearly rooftop solar energy, in kWh. Buildings where this value is unknown are left out.
min_co2_savings_kg_per_yearnumber0–1000000000- Minimum CO₂ a rooftop solar installation would save, in kg a year. Buildings where this value is unknown are left out.
max_co2_savings_kg_per_yearnumber0–1000000000- Maximum CO₂ a rooftop solar installation would save, in kg a year. Buildings where this value is unknown are left out.
has_3d_modelbooleandefault false- Keep only buildings with a reconstructed 3D model of their roof.
Registered businesses
has_registered_businessbooleandefault false- Keep only buildings with at least one active business whose registered office is the building's address. A registered office is never ownership or occupancy.
registered_business_namestring2–120 characters- Keep buildings where the name of a business registered at the address contains this text.
min_registered_business_turnoverinteger- Minimum latest turnover of a business registered at the address, in whole units of
registered_business_turnover_currency(required with it). max_registered_business_turnoverinteger- Maximum latest turnover of a business registered at the address, in whole units of
registered_business_turnover_currency(required with it). registered_business_turnover_currencystring- ISO 4217 currency of the turnover bounds and of the turnover sort, e.g.
RON,CZK,EUR. Required with a turnover bound orsort=registered_business_turnover. registered_business_financial_yearinteger1990–2100- Keep buildings whose registered business's latest financial statement is for this year.
min_registered_business_employeesinteger0–1000000- At least this many employees in one business registered at the address, reading its whole stated size: a band counts only when all of it is at or above the value (10–19 matches 10, not 15). A business whose size is not stated never matches.
max_registered_business_employeesinteger0–1000000- At most this many employees in every business registered at the address whose size is stated; an open-ended top band never matches.
Energy and climate
has_annual_heating_estimatebooleandefault false- Keep only buildings with an annual heating-demand estimate for the local climate.
has_thermal_assessmentbooleandefault false- Keep only buildings with a building-specific thermal assessment (energy certificate, audit, as-built model or survey).
has_peak_heat_loadbooleandefault false- Keep only buildings whose thermal assessment supplies the design temperatures a peak heat load needs.
has_recent_climate_trendbooleandefault false- Keep only buildings with a recent rolling climate average and trend at their location.
has_recent_temperature_extremesbooleandefault false- Keep only buildings with a complete recent temperature-extremes profile at their location.
has_recent_precipitationbooleandefault false- Keep only buildings with a complete recent precipitation profile at their location.
min_recent_frost_daysnumber0–366- At least this many frost days a year, averaged over recent complete years. Buildings where this value is unknown are left out.
max_recent_minimum_daily_temperature_cnumber-100–100- The coldest daily minimum of recent complete years is at most this, in °C. Buildings where this value is unknown are left out.
min_recent_hot_daysnumber0–366- At least this many hot days a year, averaged over recent complete years. Buildings where this value is unknown are left out.
min_recent_max_one_day_precipitation_mmnumber0–5000- The wettest single day of recent complete years brought at least this much precipitation, in mm. Buildings where this value is unknown are left out.
Natural hazards
flood_zonearray of 5_year | 10_year | 20_year | 50_year | 100_year | 100_year_climate_change | 500_year | 1000_year | 10000_year- Keep buildings whose
flood_zone, the most frequently flooded zone of an official flood hazard map they lie in, is any of these: zones are named by the return period of their flood, and100_year_climate_changeis the 1-in-100-year flood under the climate the map projects. Flood maps are served only where their licence allows it, and cover only the areas they were drawn for: a building whose zone is unknown matches none, so an empty result is not evidence of low flood risk. Repeatable or a comma list. seismic_risk_classarray of RsI | RsII | RsIII | RsIV | U1 | U2 | U3 | consolidated- Keep buildings an official list of technically assessed buildings gives any of these seismic risk classes:
RsI(the highest risk) toRsIV, the urgency classesU1(the most urgent) toU3older assessments set, orconsolidated(strengthened since). Only buildings on such a list, such as Bucharest's, have a class: a building on no list matches none, which says nothing of its risk. Repeatable or a comma list.
Response 200
OK
dataarray of BuildingSummaryrequiredbuilding_idstring (uuid)required- The building's baseray id.
addressstring or nullrequired- The building's address as a record states it (
address_evidencesays which kind): street and house number, a Romanian village'snr. 350where the record names no street, or a Czech municipality and number (Lhota 25), with the block where one is given. Null when no address of the building is on record; the nearest named road is thennearest_road, never this. nearest_roadstring or nullrequired- The named road nearest the building, given only where no address of it is on record (
addressis then null). It helps find the building but is not its address: no house number is known. address_evidenceaddress_record | business_listing or nullrequired- What kind of record
addresscomes from:address_record(an address record of the building) orbusiness_listing(a listing of a business at the building, not an address record of it). Null whenaddressis null or the kind is unknown. address_corroborationcorroborated | single_source | conflicting or nullrequired- How other records back the house number of
address, as theaddress_corroborationfilter reads it:corroborated(an independent record gives the same number),single_source(only one record) orconflicting(another record gives another number). Null without a house number. postal_codestring or nullrequired- The official postcode of the building's address; null when none is on record.
localitystring or nullrequired- Town, city or village.
countrystring or nullrequired- ISO 3166-1 alpha-2 country code.
latitudenumberrequired- Latitude of the building's centre, WGS84.
longitudenumberrequired- Longitude of the building's centre, WGS84.
categoryresidential_house | apartment_block | commercial | industrial | public | agricultural | ancillary | unknownrequired- Building category;
ancillaryis an annex or outbuilding. category_evidenceconfirmed | corroborated | inferred | conflicting | unconfirmedrequired- How firmly
categoryis known:confirmed(an official register states it),corroborated(several sources agree),inferred,conflicting(sources disagree) orunconfirmed(always so forunknown). building_typestring or nullrequired- The building's granular type where a record states one, as the
building_typefilter reads it, e.g.office,warehouse,school,apartments; null when none is stated. roof_shapestring or nullrequired- The roof's shape, as the
roof_shapefilter reads it, e.g.gabled,hipped,flat; null when unknown. footprint_area_m2numberrequired- Area of the building's outline, in m². It is the ground footprint only where the outline is drawn at the walls (
outline_referencefootprinton the building's detail); an outline drawn at the roof's edge (roof_edge) takes in the eaves and is larger. heightHeight or any or nullrequired- Height; null when unknown.
metresnumberrequired- Height in metres.
basismeasured | stated | estimatedrequiredmeasured(the building itself was measured),stated(a record gives it: an official building catalogue, crowd mapping or the dataset of the building's outline) orestimated(modelled).
volume_m3number or nullrequired- Volume, in m³; null when unknown.
volume_basismeasured | estimated or nullrequired- Whether the volume is measured or estimated; null with the volume.
floor_areaFloorArea or any or nullrequired- Floor area, with what it rests on and what it counts; null when unknown.
square_metresnumberrequired- Floor area, in m².
basismeasured | stated | estimated or nullrequiredstated(a record states it for the building) orestimated(modelled: the footprint, or a record's built area, times the floors); null when unknown.scopegross_whole_building | net_whole_building | gross_full_storeys | gross_above_ground or nullrequired- What the figure counts:
gross_whole_building(every storey, walls included),net_whole_building(the usable area of every storey, walls excluded),gross_full_storeys(the ground floor and every full storey, walls included; the basement and the attic are not counted) orgross_above_ground(the footprint times the floors above ground, walls included); null when unknown.
floorsinteger or nullrequired- Floors above ground; null when unknown.
floors_including_undergroundinteger or nullrequired- Only where
floorsis unknown: the floors above and below ground counted together, as a building register states them (Czechia's counts them so, a habitable attic as one). How many of them are above ground is not on record. Null otherwise. construction_yearinteger or nullrequired- The year a register states the building was completed; null when none states it.
completed_by_yearinteger or nullrequired- Where a register dates the building only by a census period: the last year of that period, the year it stood by. Null otherwise.
dwellingsinteger or nullrequired- Dwellings, where known; null when unknown.
existing_solar_panelsExistingSolarPanelsrequired- Whether solar panels are already on the roof, as a dated photo of the roof shows it. This is the photo alone:
solar_presencesettles it with the registers of connected installations, which outrank a photo. statusdetected | none_seen | unclear | not_checkedrequireddetected,none_seen,unclear, ornot_checked(never checked, or the photo was too coarse to check).photo_datestring (date) or nullrequired- Date of the photo checked; null when undated or never checked.
confidencenumber or nullrequired0–1- The check's confidence in its result, 0 to 1; null when not checked.
analysed_onstring (date) or nullrequired- The day the photo was checked for panels; null when never checked.
photo_resolution_cmnumber or nullrequired≥ 0- How fine the photo is, in centimetres per pixel; a photo too coarse to check is why a roof stays
not_checked. Null when not known.
solar_presenceregistered | detected | registered_at_address | none_seen | unclear | unknownrequired- Whether the building carries solar panels, settled across the official registers of connected solar installations and the roof photo of
existing_solar_panels. A register entry is the stronger evidence: a photo may predate an installation or miss it.registered: a register states an installation at the building's address, and the building alone holds that address or its own photo shows the panels.detected: panels are seen in the photo and no register states an installation.registered_at_address: a register states an installation at an address this building shares with others (registered_solar.address_building_countof them) and its photo shows none, so the register does not say which roof carries the panels: not a plain yes.none_seen: a photo detailed enough shows no panels and no register states an installation.unclear: the photo is unclear and no register states one.unknown: neither says. A building no register names is never thereby without solar: an installation may be off the grid, or registered under an address written otherwise. Thesolar_presenceandexclude_solar_presencefilters ofGET /buildingsread this field. registered_solarRegisteredSolar or any or nullrequired- The solar installations official registers state at the building's address; not null exactly when
solar_presenceisregisteredorregistered_at_address. Null says nothing of the roof. installation_countintegerrequired≥ 1- Installations registered at the address.
installed_power_kwnumber or nullrequired- Installed power in kW: the installations' sum where every one states its own, null otherwise, never a partial sum.
export_power_kwnumber or nullrequired- Power approved to feed the grid, in kW: the installations' sum where every one states its own, null otherwise.
storage_capacity_kwhnumber or nullrequired- Energy storage in kWh: the sum where every installation that stores states its capacity, null otherwise; often null even where
has_storageis true. has_storageboolean or nullrequired- True where an installation is stated to store energy, false where every installation is stated to store none, null where the register does not say. A register of generation licences does not record storage.
first_connected_onstring (date) or nullrequired- The earliest date the installations state; null when not stated, or when a register states only the year (
establishment_year), which is then given asfirst_connected_yearalone. What it dates is inkinds: a connection certificate forgrid_connection, the start of the current holder's licence forgeneration_licence, when the plant may be older. latest_connected_onstring (date) or nullrequired- The latest date the installations state, of the same meaning as
first_connected_on, and the same date for a single installation. first_connected_yearinteger or nullrequired- The year of the earliest date the installations state, given whenever a date is. Where a register states only the year (
establishment_yearinkinds) it is the only date given:first_connected_onandlatest_connected_onare then null. Null when nothing is stated. latest_connected_yearinteger or nullrequired- The year of the latest date the installations state, of the same meaning as
first_connected_year, and the same year for a single installation. address_building_countintegerrequired≥ 1- Buildings holding the address the register names, this one included. Of several installations it is the fewest: one at an address the building alone holds is its own.
shares_addressbooleanrequired- True when
address_building_countis above 1: the register then does not say which of the buildings carries the panels. kindsarray of grid_connection | generation_licence | establishment_yearrequired- What the registers record, which says what the dates mean.
grid_connection: a grid operator's list of connected installations, dated by the connection certificate.generation_licence: a regulator's generation licences, dated by the start of the current holder's licence, so the plant may be older and the date is never when it was installed.establishment_year: a building register's installations, dated by the year the installation was established as an owner or a municipality states it, never by its connection; only the year is stated, so the dates are null and onlyfirst_connected_yearandlatest_connected_yearare given. Usually one kind; empty only when the kind could not be read. reported_throughstring (date)required- The last day of the latest month the registers report: an installation entered after it is not yet listed.
solar_potentialSolarPotential or any or nullrequired- Rooftop solar potential; null where the roof has not been modelled.
max_panel_countinteger or nullrequired- Solar panels that fit on the roof.
max_capacity_kwpnumber or nullrequired- Capacity of those panels, in kWp.
yearly_energy_kwhnumber or nullrequired- Energy they would produce in a year, in kWh.
usable_roof_area_m2number or nullrequired- Roof area usable for panels, in m².
co2_savings_kg_per_yearnumber or nullrequired- CO₂ the installation would save, in kg a year.
basismeasured | measured_cut_to_outline | estimated or nullrequiredmeasuredwhere the figures come from the roof itself as measured: a surface model read over it, or roof planes an open survey measured on the building (roof_analysis.roof_surveysays how).measured_cut_to_outlinewhere the measured roof took in the roofs attached to the building (a terraced or semi-detached house) and was cut to the building's outline: its planes and panels were measured, but each is kept or dropped whole by where its centre lies, so the figures approximate the building's own part.estimatedwhere they are modelled from the footprint and sunshine. Null when not said.
registered_business_countintegerrequired≥ 0- Active businesses whose registered office is the building's address. Never ownership or occupancy.
registered_business_employeesstring or nullrequired- The largest stated size of a business registered at the address, as the
registered_business_employeessort and filters read it: an exact count (12), a band (10–49) or an open top band (1000 or more); null when none is stated. registered_business_turnoverTurnover or any or nullrequired- The largest latest turnover of a business registered at the address, as the
registered_business_turnoversort and filters read it; null when none is on record. amountintegerrequired- Turnover, in whole units of
currency. currencystring or nullrequired- ISO 4217 currency of the statement.
financial_yearinteger or nullrequired- The financial year of the statement.
flood_zone5_year | 10_year | 20_year | 50_year | 100_year | 100_year_climate_change | 500_year | 1000_year | 10000_year or nullrequired- The most frequently flooded zone of an official flood hazard map the building lies in, named by the return period of its flood;
100_year_climate_changeis the 1-in-100-year flood under the climate the map projects. Null means outside every zone only whereflood_zone_mappedis true; elsewhere the zone is unknown. flood_zone_mappedbooleanrequired- True where a served flood hazard map covers the building. Flood maps are served only where their licence allows it; where none covers the building this is false and its flood zone is unknown, never "no flood risk".
flood_zone_sourcestring or nullrequired- The credit and the reading the flood map's publisher requires wherever its zone is shown, such as Denmark's "Kilde: Kystdirektoratet, Kystplanlægger.dk" with its note that the zone is a screening, never an assessment of the property. Null where no served map covers the building, or its publisher requires none.
seismic_design_acceleration_gnumber or nullrequired- The design peak ground acceleration of the building's site, in g, as the national seismic design code maps it (P100-1/2013 in Romania); null when unknown.
seismic_risk_classRsI | RsII | RsIII | RsIV | U1 | U2 | U3 | consolidated or nullrequired- The seismic risk class an official list of technically assessed buildings gives the building:
RsI(the highest risk) toRsIV, the urgency classesU1(the most urgent) toU3older assessments set, orconsolidated(strengthened since). Null when the building is on no such list, which says nothing of its risk. seismic_risk_assessment_yearinteger or nullrequired- The year of the assessment that set
seismic_risk_class; null when not stated. owner_typeprivate_person | social_housing | company | association | cooperative_housing | municipality | region | state | other or nullrequired- The kind of owner the building's property has on record, never who owns it:
private_person(private persons or a partnership of them),social_housing(a non-profit social housing organisation),company,association(an association, foundation or self-owned institution),cooperative_housing(a housing co-operative),municipality,region,state, orother(any other owner, or owners of several of these kinds together; nothing more is on record). Null means unknown: no record states one kind for the building, as for a building divided into flats owned one by one. app_urlstring (uri)required- The building in the baseray app.
metaPaginationMetarequiredtotalintegerrequired≥ 0- Buildings matching, counted up to 10,000.
total_is_cappedbooleanrequired- True when counting stopped at 10,000; narrow the box for an exact total.
limitintegerrequired- The page size used.
offsetintegerrequired- The offset used.
sortvolume | area | height | registered_business_turnover | registered_business_employeesrequired- The ranking used.
linksLinksrequirednextstring (uri) or nullrequired- The next page's URL; null on the last page.
Errors
- 400
- A parameter is missing, malformed or out of range (
invalid_parameter). - 401
- No API key, or one that does not work:
missing_api_key,invalid_api_key,revoked_api_keyorexpired_api_key. - 402
insufficient_credits: the answer's buildings need more credits than the workspace has left this month. Nothing was returned or charged.- 403
- The key may not do this:
insufficient_scope, orworkspace_access_revokedwhen the key's creator no longer belongs to its workspace. - 429
rate_limited(the key's per-minute limit) orquota_exceeded(the workspace's daily quota).- 503
- The building catalogue is unavailable right now (
upstream_unavailable); retry afterRetry-Afterseconds.
Every error has the same shape. Error codes.