Getting started with inatpick

Overview

inatpick provides a simple workflow for downloading photos and metadata from iNaturalist via its API. The main functions are:

Function Description
inat_search_taxon() Find a taxon ID by name
inat_search_place() Find a place ID by name
inat_fetch() Fetch observations from the API
inat_download() Download photos and metadata to a local folder
inat_metadata() Export observation metadata to CSV
library(inatpick)

Example: Drosera in the United Kingdom

In this example we download research-grade, CC-licensed observations of sundews (Drosera genus) recorded in the United Kingdom by iNaturalist user andresrb, filtering for observations annotated with green leaves or open flowers.

Step 1 — Find taxon and place IDs

Search by name to find the iNaturalist IDs. Use the rank argument to filter results to a specific taxonomic level:

# Search for the genus Drosera
inat_search_taxon("Drosera", rank = "genus")
# → id = 51935

# Search for the place
inat_search_place("United Kingdom")
# → id = 6857

Step 2 — Fetch observations

Fetch research-grade, CC-licensed observations with multiple annotations. Each annotation is fetched separately and results are combined automatically, with duplicates removed:

obs <- inat_fetch(
  taxon_id      = 51935,        # Drosera genus
  place_id      = 6857,         # United Kingdom
  user_login    = "andresrb",
  annotation    = c("green_leaves", "flowers"),
  quality_grade = "research",
  licensed      = TRUE
)

nrow(obs)  # how many unique observations?

Step 3 — Download photos and metadata

inat_download() requires an out_dir — here we use a folder in the working directory, but tempdir() works too for a temporary location. By default it also saves a metadata.csv to the same folder. The size argument controls resolution:

Size Resolution Best for
"square" 75px thumbnails
"small" 240px quick preview
"medium" 500px general use
"large" 1024px research (default)
"original" full publication

Files are named obs{observation_id}_{photo_id}_{size}.jpg.

inat_download(
  obs,
  out_dir = "drosera_uk",
  size    = "large"
)

Already-downloaded files are skipped by default (overwrite = FALSE).

To download photos only without metadata:

inat_download(obs, out_dir = "drosera_uk", metadata = FALSE)

Step 4 — Export metadata separately

If you need the metadata CSV in a different location:

inat_metadata(obs, path = "drosera_uk.csv")

The CSV includes observation ID, date, taxon name, common name, observer, place, coordinates, URL, and number of photos.


Finding taxon and place IDs

Use the search functions or find IDs directly in iNaturalist URLs:


All annotation options

# See all available annotation labels and their IDs
inat_annotations

Further filtering options

# Research-grade only, flowering, in July
obs_july <- inat_fetch(
  taxon_id      = 51935,
  place_id      = 6857,
  annotation    = "flowers",
  quality_grade = "research",
  month         = 7
)

# All observations worldwide — use with caution for common taxa
obs_world <- inat_fetch(taxon_id = 51935)

Photo licenses & attribution

Photos downloaded from iNaturalist retain their original licenses as set by individual observers (CC0, CC-BY, CC-BY-NC, etc.). Use licensed = TRUE in inat_fetch() to restrict to CC-licensed photos only. Always credit the observer and respect the license terms when using images in research or publication.

See iNaturalist Terms of Service for more information.