How to use iNaturalist's Search URLs - wiki


The Explore page (aka Observations search) at 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:

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!

NOTE: most of the edits below will work in both the explore and identify contexts, but some may only work in one context or the other.

If some of the following query examples are empty, then probably your default place for location searches does not contain any observations. In that case, just remove the “Place” in your filter page or add &place_id=any to the URL.

If captive observations are missing in the query, then probably “Verifiable” is checked in the filter page. Just untick it or add &verifiable=any to the URL.

To display both of wild and captive observations together in the map view, add &captive=any to the URL.

To change the number of observations displayed per page, add &per_page= followed by a number up to 200.


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 for observations that have no identifications
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 observations with or without media (photos, sounds)
Search by date with time
Search by observation number (id)
Search by active identification(s)
Search for a user’s IDs
Search for observation field values
Search for Annotations
Search by Description, Tag, Name, Place
Project-related queries
Search for Observations from iOS, Android, or Seek apps
Sort by Date, Votes, or Randomly
Search by exclusions (not place, not taxon, not observer, etc.)

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. 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 ( 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:,26039,47113

You can append more taxon IDs to this URL to search for more taxa. For example, here are all snakes, crocodilians, and nudibranchs:,26039,47113

You can also exclude taxa by using &without_taxon_id=. For example, all snakes, crocodilians, and nudibranchs, but without vipers:,26039,47113&without_taxon_id=30667

If you want to exclude a taxon, but not its descendants, you can use &without_direct_taxon_id. This is snakes, but only excluding observations at the exact rank of vipers:

Search multiple taxa using a List

You can use Lists to restrict a search to particular taxa. For example, is a list that is already set up. Using &list_id=XXXX restricts the search to the taxa in XXXX list, so 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

Search for exact taxon (no descendants)

If you want to search for observations only at an exact taxon, you can use exact_taxon_id. 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.:

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.

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:,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:,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:,26039,47113&place_id=1&not_in_place=14

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. 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, 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, 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

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 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.

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:

And here are observations with no location data entered:,obscured&taxon_geoprivacy=open,obscured&verifiable=any

Search for observations with or without media (photos, sounds)

  • photos=true: has 1 or more photos (available in the GUI)
  • photos=false: does not have photos
  • sounds=true: has audio (available in the GUI)
  • sounds=false: does not have audio

Combine for media-less observations, e.g.

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 observation number (id)

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 search for one or more particular observations. For example, to get and, use,51170806.

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.

You can also string together multiple taxa with ident_taxon_id_exclusive=. For example,,46017 will bring back observations that have identifications of both Sciurus carolinensis and Sciurus niger. And,46017,46023 will return observations with IDs of S. carolinensis, S. niger, and S. griseus.

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:

You can also search for observations that a particular identifier has not added an ID to using &without_ident_user_id=, e.g.

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 observations with a field regardless of the field value (e.g. the field “Habitat (s Afr)” only):

or with a field and value (e.g. “Habitat (s Afr)=Nama Karoo”):

You can easily combine these with other search strings. For example, the following shows all observations marked as being of insect herbivores of Ecualyptus.>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, and 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): (case sensitive)
Ascending list of observation fields:
Descending list:

Note that &without_field= and &without_field_id= are currently not implemented.

Search for Annotations

&term_id= - the annotation group

  • 1=Life Stage, 9=Sex, 12=Plant Phenology, 17=Alive or Dead

&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=Flower Budding, 21=No Evidence of Flowering
  • Alive or Dead: 18=Alive, 19=Dead, 20=Cannot Be Determined

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:

And here are all verifiable Lepidoptera observations with a LIfe Stage of Larva or Adult:,6

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

Search by Description, Tag, Name, Place

The Explore 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.

  • To restrict the search to the description, use &search_on=description
  • To restrict the search to tags, use &search_on=tags
  • To restrict the search to active ID taxon names, use &search_on=names
  • To restrict the search to the description of the place (also called the “locality notes” or the place_guess), use &search_on=place

As an example, searches for observations with the tag ‘leaf miner’.

Project-related queries

&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

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=

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.

Search for Observations from iOS, Android, or Seek apps

The &oauth_application_id parameter allows searching observations by the source of upload.

Sort by Date, Votes, or Randomly

