The Explore page (aka Observations search) at https://www.inaturalist.org/observations is the primary way for iNaturalist users to search for a set of observations. The page has multiple filters available in the user interface that one can use. Each time a filter is applied, you’ll notice the search URL (AKA web address) changes. For example, a search for all snake observations…
…creates this URL: https://www.inaturalist.org/observations?place_id=any&taxon_id=85553
This URL is basically a set of search instructions for iNaturalist and it will always show all verifiable snake observations worldwide if you paste it into a browser (try it!).
By editing URLs like this, you can get search results not available through the user interface on the website. What follows are examples of different URLs you can use to create more complicated searches than are available through the user interface. And remember, once you have a search you like, you can always bookmark the URL to save the search.
Because this is a wiki post, feel free to add your own examples!
Search for multiple taxa
We’ll start off with something simple.
You’ll notice the last part of the URL above says
taxon_id=85553. That number is iNaturalist’s ID for the taxon Serpentes. You can always find that number by going to the taxon’s page and looking at the URL (e.g. https://www.inaturalist.org/taxa/85553-Serpentes for Serpentes) or searching for it on Explore and looking at the URL.
So if you want to search for more than one taxon at a time, you can edit that URL to include multiple taxon IDs. Let’s say I wanted to search for all snakes and all crocodilians (https://www.inaturalist.org/taxa/26039-Crocodylia). I will have to change
taxon_ids and I can add another taxon number to it by using a comma, so I would end up with:
You can append more taxon IDs to this URL to search for more taxa. For example, here are all snakes, crocodilians, and nudibranchs:
Search multiple places
This is pretty similar the multiple taxa URL. Like taxa, places have their own unique ID number, which you can find by searching for it and looking at the resulting URL. For example, here are all observations in Hong Kong:
So Hong Kong’s ID number is 7613. If I wanted to search for observations in both Hong Kong and Macao, all I have to do is append Macao’s ID number to the end:
You can then start combining place and taxa search by using an ampersand (&). Here is a search for all snakes, crocodilians, and nudibranchs in Hong Kong and Macao:
Search by bounding box or circle
If you’d like to search an area that doesn’t have a place ID, you can put in a rectangular bounding box or a circle with a defined center and radius. These must be added to the URL manually.
For example, https://www.inaturalist.org/observations?nelat=30.849458&nelng=-94.939413&swlat=30.220087&swlng=-95.792015 finds observations in a rectangular area north of Houston, Texas. You can use Google maps to find the lat/long points – just click on the map and it will give you the numbers.
And https://www.inaturalist.org/observations?lat=38.92&lng=-77.07&radius=16 finds observations around Washington, DC.
Exclude one or more taxa, places, and/or observers from a search
These are not available in any of the Filter windows, and must be added to the URL manually. They work like
place_id (above), but will exclude observations from a list of taxa, places, and/or observers. (Look up the ID numbers the same way also.)
For example, I want to identify Asteraceae (47604) from Mono County California (1916), but not sagebrush or rubber rabbitbrush (genus Artemisia 52855 or species Ericameria nauseosa 57934) and not from the Sierra Nevada (52173) or the White Mountains (129416):
Of course, if any of your “with” and “without” parameters conflict, you should expect to get conflicting results! (or none at all).
Search by active identification
To find observations to which a particular ID has been added (even if that is not the consensus ID), use
For example, this should show observations which have an active Dysdera crocata ID, a commonly misidentified spider.
Search for a user’s IDs
If you want to see observations to which a a certain user has added an ID, use the
ident_user_id param. For example, here are all observations to which I have add an ID:
It also works in Identify:
Search for observation field values
You can specify observation fields and their values in the URL. For example, here are all of the observations with the observation field “Roadkill” set to “Yes”.
You can search for all obs with a field regardless of the field value:
or with a field and value:
You can easily combine that with other search strings. For example, the following shows all observations marked as being of insect herbivores of Ecualyptus.
The taxon ID for Insecta is 47158 and for Eucalyptus is 51815 (which you find from the URLs of their taxon pages, https://www.inaturalist.org/taxa/47158-Insecta and https://www.inaturalist.org/taxa/51815-Eucalyptus). The observation field used here is “Interaction->Herbivore of”. Note that the space in that field name needs to be replaced with a %20 in the URL so the browser doesn’t get confused.
Observation field view:
Observation field view for a value: (e.g. Fynbos in Habitats-s-afr):
https://www.inaturalist.org/observation_fields/7498?value=Fynbos (case sensitive)
Search for Annotations
&term_id= - the annotation group
- 1=Life Stage, 9=Sex, 12=Plant Phenology
&term_value_id= - the value within the group
- Life Stage: 2=Adult, 3=Teneral, 4=Pupa, 5=Nymph, 6=Larva, 7=Egg, 8=Juvenile, 16=Subimago
- Sex: 10=Female, 11=Male
- Plant Phenology: 13=Flowering, 14=Fruiting, 15=Budding
Both the group parameter and value parameter should be included in the URL. And term_value_id should be able to accept a comma-separated list of more than one value. (But correct this Wiki if discovered otherwise!)
To exclude observations with particular annotations, use the following similar to the above:
&without_term_id=the annotation group
&without_term_value_id=the value within the group
&project_id= is used by the standard filter window, and restricts a search to observations in a selected Project. This is also a good way to look up and copy the Project ID for use with other Project queries.
not_in_project= to find observations that are in a place and not in a project, for example, all beetles in NZ currently not in the NZ beetles project:
place_id=94916 New Zealand Zone
If a project is more complicated than just taxa in a place, you can filter observations based on matching the complete rule-set of a project, or on not matching it:
NOTE: these are from the iNaturalist API documentation found here (scroll down the page at that link). I haven’t specifically tested these. If they don’t work as expected, please reply to this post.