Background
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 will 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!).
In order to keep the user interface from containing an overwhelming number of search parameters, editing the URL is the only way to access some of these results. 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! (If the Table of Contents changes, please be sure to replicate those changes in Part 2, and at the bottom of Part 1 if topics in Part 2 are involved.)
NOTES:
- The search methods below are only for Observations in explore or identify mode. Most will work in both contexts, but some may only work in one context or the other. Most can be combined in one search URL.
- Other searches (often less versatile) exist for things like comments, identifications, taxa, flags, taxon changes, etc.
- Searches may return fewer results than expected unless you first override certain default filters (quality_grade=needs_id, reviewed=false in Identify; verifiable=true in Explore; default place in either). Any or all these defaults can be overridden using the existing Filters window. To ensure that no default filters are limiting results you can also manually add the following to any search URL:
&quality_grade=any&reviewed=any&verifiable=any&place_id=any
- Because these URL parameters are based on the API, further information may be found in the API documentation
Contents (part 1)
WHAT (taxa and identifications)
Search for multiple taxa
Search multiple taxa using a list
Search for single taxon by name, synonym, or common name
Search for exact taxon (no descendants)
Search by active identification(s)
Search for observations that have no identifications
Search by taxon status (introduced, native, threatened)
WHERE (places and geography)
Search multiple places
Search by bounding box or circle
Search by location (positional) accuracy
Search by geoprivacy
Search for observations with or without georeferenced coordinates
Search for mappable/unmappable observations
WHEN (dates and times)
Search by date with time
Search by month(s) of year or day(s) of month
Contents (part 2)
WHO (observers and identifiers)
Search multiple observers
Search by identifier(s)
Search by account age (in weeks)
Search by multiple user license types
Other observation properties
Search for observations with or without media (photos, sounds)
Include both Captive and Wild observations
Search by observation numbers (id numbers)
Search for observation fields and values
Search for Annotations
Search by Description, Tag, Name, Place
Project-related queries
Search for Observations from iOS, Android, or Seek apps
More tools and tips
Search by exclusions (not place, not taxon, not observer, etc.)
Sort by Dates, Faves, or Randomly
Look up ID numbers
Change number of results per page
Change page language/locale
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_id
to taxon_ids
and I can add another taxon number to it by using a comma, so I would end up with:
https://www.inaturalist.org/observations?place_id=any&taxon_ids=85553,26039
You can append more taxon IDs to this URL to search for more taxa. For example, here are all snakes, crocodilians, and nudibranchs:
https://www.inaturalist.org/observations?place_id=any&taxon_ids=85553,26039,47113
You can also exclude taxa by using &without_taxon_id=
. For example, all snakes, crocodilians, and nudibranchs, but without vipers:
Search multiple taxa using a List
You can use Lists to restrict a search to particular taxa. For example, https://www.inaturalist.org/lists/1139967-quickspp is a list that is already set up. Using &list_id=XXXX
restricts the search to the taxa in XXXX list, so https://www.inaturalist.org/observations?list_id=1139967 brings back only results from the list linked above.
Search for single taxon by name, synonym, or common name
Use &taxon_name=
, omit any rank designations
- For a species: https://www.inaturalist.org/observations?place_id=any&taxon_name=Pinus+contorta
- For a subspecies: https://www.inaturalist.org/observations?place_id=any&taxon_name=Pinus+contorta+murrayana
- Above species: https://www.inaturalist.org/observations?place_id=any&taxon_name=Pinaceae
- Common name: https://www.inaturalist.org/observations?place_id=any&taxon_name=Clark’s+Nutcracker
- common names used for multiple taxa will only return the first taxon found, not all of the taxa using the name. For example, https://www.inaturalist.org/observations?place_id=any&taxon_name=daisy+fleabane only returns results for Erigeron strigosus, but not for Erigeron bellioides.
- Misspelled names, or names not in iNaturalist, will return results for all taxa.
- Only a single name can be requested
Search for exact taxon (no descendants)
(works in Identify only)
If you want to search for observations only at an exact taxon, you can use &exact_taxon_id=
in Identify mode. This is essentially equivalent to searching for that taxon, but also using the Rank filter for the rank of that taxon, i.e. it will not return observations of descendants. So this returns observations of Aves, but not identified to family, genus, species, etc.:
https://www.inaturalist.org/observations/identify?exact_taxon_id=3
Unlike a Filters search, however, you can show multiple exact taxa by separating them with commas. To see observations identified as Birds or Mammals (but not a descendant thereof) use
https://www.inaturalist.org/observations/identify?exact_taxon_id=3,40151
If you want to exclude one or more exact taxa, but keep their descendants, you can use &without_direct_taxon_id=
. This is all snakes except observations at the exact rank of vipers or pythons:
https://www.inaturalist.org/observations/identify?taxon_ids=85553&without_direct_taxon_id=30667,67532
Search by active identification(s)
To find observations to which a particular ID has been added (even if that is not the consensus ID), use ident_taxon_id=
.
For example, this should show observations which have an active Dysdera crocata ID, a commonly misidentified spider.
https://www.inaturalist.org/observations?ident_taxon_id=68912
You can also string together multiple taxa with ident_taxon_id_exclusive=
. For example, https://www.inaturalist.org/observations?ident_taxon_id_exclusive=46020,46017 will bring back observations that have identifications of both Sciurus carolinensis and Sciurus niger. And https://www.inaturalist.org/observations?ident_taxon_id_exclusive=46020,46017,46023 will return observations with IDs of S. carolinensis, S. niger, and S. griseus.
Search for observations that have no identifications
Observations of Bacteria, Archaea, Viruses, and Life show up under the Unknown category. To filter just for observation with no ID at all, use &identified=false
.
e.g. https://www.inaturalist.org/observations?place_id=1&identified=false
Search by taxon status (introduced, native, threatened)
To limit results to observations whose taxa are introduced, native, and/or threatened in their places, add
&native=
true|false|any (default is any
)
&introduced=
true|false|any (default is any
; true
is available in Filters panel)
&threatened=
true|false|any (default is any
; true
is available in Filters panel)
Notes:
&native=true
will not find only&introduced=false
, nor vice-versa. Results depend on the Establishment Means set in the appropriate place checklists.&native=true
finds taxa set to native or endemic.&native=false
finds taxa set to unknown or introduced.&introduced=true
finds taxa set to introduced.&introduced=false
finds taxa set to unknown, native, or endemic.&threatened=true
includes taxa that have a conservation status with an IUCN equivalent of NT (Near Threatened) or worse specified, regardless of the taxon geoprivacy setting. See Search by geoprivacy to combine taxon geoprivacy in the search.
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:
https://www.inaturalist.org/observations?place_id=7613
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:
https://www.inaturalist.org/observations?place_id=7613,10301
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:
https://www.inaturalist.org/observations?taxon_ids=85553,26039,47113&place_id=7613,10301
To exclude a place from your search, use ¬_in_place=
. This is a search for all snakes, crocodilians, and nudibranchs in the United States, but not in California:
https://www.inaturalist.org/observations?taxon_ids=85553,26039,47113&place_id=1¬_in_place=14
Search by bounding box or circle
If you would like to search an area that does not have a place ID, you can put in a rectangular bounding box or a circle with a defined center and radius. A bounding box search can be done by either using Explore to zoom on the map area you want and clicking “Redo search in map”, or by manually entering the coordinates into the URL. 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.
The circle has to be manually entered into the URL. For example, https://www.inaturalist.org/observations?lat=38.92&lng=-77.07&radius=16 finds observations in a 16 km circle around Washington, DC. You can use the circle tool of the ruler menu of Google Earth to draw a circle and to find out the center point.
Search by location (positional) accuracy
-
acc
: Boolean to filter on whether or not observations have apositional_accuracy
, e.g. https://www.inaturalist.org/observations?user_id=kueda&acc=false -
acc_above
: Show observations with positional_accuracy above a given value in meters, e.g. https://www.inaturalist.org/observations?user_id=kueda&acc_above=10000 -
acc_below
: Show observations with positional_accuracy below a given value in meters, e.g. https://www.inaturalist.org/observations?user_id=kueda&acc_below=3
Search by geoprivacy
There are two params here: geoprivacy
and taxon_geoprivacy
.
geoprivacy
: the observer has manually chosen the geoprivacy for the observation.
taxon_geoprivacy
: iNaturalist has chosen the observation’s geoprivacy due to the taxon’s conservation status.
You can use geoprivacy
and taxon_geoprivacy
in combination, but the results will be observations with both settings, i.e. it is an AND search, not an OR search.
The four values possible here are open
, obscured
, private
, and obscured_private
.
-
Obs by a single user where geoprivacy is obscured: https://www.inaturalist.org/observations?user_id=kueda&geoprivacy=obscured
-
Obs by a single user where geoprivacy is obscured or private: https://www.inaturalist.org/observations?user_id=reuvenm&geoprivacy=obscured_private
-
Obs where taxon geoprivacy is private: https://www.inaturalist.org/observations?taxon_geoprivacy=private
-
Obs by a single user where taxon geoprivacy is obscured: https://www.inaturalist.org/observations?user_id=kueda&taxon_geoprivacy=obscured
-
Obs by a single user where taxon geoprivacy is obscured or private: https://www.inaturalist.org/observations?user_id=reuvenm&taxon_geoprivacy=obscured_private
-
Obs by a single user where the taxon geoprivacy is open and the geoprivacy is open:
https://www.inaturalist.org/observations?user_id=kueda&geoprivacy=open&taxon_geoprivacy=open
Search for observations with or without georeferenced coordinates
The parameter geo
specifies whether an observation has georeferenced coordinates (a location). Note that observations where either the geoprivacy
or taxon_geoprivacy
is private
(see previous section) are considered to have no georeferenced coordinates. So here are observations that have a public location: https://www.inaturalist.org/observations?geo=true&verifiable=any
And here are observations with no location data entered: https://www.inaturalist.org/observations?geo=false&geoprivacy=open,obscured&taxon_geoprivacy=open,obscured&verifiable=any
Search for mappable/unmappable observations
The Explore page map only shows observations which are mappable
, that is, with public lat/lon and a location accuracy less than the diagonal of a rectangle measuring 0.2 degrees by 0.2 degrees. This is about 31 km at the equator, about 27 km at 45 degrees latitude, and about 23 km at 80 degrees latitude. (mappable
also requires a few other things, like passing quality checks.)
In Identify, mappable
is set to any
by default, but can be changed in the URL:
&mappable=true
to find obs with public lat/lon and location accuracy below threshold&mappable=false
to find obs with either no public lat/lon or large location accuracy (or failing quality checks)&mappable=false&geo=true
to find obs with large location accuracy (see previous section for details ongeo
)
Search by date with time
Within the Filters menu, there is an option to search by date Range. The pop-up calendar chooser allows dates to be selected, but times need to be added manually. They can be typed into the Range boxes with the dates, or modified in the URL. Unless you want to search using UTC, you also need to add an offset for the time zone.
This searches a location that is in CDT, using the offset -05:00, which is the offset between CDT and UTC. So results are observations made locally between 10am and 11am on October 25, 2020.
Search by month(s) of year or day(s) of month
To find observation from particular time(s) of year, the following may be helpful:
&month=1,2,12
finds observations in January, February, or December of any year.
https://www.inaturalist.org/observations?place=any&month=1,2,12
The following are less helpful and/or already covered by existing filters, but are listed for completeness. They can be combined with the &month=
search:
&day=21
finds observations on the 21st of any month.&year=1980,1981,1982
should be self-explanatory.
Time Zone is ignored. Results just reflect the recorded date in any time zone.
Contents (part 2)
WHO (observers and identifiers)
Search multiple observers
Search by identifier(s)
Search by account age (in weeks)
Search by multiple user license types
Other observation properties
Search for observations with or without media (photos, sounds)
Include both Captive and Wild observations
Search by observation numbers (id numbers)
Search for observation fields and values
Search for Annotations
Search by Description, Tag, Name, Place
Project-related queries
Search for Observations from iOS, Android, or Seek apps
More tools and tips
Search by exclusions (not place, not taxon, not observer, etc.)
Sort by Dates, Faves, or Randomly
Look up ID numbers
Change number of results per page
Change page language/locale