Biodiversity Data from iNaturalist and GBIF – Straight into Your GIS

Species occurrence records are everywhere. Getting them out of web portals and into your GIS has always been the friction point. NextGIS Toolbox offers two tools to solve this problem.

Key Takeaways: 

Two Sources, Two Different Strengths

GBIF and iNaturalist are not interchangeable, and the choice between them changes what you get.

GBIF (Global Biodiversity Information Facility) is an intergovernmental data infrastructure that aggregates occurrence records from over 2,500 institutions worldwide – natural history museums, herbaria, university collections, research stations, and citizen science platforms including iNaturalist. Its collection spans several centuries: the oldest records are 18th-century museum specimens; the newest arrived this week. If you need the most complete picture of a species’ documented range across time, GBIF is the right starting point.

iNaturalist is a citizen science platform where naturalists photograph and log wildlife sightings. An observation reaches Research Grade once the community agrees on the identification – typically two or more agreeing IDs from other users. Research-grade observations are shared with GBIF on a weekly basis, but using the iNaturalist tool directly gives you fresher data, photo documentation on every record, and granular quality filtering unavailable through GBIF.

The key relationship: iNaturalist data flows into GBIF, making GBIF a superset. However, not all iNaturalist data is uploaded into GBIF, so choosing between the tools is not a question of better or worse – it is a question of what kind of evidence you need.

The following table compares the two data sources and the NextGIS tools available for data processing.

GBIFiNaturalist
Data sources2,500+ institutions: museums, herbaria, research stations, citizen science (incl. iNaturalist)Community naturalists on the iNaturalist platform
Historical depthCenturies of records, including specimens and fossilsPrimarily post-2010
Record typesObservations, preserved specimens, fossils, living specimensObservations only
Photo requirement Optional filter All research-grade records have photos 

Reach for GBIF when you need historical range data, institutional specimen records, records predating citizen science platforms, or a query spanning multiple data types and institutions.

Reach for iNaturalist when you need recent, photo-verified sightings, want to filter by community verification quality, or are monitoring a species that the citizen science community actively documents.

NextGIS Toolbox

NextGIS Toolbox is a growing collection of browser-based geoprocessing tools. There is nothing to install – each tool runs in the cloud, takes a form input, and returns a result you can download and open in QGIS or any GIS that reads GeoPackage. The collection covers format conversion, satellite imagery acquisition, terrain analysis, and now direct access to the two largest open biodiversity data repositories in the world.

Toolbox is free to use with a NextGIS account. Each tool is also available via the Toolbox API, with Python SDK examples and raw HTTP examples on every tool page.

Biodiversity Mapping Tools in NextGIS Toolbox

GBIF Species Observations to Geodata

The tool queries the public GBIF API and returns matching records as a GeoPackage point layer named occurrences. Hard limit: 10,000 records per run.

Inputs:

  • Bounding box – draw on the map or enter decimal degrees (W, S, E, N in WGS84). 
  • Country code – ISO 3166-1 alpha-2 (e.g. DE, FR, IT). Combines with the bounding box as AND.
  • Taxon name – scientific name (e.g. Canis lupus, Fagus sylvatica, Coleoptera).
  • Kingdom – Animalia, Plantae, Fungi, Bacteria, Archaea, Chromista, Protozoa, or Viruses. Combines with taxon name.
  • Record type – Wild observations & specimens (default, excludes zoo and botanical garden records); or include living specimens.
  • Observation date range – lower and upper bounds in YYYY-MM-DD.
  • Only with photo – restrict to records with at least one attached image.
  • Only commercially reusable licences – restrict to CC0 or CC-BY, excluding CC-BY-NC.
  • Exclude records with geospatial issues – removes records GBIF has flagged for geospatial quality problems. On by default.

Outputs: GeoPackage (point layer occurrences), report, JSON.

Pro Tip: After running any Toolbox tool, you can use the “Re-run” button to view and adjust any parameters without re-entering them – useful for narrowing a query that returns more records than expected, or comparing results across date ranges. 

iNaturalist Species Observations to Geodata

The tool queries the public iNaturalist API and returns matching records as a GeoPackage point layer named observations. Hard limit: 10,000 records per run.

