Skip to contents

The Global Biodiversity Information Facility (GBIF; provides tools to enable users to find, access, combine and visualise biodiversity data. galah enables the R community to directly access data and resources hosted by GBIF and several of it's subsidiary organisations, known as 'nodes'. The basic unit of observation stored by these infrastructures is an occurrence record, based on the Darwin Core' data standard (; however galah also enables users to locate and download taxonomic information, or associated media such images or sounds, all while restricting their queries to particular taxa or locations. Users can specify which columns are returned by a query, or restrict their results to observations that meet particular quality-control criteria.

For those outside Australia, 'galah' is the common name of Eolophus roseicapilla, a widely-distributed Australian bird species.


Piping functions

Lazy data manipulation

Download data

Look up information

Configure session



To get the most value from galah, it is helpful to understand some terminology. Each occurrence record contains taxonomic information, and usually some information about the observation itself, such as its location. In addition to this record-specific information, the living atlases append contextual information to each record, particularly data from spatial layers reflecting climate gradients or political boundaries. They also run a number of quality checks against each record, resulting in assertions attached to the record. Each piece of information associated with a given occurrence record is stored in a field, which corresponds to a column when imported to an R data.frame. See show_all(fields) to view valid fields, layers and assertions, or conduct a search using search_all(fields).

Data fields are important because they provide a means to filter occurrence records; i.e. to return only the information that you need, and no more. Consequently, much of the architecture of galah has been designed to make filtering as simple as possible. The easiest way to do this is to start a pipe with galah_call() and follow it with the relevant dplyr function; starting with filter(), but also including select(), group_by() or others. Functions without a relevant dplyr synonym include galah_identify()/identify() for choosing a taxon, or galah_geolocate()/ st_crop() for choosing a specific location. By combining different filters, it is possible to build complex queries to return only the most valuable information for a given problem.

A notable extension of the filtering approach is to remove records with low 'quality'. All living atlases perform quality control checks on all records that they store. These checks are used to generate new fields, that can then be used to filter out records that are unsuitable for particular applications. However, there are many possible data quality checks, and it is not always clear which are most appropriate in a given instance. Therefore, galah supports data quality profiles, which can be passed to galah_apply_profile() to quickly remove undesirable records. A full list of data quality profiles is returned by show_all(profiles). Note this service is currently only available for the Australian atlas (ALA).


Maintainer: Martin Westgate