Tutorial 2: Taxa¶
This notebook will give a quick introduction to searching taxa.
from rich import print
from pyinaturalist import (
enable_logging,
iNatClient,
pprint,
)
enable_logging()
client = iNatClient()
Basic taxon search¶
The taxa search
can be used to search by name, rank, and several other criteria.
Let’s say you partially remember either a genus or family name that started with ‘vespi’-something.
Use the q parameter to search by name:
taxa = client.taxa.search(q='vespi', rank=['genus', 'family']).all()
Taxon data¶
As with observations, there is a lot of information in the response:
print(taxa[0])
Taxon( id=52747, ancestor_ids=[48460, 1, 47120, 372739, 47158, 184884, 47201, 124417, 326777, 48740, 52747], extinct=False, iconic_taxon_id=47158, iconic_taxon_name='Insecta', is_active=True, matched_term='Vespidae', name='Vespidae', observations_count=1246088, parent_id=48740, preferred_common_name='Hornets, Paper Wasps, Potter Wasps, and Allies', rank_level=30, rank='family', taxon_changes_count=0, taxon_schemes_count=2, wikipedia_url='http://en.wikipedia.org/wiki/Vespidae', ancestors=[], children=[], conservation_status=None, conservation_statuses=[], default_photo=Photo( id=26329814, license_code='CC-BY-SA', url='https://inaturalist-open-data.s3.amazonaws.com/photos/26329814/square.jpg' ), establishment_means=None, listed_taxa=[], taxon_photos=[] )
Previewing data¶
And we can get a condensed preview with pprint():
pprint(taxa)
ID Rank Scientific name Common name ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 52747 family 🐝 Vespidae Hornets, Paper Wasps, Potter Wasps, and Allies 1312989 genus 🐠 Trichosomus 84737 genus 🦋 Vespina 250566 genus 🐝 Vespita 646195 genus 🪰 Vespiodes 1399531 genus 🪲 Vespinitocris 1007575 genus 🦋 Vespitinea
Searching by parent ID¶
Oh, that’s right, it was ‘Vespidae’! Now let’s find all of its subfamilies. We can run another search by parent ID, using the taxon ID from the results above:
subfamilies = client.taxa.search(parent_id=52747).all()
pprint(subfamilies)
ID Rank Scientific name Common name ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 343248 subfamily 🐝 Polistinae Paper Wasps 84738 subfamily 🐝 Vespinae Hornets and Yellowjackets 119344 subfamily 🐝 Eumeninae Potter and Mason Wasps 121511 subfamily 🐝 Masarinae Pollen Wasps 522215 subfamily 🐝 Stenogastrinae Hover Wasps 343388 subfamily 🐝 Euparagiinae 1633740 genus 🐝 Ischnogaster
Autocomplete search¶
There is a taxon autocomplete text search endpoint, which is intended for autocomplete interfaces like the one on iNaturalist.org:

But it also provides an easy way to search the iNaturalist taxonomy database by taxon name. Here is a quick example that will run searches from console input. Try a few different searches:
while True:
query = input('> ')
if query == 'exit':
break
results = client.taxa.autocomplete(q=query).all()
pprint(results)
ID Rank Scientific name Common name ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 527573 genus 🕷️ Opilio 47367 order 🕷️ Opiliones Harvestmen 84644 species 🕷️ Phalangium opilio European Harvestman 527419 subfamily 🕷️ Opilioninae 527576 species 🕷️ Opilio canestrinii Canestrini's Harvestman 541903 species 🕷️ Pholcus opilionoides Opilion-like Cellar Spider 488349 species 🕷️ Rilaena triangularis Spring Harvestman 527483 species 🕷️ Paroligolophus agrestis 527479 species 🕷️ Oligolophus tridens 1500492 tribe 🕷️ Opilionini 57325 family 🕷️ Sclerosomatidae Sclerosomatid Harvestmen 527578 species 🕷️ Opilio saxatilis 533285 subfamily 🕷️ Leiobuninae 527577 species 🕷️ Opilio parietinus 144132 order 🕷️ Opilioacarida 245164 family 🕷️ Opilioacaridae 57396 species 🕷️ Dicranopalpus ramosus Fork-palped Harvestman 324310 species 🕷️ Mitopus morio Saddleback Harvestman 527919 species 🕷️ Opilio transversalis 527574 species 🕷️ Opilio ruzickai 71583 family 🌱 Opiliaceae opilia family 527575 species 🕷️ Opilio dinaricus 527798 species 🕷️ Odiellus spinosus 249965 genus 🕷️ Opilioacarus 297844 species 🕷️ Opilioacarus texanus 525996 species 🕷️ Leiobunum limbatum 527732 species 🕷️ Lacinius dentiger 262076 species 🕷️ Diguetinus raptator 249258 genus 🕷️ Paranelima 527905 species 🕷️ Opilio insulae