Inputs:

  • Bounding box – draw on the map or enter decimal degrees (W, S, E, N in WGS84).
  • Taxon name – scientific or common name (e.g. Bubo bubo or Eagle-owl). 
  • Iconic taxon group – Birds, Mammals, Plants, Insects, Fungi, Reptilia, Amphibia, and others. Combines with taxon name.
  • Quality grade – Research Grade, Needs ID, or Casual. Research Grade is the appropriate choice for analytical work.
  • Only wild – exclude captive and cultivated observations.
  • Observation date range – lower and upper bounds in YYYY-MM-DD.

Outputs: GeoPackage (point layer observations), report, JSON.

Each record in the output includes taxon name and rank, observation date and time, observer, quality grade, positional accuracy, license code, and the iNaturalist observation URI.

Deep Dive: Mapping the Return of the European Wolf in Germany

The European wolf (Canis lupus) in Germany illustrates what these two datasets – and tools – actually do differently.

Wolves were effectively absent from Germany for roughly 150 years before a pair from Poland established the first pack in Saxony in 2000. The population has since spread westward – from Brandenburg and Lusatia into Lower Saxony, Saxony-Anhalt, and Bavaria – in a pattern that is geographically legible on a map.

If we run the GBIF tool with no date filter (country code DE, taxon Canis lupus, Kingdom Animalia), we will see the full historical record – pre-20th-century museum specimens showing the original range across Germany, followed by a visible absence, followed by modern field observations documenting the recovery. The dated gap in the data is as informative as the records themselves.

One way to visualize the dynamics is to style the layer using a graduated color ramp based on the year of observation: Symbology → Graduated → expression year(“eventDate”) → sequential color ramp (YlOrRd or Blues) → Natural Breaks, 5 classes → Classify. This produces a single map where color encodes time – older records in lighter tones, recent records in the vivid end – without requiring multiple layers.

European wolf sightings in 1835-2026 (GBIF) with an example of a GBIF record for one sighting

Alternatively, you can run two separate queries – one for 2010 (only two records) and one for a more recent year. The contrast between the two maps makes the population growth concrete. 


European wolf sightings in 2010 (GBIF)

European wolf sightings in 2025 (GBIF)

To see what iNaturalist data can offer, run the iNaturalist tool setting the bounding box around Germany and selecting Research Grade and Only wild. The result is a different view of the same species: community-verified sightings with photo documentation. 

European wolf observations from the earliest available record through 2026 (iNaturalist) with an example of an iNaturalist record for one observation

Overlaying both layers in QGIS – iNaturalist as orange dots and GBIF as blue dots on top – shows the two sources in relation to each other. The next section answers the question why many orange dots are not covered by corresponding blue dots.

All available European wolf observations recorded by GBIF (color-graded blue) vs. iNaturalist (orange)

Working with the Data: Pitfalls and Practical Tips

Downloading occurrence data is the easy part. The harder part is knowing what you’re looking at once it lands in QGIS. The following covers the most common sources of confusion when working with iNaturalist and GBIF data side by side.

Coordinate Precision: positional_accuracy vs. public_positional_accuracy

iNaturalist outputs include two accuracy fields that serve different purposes.

positional_accuracy is the GPS precision of the original observation in meters – a measure of device accuracy at the moment of recording. A value of 8 means the observer’s GPS reading was accurate to within 8 meters. This reflects the quality of the observation equipment, not anything about how the coordinate is shared.

public_positional_accuracy is the accuracy of the coordinate that is actually exposed publicly. For most observations these two values are the same. For obscured observations, public_positional_accuracy is set to the diagonal of a 0.2° × 0.2° grid cell – an uncertainty radius of roughly 25–30 km depending on latitude. When you see a very large value in this field, the point on your map is randomized within that cell, not the true location.

In practice: check public_positional_accuracy before drawing conclusions from point positions. Small values (under a few hundred meters) mean you can trust the coordinate. Large values (tens of thousands of meters) mean the point shown is somewhere within a cell roughly the size of a small island, and spatial analysis at local scale is not meaningful for that record.

Geoprivacy: When Coordinates are Intentionally Obscured

iNaturalist operates two separate geoprivacy systems:

  • Observer geoprivacy: an individual can mark their own observation as obscured or private for personal reasons, such as an observation made at their home. The platform never shares the true coordinates of these records without explicit permission from the observer.
  • Taxon geoprivacy: iNaturalist automatically obscures coordinates for species that are vulnerable to poaching, collecting, or disturbance if their locations are publicly known. Wolves, rare orchids, certain reptiles, and commercially collected fungi are among the taxa that may carry automatic obscuring. When taxon geoprivacy is active, the displayed coordinate is replaced with a random point within a 0.2° × 0.2° cell, and the locality description and date may be coarsened as well. The true coordinates are stored privately and may be accessible to researchers who affiliate with an iNaturalist network node or are trusted by the observer.

