iNaturalist Taxa API

Search and fetch

Operations 3

GET /taxa/{id} Taxon Details #
GET /taxa Taxon Search #
GET /taxa/autocomplete Taxon Autocomplete #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/inaturalist-taxa-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

inaturalist-taxa-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: iNaturalist Taxa API
  description: '# https://api.inaturalist.org/v1/


    iNaturalist is a global community of

    naturalists, scientists, and members of the public sharing over a million

    wildlife sightings to teach one another about the natural world while

    creating high quality citizen science data for science and conservation.'
  version: 1.3.0
servers:
- url: /v1
tags:
- name: Taxa
  description: Search and fetch
paths:
  /taxa/{id}:
    get:
      summary: Taxon Details
      description: 'Given an ID, or an array of IDs in comma-delimited format, returns

        corresponding taxa. A maximum of 30 results will be returned'
      parameters:
      - $ref: '#/components/parameters/path_multi_id'
      - $ref: '#/components/parameters/rank_level'
      tags:
      - Taxa
      responses:
        '200':
          description: 'Returns an object with metadata and a results array of taxa

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxaShowResponse'
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      operationId: getTaxaById
      x-operation-id-source: derived
  /taxa:
    get:
      summary: Taxon Search
      description: Given zero to many of following parameters, returns taxa matching the search criteria
      parameters:
      - $ref: '#/components/parameters/autocomplete_q_not_required'
      - name: is_active
        in: query
        description: Taxon is `active`
        schema:
          type: boolean
      - name: id
        in: query
        description: Comma-separated list of taxon IDs
        schema:
          type: array
          items:
            type: integer
      - $ref: '#/components/parameters/parent_id'
      - $ref: '#/components/parameters/rank'
      - $ref: '#/components/parameters/rank_level'
      - $ref: '#/components/parameters/id_above'
      - $ref: '#/components/parameters/id_below'
      - $ref: '#/components/parameters/per_page'
      - $ref: '#/components/parameters/locale'
      - $ref: '#/components/parameters/preferred_place_id'
      - $ref: '#/components/parameters/only_id'
      - $ref: '#/components/parameters/all_names'
      - $ref: '#/components/parameters/order'
      - $ref: '#/components/parameters/taxa_order_by'
      tags:
      - Taxa
      responses:
        '200':
          description: 'Returns an object with search metadata and a results array of taxa

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxaShowResponse'
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      operationId: getTaxa
      x-operation-id-source: derived
  /taxa/autocomplete:
    get:
      summary: Taxon Autocomplete
      description: Given an string, returns taxa with names starting with the search term
      parameters:
      - $ref: '#/components/parameters/autocomplete_q'
      - name: is_active
        in: query
        description: Taxon is `active`
        schema:
          type: boolean
      - $ref: '#/components/parameters/taxa_taxon_id'
      - $ref: '#/components/parameters/rank'
      - $ref: '#/components/parameters/rank_level'
      - name: per_page
        in: query
        description: Number of results to return in a `page`. The maximum value is 30 for this endpoint
        schema:
          type: string
      - $ref: '#/components/parameters/locale'
      - $ref: '#/components/parameters/preferred_place_id'
      - $ref: '#/components/parameters/all_names'
      tags:
      - Taxa
      responses:
        '200':
          description: 'Returns an object with search metadata and a results array of taxa

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxaAutocompleteResponse'
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      operationId: getTaxaAutocomplete
      x-operation-id-source: derived