The &order_by option may be used on the Identify pages to sort by certain attributes. The date added, date observed, and faves options may also be used on the Explore page. On the Identify pages the default option is to sort by the date the observation was added.


  • updated_at Sorts by the date the observtion was last updated.
  • observed_on Sorts by the date of observation.
  • votes Sorts by the number of faves.
  • random Sorts the observations randomly.

The direction of the sorting may also be controlled with the &order= option. The default is to order observations by descending values of the sort category, &order=desc, but &order=asc will sort by ascending values.

For example will show you all bird observations sorted by last updated, with observations updated longest ago displayed first.

Search by exclusions (not place, not taxon, not observer etc.)

Many of the above searches can also be excluded from results.

  • &exact_taxon_id= (excludes descendants)
  • &without_taxon_id=
  • &without_direct_taxon_id= (works like without_taxon_id but descendants aren’t excluded)
  • &not_in_place=
  • &not_user_id= (note: must use their number, not their name)
  • &without_ident_user_id=
  • &without_term_id= the annotation group
  • &without_term_value_id= the value within the annotation group
  • &not_in_project=
  • &not_matching_project_rules_for=
  • &geo=false without a location (though you may want to also exclude private observations with &geoprivacy=open,obscured&taxon_geoprivacy=open,obscured)

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”:,52173&without_taxon_id=52855,57934&not_user_id=51061&term_id=12&without_term_value_id=13

Of course, if any of your “with” and “without” parameters conflict, you should expect to get conflicting results! (or none at all).

Current limitations

  • This tool cannot filter the text within comments
Boolean operators for iNat searches
Show me what I haven't seen yet
How to find a list of "unidentified/unknown" observations?
A Tree Survey Question
Create Filter by Location Accuracy
Filter observations by camera model
Search observations by color, etc on Identify
Exclude certain taxa in Identify user interface
Identification by elimination
"Open in new tab" as default from Identify
Dealing with low quality observations and inappropriate content on iNaturalist
Is it possible to filter for more than 1 Person in filters box?
Include taxon_geoprivacy in search filters
Select Multiple Places in Filters
Search and filter identifications
Western North America as a location for Identify searches?
Searching with exclusions . .
Restrict observations to time range?
Search with excluding a territory?
Wrong page opens when trying to add observations to a traditional project
Search URLs: All Filter Examples by Search Parameter?
Bug with exporting data from a project
Species per page on observation - question
Search and filter identifications
Can taxa be excluded from a search?
How do I 'explore' a geographic region?
Photos of Animals Shot During Hunting Ok?
Filter multiple taxa in the "Identify" page?
A way to search needed/missing species?
Allow for "blocking" of observations(/photos?) of a particular taxa
iNat posting etiquette questions
Wiki - Observing & Identifying Wildlife
How do I find my identifications of a particular species?
Any way to search through your identifications?
Ability to search observations near (within range of) a place
Annotations not exporting
Annotations not exporting
Changes to the Agree button/functionality and addition of Markdown in comments and ID Remarks
What does "No Evidence of Flowering" mean?
Forum steals CNTL-f hot key!
Siphoning off specific data
URL search when field is NOT set
URL search when field is NOT set
In Identify, add filter for species I have observed (or species I have identified)
Amount of "Unknown" records is decreasing
Priority to new users
Searching for exact match in tag or description
Downloading Annotations
Searching by location uncertainty values
The iNaturalist Explore Page - An Introduction
The iNaturalist Explore Page - An Introduction
What would make it easier for you to do more identifying?
Viewing posts from two countries
Vague location names on observations
Please subdivide Lepidoptera (Butterflies & Moths) and create a sub order Lepidoptera (Moths only)
Is it possible to filter out observations by a specific user?
Documentation for Observation Widget?
Find species unobserved by me in a specific place
Viewing species in a project beyond the top 500
Finding observations without observation fields?
How to create an annual list?
Why is there no search filter "with annotation" on the Explore page?
Qualifying observation excluded from inventory project
Plot comparative distribution maps for taxa
Searching for multiple counties at once?
Data users— what are your use cases and requests for exporting data?
How do I exclude my observations from a search?
How to search for (or see a list of) comments I've made on other people's observations?
Ideas for making it easier to find observations with conflicting IDs in Identify
'Moths' not a search option
Add "None" to taxon page photo browser annotation filter options
Add "None" to taxon page photo browser annotation filter options
Search and filter identifications
How do I search for observations annotated as alive?
How do I search for observations annotated as alive?
Ideas for a revamped Explore/Observations Search Page
Is there an index of experimental tools?
Can I filter out observations for which I have already provided ID?
Sorting by original ID
How to find which species found in one place are not found within another place?
Large batch of gray squirrel observations with bad locations
Create taxon field functionality analogous to observation fields
Using R to extract observations of a specific phenological state
Allow Boulean or Advanced Searches
Provide a way to filter observations by disputed IDs
How to exclude user-specified taxa in a search?
How to query a geographic range without a specific user ID and observation field?
Searching Observations using Annotations
How to search for subdivisions within plants?
Combine places when searching?
Filtering searches by geographic features (mountains, riparian, etc)?
Geographically Limited Searches
What is the one thing you wish you could do on iNaturalist?
What is the one thing you wish you could do on iNaturalist?
fixed categories possible?
Excluding self in search
Separate Lichen and Fungi into two Categories?
Is there a way to search for identifications I've made of a specific species?
Place: If it already exists on Google Maps do I need to create it also in iNaturalist?
Records on iNat that are of "no value" because they're not identifiable
Find/Exclude observations without a location?
Easier to search for common conflicting IDs

