This page was originally drafted with the support of many iNaturalist Forum community members.
The Explore page (also known as observations search) at https://www.inaturalist.org/observations is the primary way for iNaturalist users to search for a set of observations. The page does have many filters available in the user interface that one can use, but in order to keep the page from containing an overwhelming number of search parameters, editing the URL is the only way to access certain search results.
What follows are examples of different URLs you can use to create more complicated searches than are available through the user interface. Once you have a search you like, you can always bookmark the URL to save the search.
...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 a new browser tab (try it!).
You'll notice the last part of the URL above says taxon_id=85553
. That number is iNaturalist's ID for the taxon Serpentes (snakes). 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.
Note:
place_id=any
to the URL.If you want to search for more than one taxon at a time, you can edit the 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 add more taxon IDs to this URL to search for even 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:
You can use lists on iNaturalist to restrict a search to a set of taxa. For example, https://www.inaturalist.org/lists/111820-Chicago-Wilderness-Region-Spring-Wildflowers is a list that is already set up. The list_id
is the number in the URL: 111820 in this case. Using the list_id=
restricts an observation search to the taxa on that list, so https://www.inaturalist.org/observations?list_id=1139967 brings back only results from the list linked above.
In the main header, Explore, Identify, and other areas, you can always type in the scientific name, common name, or synonyms and the species or other taxon you are looking for should appear. There is a separate, infrequently used search option called taxon_name=
that can be used to search names directly via the URL. It accepts current scientific names, synonyms, and even common names.
This works on 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
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.
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
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.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 not_in_place=
. This is a search for all snakes, crocodilians, and nudibranchs in the United States, but not in Texas:
https://www.inaturalist.org/observations?taxon_ids=85553,26039,47113&place_id=1¬_in_place=14
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. 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.
acc
: Filter on whether or not observations have a positional_accuracy
, e.g. https://www.inaturalist.org/observations?user_id=kueda&acc=false
acc_above
: Show observations with positional_accuracy above a given value, e.g. https://www.inaturalist.org/observations?user_id=kueda&acc_above=10000
acc_below
: Show observations with positional_accuracy below a given value, e.g. https://www.inaturalist.org/observations?user_id=kueda&acc_below=3
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 will have to use both if you want to see all the obscured, private, or open observations in your search.
The three values possible here are open
, obscured
, and private
.
Obs where geoprivacy is private: https://www.inaturalist.org/observations?geoprivacy=private&taxon_geoprivacy=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&taxon_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 geoprivacy is obscured or private: https://www.inaturalist.org/observations?user_id=reuvenm&taxon_geoprivacy=obscured_private
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
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.
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,12The 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.
To limit a search to a specific set of observers add user_id=
and a comma-separated list of user ids:
User IDs can be either login names or user numbers, but not a mixture of the two:
To exclude one or more observers, you can use not_user_id=
:
If you only want to see observations to which 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:
https://www.inaturalist.org/observations?ident_user_id=tiwane
For observations identified by one or more of several users, separate them with commas:
https://www.inaturalist.org/observations?ident_user_id=tiwane,kueda,jdmore
To exclude observations identified by particular user(s), use without_ident_user_id=
, e.g.
https://www.inaturalist.org/observations?without_ident_user_id=tiwane,jdmore
If you want to focus on observations from very new, very old, or in-between user accounts, you can add parameters like the following examples:
user_after=3w
- users with accounts created more recently than 3 weeks ago
user_before=52w
- users with accounts created earlier than 52 weeks ago
user_before=4w&user_after=8w
- accounts created between 4 and 8 weeks ago
1w
options are already available on the Identify Filters panel.Single license queries are already available from the Filters panels,. To query for multiple license types:
photo_license=cc0,cc-by,cc-by-sa
(example for all photo licenses accepted by Wikipedia)photo_license=c0,cc-by,cc-by-nc
(example for all photo licenses accepted by GBIF)sound_license=cc0,cc-by
(example for multiple sound licenses)
Notes:
photo_licensed=false
(as of 2023 there is no corresponding sound_licensed
parameter).
license
and licensed
in the API..photos=true
: has 1 or more photos (available in the GUI)photos=false
: does not have photossounds=true
: has audio (available in the GUI)sounds=false
: does not have audioCombine for medialess observations, e.g. https://www.inaturalist.org/observations/identify?reviewed=any&quality_grade=casual&sounds=false&photos=false
Some parts of the site will only show Wild observations by default, with an option to show Captive only. To be sure you are seeing both kinds of observations, use:
captive=any&verifiable=any
any
, the other options (already in the Filters panels) are true
and false
.Each iNat observation has an id number that can be found in the URL for that observation. You can use this number with id=
to restrict an Identify search to specific observations.
For example, to restrict an Explore search to https://www.inaturalist.org/observations/51170811 and https://www.inaturalist.org/observations/51170806 use
https://www.inaturalist.org/observations?id=51170811,51170806
To exclude one or more specific observations, use not_id=
followed by the observation ID(s) you want to exclude, separated by commas (as of 2022, this still only works on the Identify page, not Explore).
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".
https://www.inaturalist.org/observations?field:roadkill=yes
You can search for all observations with a field regardless of the field value (e.g. the field "Habitat (s Afr)&place_id=any)" only):
field:Habitat%20(s%20Afr)
or with a field and value (e.g. "Habitat (s Afr)=Nama Karoo=Nama%20Karoo&place_id=any)"):
field:Habitat%20(s%20Afr)=Nama%20Karoo
You can easily combine these with other search strings. For example, the following shows all observations marked as being of insect herbivores of Ecualyptus.
https://www.inaturalist.org/observations?taxon_id=47158&field:Interaction->Herbivore%20of=51815
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.
Observations without a particular observation field can be found using &without_field=
, such as observations of dead mammals not also tagged as roadkill: https://www.inaturalist.org/observations?iconic_taxa=Mammalia&term_id=17&term_value_id=19&without_field=Roadkill
Observation field view https://www.inaturalist.org/observation_fields/1234 Observation field view for a value: (e.g. Fynbos in Habitats-s-afr): https://www.inaturalist.org/observation_fields/7498?value=Fynbos (case sensitive) Ascending list of observation fields: https://www.inaturalist.org/observation_fields?order_by=name&order=asc Descending list: https://www.inaturalist.org/observation_fields?order_by=name&order=desc
term_id=
- the annotation group
term_value_id=
- the value within the group
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.
Here are all verifiable Lepidoptera observations with a Life Stage of Larva: https://www.inaturalist.org/observations?place_id=any&taxon_id=47157&term_id=1&term_value_id=6
And here are all verifiable Lepidoptera observations with a LIfe Stage of Larva or Adult: https://www.inaturalist.org/observations?page=2&place_id=any&taxon_id=47157&term_id=1&term_value_id=2,6
To exclude observations with particular annotations, use the following similar to the above:
without_term_id=
the annotation groupwithout_term_value_id=
the value within the groupThe Explore and Identify filters include a box called Description / Tags. This box actually searches 4 things: description, tags, names of taxa with active IDs, and place descriptions. To search just one of these at a time, you can specify a search term and also which one to search.
Specify the search term with q=searchterm
, for example q=small
. Replace spaces with %20
, for example very%20small
.
search_on=description
search_on=tags
search_on=names
search_on=place
As an example, https://www.inaturalist.org/observations?q=leaf%20miner&search_on=tags searches for observations with the tag 'leaf miner'.
Current limitations: This tool cannot search the text within comments or ID comments.
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.
Use 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
taxon_id=47208 Coleoptera
https://www.inaturalist.org/observations?place_id=94916&taxon_id=47208¬_in_project=nz-beetles-and-their-grubs
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:
apply_project_rules_for=
not_matching_project_rules_for=
To find only observations by people who have joined the project (versus all observations that qualify for inclusion in the project), use members_of_project=
followed by the project ID.
oauth_application_id=
searches observations by the source of upload.
Many of the above searches can also be excluded from results. These options are collected here again for convenience.
without_taxon_id=
(excludes one or more taxa and their descendants)
exact_taxon_id=
(Identify only; excludes descendants of one or more taxa)
without_direct_taxon_id=
(Identify only; works like without_taxon_id
but descendants aren't excluded)
not_in_place=
(excludes one or more places)
geo=false
without a location (though you may want to also exclude private observations with geoprivacy=open,obscured&taxon_geoprivacy=open,obscured
)
not_user_id=
(excludes one or more observers)
photo_licensed=false
(excludes observations with photos with a license, i.e. shows observations with "All Rights Reserved" photos. As of 2023 there is no corresponding sound parameter)
without_ident_user_id=
(not identified by one or more users)
not_id=
(Identify only; excludes a list of specific observations by id number)
without_term_id=
(the annotation group)
without_term_value_id=
(the value within the annotation group)
without_field=
(without a particular observation field)
not_in_project=
(not included in one or more projects)
not_matching_project_rules_for=
For example, I want to identify Asteraceae (47604) from California (14), 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), not my own (51061), and without the plant phenology annotation "flowering":
Of course, if any of your "with" and "without" parameters conflict, you should expect to get conflicting results! (or none at all).
without_field=
and without_field_id=
are currently not implemented.The Identify Filters panel already has options built in to sort by Date Added (default), Date Observed, Date Updated (edited), Faves, or Random. Sorting options are Descending (default) or Ascending.
Two of these options are not available in the Explore filters, but can still be added manually: Date Updated and Random. To add these, use
order_by=updated_at
order_by=random
Sorting order is specified by
order=desc
ororder=asc
For example https://www.inaturalist.org/observations?place_id=any&iconic_taxa=Aves&order_by=updated_at&order=asc will show you all bird observations sorted by date last edited, with observations updated longest ago displayed first.
ID numbers are needed for many of the searches detailed herein. Here are some easy ways to find them:
friend_id
number in the link URL.taxon_id
number will be added to the URL in the browser address bar.place_id
number will be added to the URL in the browser address bar. project_id
number will be added to the URL in the browser address bar.flora-of-russia
is the URL slug for https://www.inaturalist.org/projects/flora-of-russia(works in Identify only)
To change the number of observations displayed per page in Identify, add per_page=
followed by a number up to 200.
https://www.inaturalist.org/observations/identify?place_id=50&per_page=10
To display any translatable iNat page in another language without changing your settings:
locale=xx
to the URL, where xx is the 2-letter ISO 639-1 language codelocale=en
(English)This page was a collaboration of many members of the iNaturalist community. Want to add or edit something? Any iNaturalist Curator can edit this page - the link to edit is on the bottom right. Otherwise, reach out to @bouteloua and she'd be happy to work with you on making changes or additions.