components:
  parameters:
    taxa_order_by:
      name: order_by
      in: query
      description: Sort field
      schema:
        type: string
        enum:
        - id
        - created_at
        - observations_count
        default: observations_count
    preferred_place_id:
      name: preferred_place_id
      in: query
      description: 'Place preference for regional taxon common names

        '
      schema:
        type: integer
    path_multi_id:
      name: id
      in: path
      required: true
      description: Must have this ID
      schema:
        type: array
        items:
          type: integer
    autocomplete_q_not_required:
      name: q
      in: query
      description: Search by name (must start with this value) or by ID (exact match).
      schema:
        type: string
    id_above:
      name: id_above
      in: query
      description: Must have an ID above this value
      schema:
        type: string
    taxa_taxon_id:
      name: taxon_id
      in: query
      description: Only show taxa with this ID, or its descendants
      schema:
        type: array
        items:
          type: string
        minimum: 1
    id_below:
      name: id_below
      in: query
      description: Must have an ID below this value
      schema:
        type: string
    rank_level:
      name: rank_level
      in: query
      description: 'Taxon must have this rank level. Some example values are 70 (kingdom),

        60 (phylum), 50 (class), 40 (order), 30 (family), 20 (genus),

        10 (species), 5 (subspecies)

        '
      schema:
        type: number
    order:
      name: order
      in: query
      description: Sort order
      schema:
        type: string
        enum:
        - desc
        - asc
        default: desc
    parent_id:
      name: parent_id
      in: query
      description: Taxon's parent must have this ID
      schema:
        type: integer
    all_names:
      name: all_names
      in: query
      description: Include all taxon names in the response
      schema:
        type: boolean
    autocomplete_q:
      name: q
      in: query
      required: true
      description: Search by name (must start with this value) or by ID (exact match).
      schema:
        type: string
    per_page:
      name: per_page
      in: query
      description: 'Number of results to return in a `page`. The maximum value is generally

        200 unless otherwise noted

        '
      schema:
        type: string
    only_id:
      name: only_id
      in: query
      description: Return only the record IDs
      schema:
        type: boolean
    rank:
      name: rank
      in: query
      description: Taxon must have this rank
      schema:
        type: array
        items:
          type: string
        enum:
        - stateofmatter
        - kingdom
        - phylum
        - subphylum
        - superclass
        - class
        - subclass
        - superorder
        - order
        - suborder
        - infraorder
        - superfamily
        - epifamily
        - family
        - subfamily
        - supertribe
        - tribe
        - subtribe
        - genus
        - genushybrid
        - species
        - hybrid
        - subspecies
        - variety
        - form
    locale:
      name: locale
      in: query
      description: 'Locale preference for taxon common names

        '
      schema:
        type: string
  schemas:
    TaxaAutocompleteResponse:
      allOf:
      - $ref: '#/components/schemas/BaseResponse'
      - required:
        - results
        properties:
          results:
            type: array
            items:
              $ref: '#/components/schemas/AutocompleteTaxon'
    Color:
      type: object
      properties:
        id:
          type: integer
        value:
          type: string
    BaseResponse:
      type: object
      properties:
        total_results:
          type: integer
        page:
          type: integer
        per_page:
          type: integer
    EstablishmentMeans:
      type: object
      properties:
        establishment_means:
          type: string
        place:
          $ref: '#/components/schemas/CorePlace'
    TaxonConservationStatus:
      allOf:
      - $ref: '#/components/schemas/RawConservationStatus'
      - type: object
        properties:
          place:
            $ref: '#/components/schemas/CorePlace'
    RawConservationStatus:
      type: object
      properties:
        source_id:
          type: integer
          description: 'Identifier for the iNat source record associated with this status,

            retrievable via https://www.inaturalist.org/sources/:id.json

            (this endpoint is not a part of our public API and is thus subject to

            change or removal)

            '
        authority:
          type: string
          description: 'Organization that declared this status

            '
        status:
          type: string
          description: 'Body of the status, often coded, particularly when the status comes

            from the IUCN or NatureServe. Consult the authority and/or the

            status URL for details about the meanings of codes.

            '
        status_name:
          type: string
          description: 'Human-readable name of the status if it was coded.

            '
        iucn:
          type: integer
          description: 'Coded value representing the equivalent IUCN status. Mappings:

            NOT_EVALUATED = 0, DATA_DEFICIENT = 5, LEAST_CONCERN = 10,

            NEAR_THREATENED = 20, VULNERABLE = 30, ENDANGERED = 40,

            CRITICALLY_ENDANGERED = 50, EXTINCT_IN_THE_WILD = 60, EXTINCT = 70

            '
        geoprivacy:
          type: string
          description: 'Default geoprivacy for observations of this taxon in the status''s place.

            '
    ShowTaxon:
      allOf:
      - $ref: '#/components/schemas/CoreTaxon'
      - type: object
        properties:
          ancestor_ids:
            type: array
            items:
              type: integer
          colors:
            type: array
            items:
              $ref: '#/components/schemas/Color'
          conservation_status:
            $ref: '#/components/schemas/ConservationStatus'
          conservation_statuses:
            type: array
            items:
              $ref: '#/components/schemas/TaxonConservationStatus'
          default_photo:
            $ref: '#/components/schemas/TaxonPhoto'
          establishment_means:
            $ref: '#/components/schemas/EstablishmentMeans'
          observations_count:
            type: integer
          preferred_establishment_means:
            type: string
    CoreTaxon:
      type: object
      properties:
        id:
          type: integer
        iconic_taxon_id:
          type: integer
        iconic_taxon_name:
          type: string
        is_active:
          type: boolean
        name:
          type: string
        preferred_common_name:
          type: string
        rank:
          type: string
        rank_level:
          type: number
    CorePlace:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        display_name:
          type: string
    AutocompleteTaxon:
      allOf:
      - $ref: '#/components/schemas/CoreTaxon'
      - type: object
        properties:
          default_photo:
            $ref: '#/components/schemas/TaxonPhoto'
          matched_term:
            type: string
          observations_count:
            type: integer
    TaxaShowResponse:
      allOf:
      - $ref: '#/components/schemas/BaseResponse'
      - required:
        - results
        properties:
          results:
            type: array
            items:
              $ref: '#/components/schemas/ShowTaxon'
    TaxonPhoto:
      allOf:
      - $ref: '#/components/schemas/Photo'
      - type: object
        properties:
          medium_url:
            type: string
          square_url:
            type: string
    Photo:
      type: object
      properties:
        id:
          type: integer
        attribution:
          type: string
        license_code:
          type: string
        url:
          type: string
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
    ConservationStatus:
      type: object
      properties:
        place_id:
          type: integer
        place:
          $ref: '#/components/schemas/CorePlace'
        status:
          type: string
  securitySchemes:
    api_token:
      type: apiKey
      name: Authorization
      in: header