Example of an obscured observation (iNaturalist)

For full documentation of how iNaturalist geoprivacy works, including how obscured and private settings differ and when restricted data is shared with the conservation community, see the iNaturalist geoprivacy help article.

GBIF handles sensitive species differently: coordinate generalization is delegated to the data publishers – individual museums, national agencies, and dataset curators – rather than managed centrally. There is no universal sensitive species list at the GBIF level, and obscuring practices vary between publishers and countries. GBIF publishes best-practice guidance but does not enforce a standard.

Why Some iNaturalist Records Don’t Appear in GBIF

Research Grade is necessary but not sufficient for a record to reach GBIF. The full pipeline requires the following:

  1. The observation must be Research Grade
  2. The observation must carry an open license – CC0, CC-BY, or CC-BY-NC. Observations with a NULL license_code or a more restrictive license are excluded from the GBIF export regardless of quality grade.
  3. iNaturalist exports to GBIF once a week; GBIF ingests the data approximately once a week after that. Total lag can reach two weeks or more during maintenance periods.

The wolf cluster east of Berlin that appeared in iNaturalist but not in GBIF was caused by NULL values in the license_code field of those records – a licensing gap, not a timing or coordinate issue. This is worth checking whenever you notice records in one dataset that are absent from the other: filter the iNaturalist layer in QGIS on license_code IS NULL to identify unlicensed records before drawing conclusions about discrepancies.

Most of the European wolf observations that were not submitted to GBIF had NULL values under license_code

Cross-Referencing Records

If you are working with both datasets simultaneously and need to identify records that appear in both – for deduplication, validation, or combining attributes – the link is the iNaturalist observation ID. The id field in the iNaturalist output corresponds to the catalog_number field in the GBIF output for records that originated on iNaturalist. Joining on these fields in QGIS or a database allows you to match records across datasets and avoid double-counting species observations in combined analyses.

Pro Tip: If you would like to use the same dataset in other applications, NextGIS Toolbox provides tools that allow you to convert your vector layers into more than 80 formats, including CSV, XLSX, and ODS, and to perform the reverse operation – import your CSV, XLSX, or ODS file into a vector layer.

Summary

  • NextGIS Toolbox includes two browser-based tools for downloading species occurrence data as GeoPackage layers – one from GBIF, one from iNaturalist – with no software installation required.
  • GBIF aggregates records from 2,500+ institutions worldwide, including museum specimens, fossils, and citizen science data. Best for historical range analysis and multi-source queries.
  • iNaturalist provides direct access to community-verified observations with photo documentation and quality grade filtering. Best for recent and ongoing range monitoring.
  • Both tools share a hard limit of 10,000 records per run; use the re-run button to adjust parameters and narrow queries without starting over.
  • iNaturalist data flows into GBIF weekly, but only Research Grade records with CC0, CC-BY, or CC-BY-NC licenses are included. Records with NULL license_code fields are excluded regardless of quality grade.
  • Check public_positional_accuracy before spatial analysis. Large values indicate obscured coordinates – the displayed point may be tens of kilometers from the true location.
  • The id field in iNaturalist corresponds to catalog_number in GBIF, enabling cross-referencing between datasets.

Frequently asked questions

Do I need a GBIF or iNaturalist account to use these tools? No. Both tools query public APIs that do not require authentication. You need a free NextGIS account to access NextGIS Toolbox.

What format are the outputs in? Both tools produce a GeoPackage file – point layer occurrences for GBIF, observations for iNaturalist. GeoPackage opens natively in QGIS.

Can I query multiple species in one run? Not directly – both tools accept one taxon name per run. For multi-species projects, run the tool once per taxon and merge the resulting layers in QGIS using Vector → Data Management → Merge Vector Layers.

What does the 10,000-record limit mean in practice? For locally distributed or rare species, 10,000 is rarely a constraint. For common species over large areas, the ceiling is easy to reach. The tool report states how many records exist for your query. Work around the limit by narrowing the bounding box, tightening the date range, or filtering by country code (GBIF only).

Can I use these tools via API? Yes. NextGIS Toolbox exposes all tools via API. Each tool page includes a Python code tab with examples using the Toolbox SDK (pip install toolboxsdk), along with raw HTTP request examples for other environments.

Resources

Comments are closed.