How do I add a language in an URL?

1 Like

Is there a way to search for taxa that I haven’t yet reviewed? I haven’t been able to figure out a URL for this.

For example, I want to see all Limacoidea in a specific area, that is easy, but when there are 1000s of observations I keep seeing the same ones each time I come back a do a search.


If you’re using the Identify page, it defaults automatically to “needs ID” and reviewed=false.

But you can also add reviewed=false to the Observation page URL:


I think you can add ?locale=nl to any iNat URL to change the language, in this example, to Dutch. It’s not really a search URL though.


@bouteloua thanks for the feedback. Are you able to edit the original post, since it’s a Wiki?

1 Like

Yes! I made a couple edits on Feb 12th to test it out.



1 Like

It worked well. I’ve just added a simple observation field search.


This is excellent, I just used to it to focus on my local area and things of interest to me.

I was also interested in using the IDENTIFY pop up window, and using your method I adjusted the URL and IT WORKED… Really great, thanks…

My example URL (notice the adjustment for IDENTIFY),30464,30479,30481&quality_grade=needs_id&iconic_taxa=Plantae,Fungi,Insecta


Is there a way to exclude certain taxa? Say I want to see all the plant species that are NOT mosses or algae?


without_taxon_id parameter

multiple entries separated by comma, you just need to know the id

This does all plants in Ontario excluding mosses and cacti (Ontario has way too many cacti it gets boring looking at them all)
For instance,47903


Ontario has lots of cacti??


Nearly every windowsill you look at has one.

But amazingly we do have some native growing ones.


That’s exactly what I needed, thank you!

1 Like

This is very useful thanks…previously I have always “glazed over” when any sort of code or URL has been mentioned but atf least the first one or two examples sound feasible even to me…assuming the Url changes in the browser header with each filter.

Am i correct in my impression that it is not possible to bulk edit the results of such searches even using the filter to producd only kne’s own obs?


@kaipatiki_naturewatc Yes, the URL updates in the search box with each filter change. Anything you can filter through the user interface, you can copy/save/bookmark a URL that re-creates that filter each time you go there. After playing with the filter and seeing the resulting URL changes for a while, you should get a pretty good idea of how it works.

And then there are some other filter parameters NOT available through the regular user interface, such as the without_taxon_id= parameter mentioned earlier. This wiki will be especially helpful for documenting those, and I hope will eventually include a complete list of them. (I’ve been collecting a list as I learn about them, but it’s probably missing some things…)

If by “bulk edit” you mean edit the contents of your own observations, I think you would be limited to the capabilities of the Batch Edit functionality at{{username}}, after applying an appropriate Search filter. And that search filter could include manually adding other URL parameters not available through the standard Search filter.

1 Like

Is there a parameter such as without_place_ID. I’m aiming to exclude certain locations from my search. I tried <> and - but this did not work.

To create the opposite search of my URL,30464,30479,30481&quality_grade=needs_id&iconic_taxa=Plantae,Fungi,Insecta

1 Like

try not_in_place

1 Like

That appears to have worked.

So perhaps the wiki needs a few criteria ideas for IS and IS NOT. With that in place, I think this is a very powerful method to manage views in Inat. It is perhaps not for everyone, but for some, this would certainly give much greater flexibility.