GBIF

App · Research & Academia · 10 actions

The world's record of what has been found living where, from GBIF, the Global Biodiversity Information Facility. Billions of observations and museum specimens, pooled from thousands of institutions in almost every country, and free to everyone. Check a scientific name against GBIF's own list to catch typos and replace out-of-date names with current ones, then find where that species has actually been recorded - by country, by date, by kind of evidence, or only the sightings that come with a photograph. Count matching records without fetching them when all you need is whether anything is there. Every record carries what was found, where, when, who found it, and which dataset it came from, so you can follow any of it back to the museum or survey that stands behind it. No account or API key required.

Actions

ActionWhat it does
Count occurrence recordsHow many records match, without fetching any of them.
Get an occurrence recordOne record in full, by the key a search returned: what was found, exactly where and when, who found and identified it, which collection holds it, any photos, and the quality flags GBIF raised on it.
Get dataset detailsOne dataset in full: what it covers, how many records it holds, who publishes it, the terms it is offered on, and the citation to use when you publish anything based on it.
Get species detailsEverything GBIF holds about one species: the accepted name and its authorship, the full classification, where it lives, how threatened it is, and the work the name was first published in.
List common namesWhat people actually call a species, in every language GBIF has recorded - a puma has 230 names across 40-odd languages.
Look up a species nameCheck a scientific name against GBIF's own list and get back the accepted spelling, the rank, and the full classification from kingdom down to species.
Search datasetsFind the datasets behind the records - who collected what, where, and how much of it.
Search for speciesFind species by name when you do not know the exact one.
Search occurrence recordsFind records of where a species has actually been found - museum specimens, survey results and citizen-science sightings pooled from thousands of institutions.
Search publishersFind the institutions that publish into GBIF - museums, herbaria, universities, government agencies and citizen-science projects - by name or by country, with how many datasets each has published.

Count occurrence records

How many records match, without fetching any of them. The same filters as 'Search occurrence records', answering the question you branch on - has this species ever been seen here, is this worth pulling, has anything new turned up - for the cost of one number instead of a page of records. No API key required.

Inputs

Speciesspeciestext
Optional. A scientific name such as Panthera onca, or a broader group such as Felidae or Aves. A species key from an earlier step works here too. GBIF matches scientific names rather than common ones, so if a name is not recognised the step says so instead of guessing - use 'Search for species' to find the right one.
Countrycountrytext
Optional. Only records found in this country.
Continentcontinenttext
Optional. Only records found on this continent. Use it instead of Country to cover a whole region at once.One of: AFRICA, ANTARCTICA, ASIA, EUROPE, NORTH_AMERICA (North America), OCEANIA, SOUTH_AMERICA (South America).
Found on or afterrecorded_fromdate
Optional. Only records from this date onwards. Leave the other date blank to mean 'ever since'.
Found on or beforerecorded_todate
Optional. Only records up to this date. Leave the other date blank to mean 'from the beginning'.
Kind of evidencebasis_of_recordlist
Optional. What the record is based on. Choose several to accept any of them, or leave it blank for all. Preserved specimens are the most reliably identified; human observations are much the most numerous.One or more of: HUMAN_OBSERVATION (Human observation - someone saw it), MACHINE_OBSERVATION (Machine observation - a camera or sensor caught it), PRESERVED_SPECIMEN (Preserved specimen - held in a museum or herbarium), LIVING_SPECIMEN (Living specimen - in a zoo, garden or culture collection), FOSSIL_SPECIMEN (Fossil specimen), MATERIAL_SAMPLE (Material sample - tissue, DNA or similar), MATERIAL_CITATION (Material citation - a specimen cited in a publication), LITERATURE (Literature - taken from a publication), OCCURRENCE (Occurrence - the publisher did not say which), UNKNOWN.
Present or absentoccurrence_statustext
Optional. Nearly every record says a species was found somewhere, but a few say it was looked for and not found. Leave this blank for both, as gbif.org does.One of: PRESENT (Present - the species was found), ABSENT (Absent - it was looked for and not found).
Only records with mediamedia_typelist
Optional. Only records with a photo, video or sound recording attached. Choose several to accept any of them.One or more of: StillImage (Photo), MovingImage (Video), Sound (Sound recording), InteractiveResource (Interactive resource).
Datasetdataset_keytext
Optional. Only records from this one dataset. 'Search datasets' returns the key, and so does every record.
Found byrecorded_bytext
Optional. Only records credited to this person or team.
Only records with coordinateshas_coordinatestrue/false
Optional. Turn on when you are going to map or measure the results - roughly a fifth of records have no position at all.
Place or keywordsearch_texttext
Optional. Matches the words in a record, which is the way to search by place: 'Yellowstone', 'Serengeti'. For a species, use the Species field above instead - it resolves the name properly.

Outputs

any_foundtrue/false
True when at least one record matches. The shortest thing to branch on.
countnumber
How many records match the filters.
species_matchedobject
Which species was actually searched for. Filled in when the Species field was used, so a name that resolved to something unexpected is visible in the result rather than hidden in the request. Empty when no species was given.
Example output
{
  "any_found": true,
  "count": 979,
  "species_matched": {
    "confidence": 99,
    "key": 5219426,
    "match_type": "Exact match",
    "rank": "Species",
    "scientific_name": "Panthera onca (Linnaeus, 1758)"
  }
}

Get an occurrence record

One record in full, by the key a search returned: what was found, exactly where and when, who found and identified it, which collection holds it, any photos, and the quality flags GBIF raised on it. No API key required.

Inputs

Record keykeytextRequired
The record's key in GBIF, which 'Search occurrence records' returns as 'key'.

Outputs

accepted_scientific_nametext
The currently accepted name, which differs from the recorded one when the publisher used a synonym.
basis_of_recordtext
What kind of evidence this is: Human observation, Preserved specimen, Machine observation and so on.
catalog_numbertext
Its number within that collection.
classificationobject
Where this organism sits in the tree of life, from kingdom down to species. Group or sort on 'family' or 'order' to summarise a long list of records.
collection_codetext
Which of that institution's collections it belongs to.
continenttext
For example South America.
coordinate_uncertainty_metresnumber
How far the real spot could be from the coordinates. Worth checking before mapping: a record can be accurate to 10 metres or to 30 kilometres.
countrytext
The country's name, e.g. Brazil.
country_codetext
Its two-letter code, e.g. BR.
dataset_keytext
The dataset it came from. Pass it to 'Get dataset details'.
dataset_nametext
That dataset's title.
depth_metresnumber
Depth below the surface.
elevation_metresnumber
Height above sea level.
identified_bytext
Who identified it.
individual_countnumber
How many were seen.
institutiontext
The museum, herbarium or project holding the record.
issueslist
Quality flags GBIF raised while processing the record, such as COORDINATE_ROUNDED. Worth a look before trusting a record's position or date.
keynumber
GBIF's id for this record. Pass it to 'Get an occurrence record'.
latitudenumber
Degrees north, negative for south. Empty when not recorded.
licensetext
The terms the record is offered on, e.g. CC BY 4.0 (credit required).
license_urltext
A link to the full terms.
life_stagetext
Adult, Juvenile, Larva and so on.
localitytext
Where it was found, in the publisher's own words.
longitudenumber
Degrees east, negative for west. Empty when not recorded.
medialist
Photos, video and sound attached to the record. Empty for most records; filter on 'Only records with media' to get just the ones that have any.
occurrence_statustext
Present when the species was found, Absent when it was looked for and not found. Almost every record is Present.
publisher_keytext
The organization that published the dataset.
ranktext
How precisely it was identified: Species, Genus, Family.
recorded_bytext
Who found it.
recorded_ontext
When it was found, as the publisher recorded it. Often a date, sometimes a date and time, and sometimes a range.
scientific_nametext
The name as the publisher recorded it.
speciestext
The species name, without authorship.
species_keynumber
The species key, ready to pass to any species action.
state_provincetext
The state, province or region.
taxon_keynumber
The key of whatever the record was identified to, which for a record identified only to genus is the genus rather than a species.
urltext
The record's page on gbif.org, to open and check it.
yearnumber
The year it was found.
Example output
{
  "accepted_scientific_name": "Panthera onca (Linnaeus, 1758)",
  "basis_of_record": "Human observation",
  "catalog_number": "333796888",
  "classification": {
    "class": "Mammalia",
    "family": "Felidae",
    "genus": "Panthera",
    "kingdom": "Animalia",
    "order": "Carnivora",
    "phylum": "Chordata",
    "species": "Panthera onca"
  },
  "collection_code": "Observations",
  "continent": "South America",
  "coordinate_uncertainty_metres": 30508.0,
  "country": "Brazil",
  "country_code": "BR",
  "dataset_key": "50c9509d-22c7-4a22-a47d-8c48425ef4a7",
  "dataset_name": "iNaturalist research-grade observations",
  "depth_metres": null,
  "elevation_metres": null,
  "identified_by": "Miguel A. Paix\u00e3o",
  "individual_count": null,
  "institution": "iNaturalist",
  "issues": [
    "COORDINATE_ROUNDED"
  ],
  "key": 6129956519,
  "latitude": -20.061761,
  "license": "CC BY 4.0 (credit required)",
  "license_url": "http://creativecommons.org/licenses/by/4.0/legalcode",
  "life_stage": "Adult",
  "locality": "Miranda, BR-MS, BR",
  "longitude": -56.797438,
  "media": [],
  "occurrence_status": "Present",
  "publisher_key": "28eb1a3f-1c15-4a95-931a-4af90ecb574d",
  "rank": "Species",
  "recorded_by": "Miguel A. Paix\u00e3o",
  "recorded_on": "2026-01-04T15:31",
  "scientific_name": "Panthera onca (Linnaeus, 1758)",
  "species": "Panthera onca",
  "species_key": 5219426,
  "state_province": "Mato Grosso do Sul",
  "taxon_key": 5219426,
  "url": "https://www.gbif.org/occurrence/6129956519",
  "year": 2026
}

Get dataset details

One dataset in full: what it covers, how many records it holds, who publishes it, the terms it is offered on, and the citation to use when you publish anything based on it. No API key required.

Inputs

Dataset keykeytextRequired
The dataset's key in GBIF. 'Search datasets' returns it, and so does every occurrence record.

Outputs

citationtext
The citation to use when you publish anything based on this dataset. Only 'Get dataset details' returns it.
descriptiontext
What it covers, in full.
doitext
Its DOI, e.g. 10.15468/ab3s5x.
doi_urltext
That DOI as a link.
homepagetext
The publisher's own page for it.
keytext
GBIF's id for this dataset. Use it to filter a record search.
keywordslist
Tags the publisher gave it.
licensetext
The terms it is offered on, e.g. CC BY 4.0 (credit required).
license_urltext
A link to the full terms.
published_ontext
When it was published.
publishertext
The organization behind it.
publisher_keytext
That organization's key.
publishing_country_codetext
Where the publisher is, as a two-letter code.
record_countnumber
How many occurrence records it holds. Empty for a checklist, which holds names rather than records.
subtypetext
A finer kind, e.g. Specimen or Observation.
titletext
The dataset's name.
typetext
Occurrence records, Checklist, Sampling event or Metadata only.
updated_ontext
When it last changed.
urltext
The dataset's page on gbif.org.
Example output
{
  "citation": "iNaturalist contributors, iNaturalist (2026). iNaturalist Research-grade Observations. iNaturalist.org. Occurrence dataset https://doi.org/10.15468/ab3s5x accessed via GBIF.org on 2026-09-12.",
  "description": "Research-grade records from iNaturalist.",
  "doi": "10.15468/ab3s5x",
  "doi_url": "https://doi.org/10.15468/ab3s5x",
  "homepage": "https://www.inaturalist.org/observations",
  "key": "50c9509d-22c7-4a22-a47d-8c48425ef4a7",
  "keywords": [
    "Observation",
    "Citizen science"
  ],
  "license": "CC BY-NC 4.0 (credit required, non-commercial)",
  "license_url": "http://creativecommons.org/licenses/by-nc/4.0/legalcode",
  "published_on": "2026-09-07T00:00:00.000+00:00",
  "publisher": "",
  "publisher_key": "28eb1a3f-1c15-4a95-931a-4af90ecb574d",
  "publishing_country_code": "",
  "record_count": 166947411,
  "subtype": "Observation",
  "title": "iNaturalist Research-grade Observations",
  "type": "Occurrence records",
  "updated_on": "2026-09-10T19:54:12.868+00:00",
  "url": "https://www.gbif.org/dataset/50c9509d-22c7-4a22-a47d-8c48425ef4a7"
}

Get species details

Everything GBIF holds about one species: the accepted name and its authorship, the full classification, where it lives, how threatened it is, and the work the name was first published in. Takes the key that 'Look up a species name' and 'Search for species' return. No API key required.

Inputs

Species keykeytextRequired
The species' key in GBIF. 'Look up a species name' and 'Search for species' both return one, and so does every occurrence record.

Outputs

accepted_keynumber
That accepted name's key, when this one is a synonym.
accepted_nametext
The name to use instead, when this one is a synonym.
authorshiptext
Who first described it, and when.
canonical_nametext
The name without authorship, e.g. Puma concolor.
classificationobject
Where this organism sits in the tree of life, from kingdom down to species. Group or sort on 'family' or 'order' to summarise a long list of records.
common_nametext
The plainest English name GBIF holds, e.g. Puma. Use 'List common names' for the rest, in every language.
dataset_keytext
The checklist this entry comes from.
descendant_countnumber
How many names sit below it - subspecies, varieties and so on.
habitatslist
Where it lives: Marine, Freshwater or Terrestrial.
is_synonymtrue/false
True when this name has been superseded by another.
keynumber
GBIF's id for this species. This is the key every other action here takes.
published_intext
The work the name was first published in.
ranktext
Species, Genus, Family and so on.
scientific_nametext
The full name with its authorship, e.g. Puma concolor (Linnaeus, 1771).
statustext
Accepted for the current name, Synonym for an older one, Doubtful where GBIF is unsure.
threat_statuseslist
Conservation assessments GBIF holds, e.g. Least concern, Endangered. Empty for most species.
urltext
The species' page on gbif.org.
Example output
{
  "accepted_key": null,
  "accepted_name": "",
  "authorship": "(Linnaeus, 1771)",
  "canonical_name": "Puma concolor",
  "classification": {
    "class": "Mammalia",
    "family": "Felidae",
    "genus": "Puma",
    "kingdom": "Animalia",
    "order": "Carnivora",
    "phylum": "Chordata",
    "species": "Puma concolor"
  },
  "common_name": "puma",
  "dataset_key": "d7dddbf4-2cf0-4f39-9b2a-bb099caae36c",
  "descendant_count": 7,
  "habitats": [],
  "is_synonym": false,
  "key": 2435099,
  "published_in": "Mantissa Plantarum vol.2 p.266",
  "rank": "Species",
  "scientific_name": "Puma concolor (Linnaeus, 1771)",
  "status": "Accepted",
  "threat_statuses": [],
  "url": "https://www.gbif.org/species/2435099"
}

List common names

What people actually call a species, in every language GBIF has recorded - a puma has 230 names across 40-odd languages. Pick a language to get only those, for labelling something in the language your readers speak. No API key required.

Inputs

Species keykeytextRequired
The species' key in GBIF. 'Look up a species name' and 'Search for species' both return one, and so does every occurrence record.
Languagelanguagetext
Optional. Only names in this language. Leave it blank for every language at once.
How many to returnlimitnumber
Optional. Up to 1000 names a page; 50 by default.From 1 to 1000. Default: 50.

Outputs

language_filtertext
The language that was asked for. Empty when all languages were returned.
nameslist
The common names, one entry each.
returned_countnumber
How many came back.
total_countnumber
How many names there are in the chosen language, before the page size was applied.
Example output
{
  "language_filter": "eng",
  "names": [
    {
      "country_code": "",
      "language_code": "eng",
      "name": "Mountain Lion",
      "source": "Catalogue of Life"
    },
    {
      "country_code": "",
      "language_code": "eng",
      "name": "Puma",
      "source": "Catalogue of Life"
    }
  ],
  "returned_count": 2,
  "total_count": 2
}

Look up a species name

Check a scientific name against GBIF's own list and get back the accepted spelling, the rank, and the full classification from kingdom down to species. The step to run over a column of names before anything else: it catches typos, replaces an out-of-date name with the current one, and fills in the family and order nobody wrote down. When GBIF does not recognise a name it says so rather than guessing. No API key required.

Inputs

Scientific namenametextRequired
The name to check. A species, or any broader group - Felidae and Aves work as well as Puma concolor. GBIF matches scientific names rather than common ones, so 'jaguar' will not be found where 'Panthera onca' will.

Outputs

canonical_nametext
The name without authorship, e.g. Puma concolor.
classificationobject
Where this organism sits in the tree of life, from kingdom down to species. Group or sort on 'family' or 'order' to summarise a long list of records.
confidencenumber
How sure GBIF is, from 0 to 100.
foundtrue/false
True when GBIF recognised the name itself. This is the field to branch on. It is false when GBIF could only place the name in a broader group, even though a high confidence comes back with that - the confidence belongs to the group it fell back to, not to the name you asked about.
is_synonymtrue/false
True when this name has been superseded by another.
keynumber
GBIF's id for this species. This is the key every other action here takes.
match_typetext
How it was found: an exact match, a close match on a different spelling, or no match.
notetext
What to do about a name that was not found. Empty when it was.
ranktext
Species, Genus, Family and so on.
scientific_nametext
The full name with its authorship, e.g. Puma concolor (Linnaeus, 1771).
searched_fortext
The name that was looked up.
statustext
Accepted for the current name, Synonym for an older one, Doubtful where GBIF is unsure.
urltext
The species' page on gbif.org.
Example output
{
  "canonical_name": "Puma concolor",
  "classification": {
    "class": "Mammalia",
    "family": "Felidae",
    "genus": "Puma",
    "kingdom": "Animalia",
    "order": "Carnivora",
    "phylum": "Chordata",
    "species": "Puma concolor"
  },
  "confidence": 99,
  "found": true,
  "is_synonym": false,
  "key": 2435099,
  "match_type": "Exact match",
  "note": "",
  "rank": "Species",
  "scientific_name": "Puma concolor (Linnaeus, 1771)",
  "searched_for": "Puma concolor",
  "status": "Accepted",
  "url": "https://www.gbif.org/species/2435099"
}

Search datasets

Find the datasets behind the records - who collected what, where, and how much of it. Useful on its own ('what bird datasets does Kenya publish?') and as the step before narrowing a record search to one source. No API key required.

Inputs

Search textquerytext
Optional. Words to look for in the title, description and keywords.
Kind of datasettypetext
Optional. Occurrence records are individual sightings and specimens; a checklist is a list of species with no records attached.One of: OCCURRENCE (Occurrence records - individual sightings and specimens), CHECKLIST (Checklist - a list of species), SAMPLING_EVENT (Sampling event - surveys with a documented method), METADATA (Metadata only - a description with no records).
Published frompublishing_countrytext
Optional. Only datasets published by an organization in this country - which is where the publisher is, not necessarily where the records were collected.
Publisherpublisher_keytext
Optional. Only datasets from this one organization. 'Search publishers' returns the key.
How many to returnlimitnumber
Optional. Up to 1000 datasets a page; 20 by default.From 1 to 1000. Default: 20.
Skipoffsetnumber
Optional. How many to skip before this page, for walking through a long list. Leave blank to start at the beginning.From 0 to 100000. Default: 0.

Outputs

datasetslist
The datasets that matched.
has_moretrue/false
True when there are more to fetch. Add the page size to Skip and run again.
limitnumber
The page size that was used.
offsetnumber
How many were skipped.
returned_countnumber
How many came back on this page.
total_countnumber
How many datasets match in total, not just on this page.
Example output
{
  "datasets": [
    {
      "citation": "",
      "description": "Research-grade records from iNaturalist.",
      "doi": "10.15468/ab3s5x",
      "doi_url": "https://doi.org/10.15468/ab3s5x",
      "homepage": "https://www.inaturalist.org/observations",
      "key": "50c9509d-22c7-4a22-a47d-8c48425ef4a7",
      "keywords": [
        "Observation",
        "Citizen science"
      ],
      "license": "CC BY-NC 4.0 (credit required, non-commercial)",
      "license_url": "http://creativecommons.org/licenses/by-nc/4.0/legalcode",
      "published_on": "2026-09-07T00:00:00.000+00:00",
      "publisher": "iNaturalist.org",
      "publisher_key": "28eb1a3f-1c15-4a95-931a-4af90ecb574d",
      "publishing_country_code": "US",
      "record_count": 166947411,
      "subtype": "Observation",
      "title": "iNaturalist Research-grade Observations",
      "type": "Occurrence records",
      "updated_on": "2026-09-10T19:54:12.868+00:00",
      "url": "https://www.gbif.org/dataset/50c9509d-22c7-4a22-a47d-8c48425ef4a7"
    }
  ],
  "has_more": true,
  "limit": 20,
  "offset": 0,
  "returned_count": 1,
  "total_count": 217
}

Search for species

Find species by name when you do not know the exact one. Where 'Look up a species name' answers 'is this name right', this answers 'what names are there like this'. Narrow by rank, by whether the name is current, by whether the organism lives on land, in fresh water or in the sea, or to everything within a group such as Felidae. No API key required.

Inputs

Search textquerytext
Optional. Part of a name to look for. Scientific names match best; common names are indexed too but rank by text rather than by fame, so 'jaguar' finds a moth called Schinia jaguarina before it finds the cat.
Rankranktext
Optional. Only names at this level. Set it to Species to keep genera and families out of the results.One of: KINGDOM, PHYLUM, CLASS, ORDER, FAMILY, GENUS, SPECIES, SUBSPECIES, VARIETY, FORM.
Name statusstatustext
Optional. Set it to Accepted to leave out older names that have since been replaced.One of: ACCEPTED (Accepted - the current name for this organism), SYNONYM (Synonym - an older or alternative name), DOUBTFUL (Doubtful - GBIF is not confident this name is valid).
Habitathabitatlist
Optional. Only species living here. Choose several to accept any of them.One or more of: MARINE (Marine - the sea), FRESHWATER, TERRESTRIAL (Terrestrial - on land).
Within this grouphighest_taxontext
Optional. Only names inside this group - Felidae for the cats, Aves for the birds. A name or a key from an earlier step both work.
How many to returnlimitnumber
Optional. Up to 1000 species a page; 20 by default.From 1 to 1000. Default: 20.
Skipoffsetnumber
Optional. How many to skip before this page, for walking through a long list. Leave blank to start at the beginning.From 0 to 100000. Default: 0.

Outputs

has_moretrue/false
True when there are more to fetch. Add the page size to Skip and run again.
limitnumber
The page size that was used.
offsetnumber
How many were skipped.
returned_countnumber
How many came back on this page.
specieslist
The species that matched.
total_countnumber
How many species match in total, not just on this page.
Example output
{
  "has_more": true,
  "limit": 20,
  "offset": 0,
  "returned_count": 1,
  "species": [
    {
      "accepted_key": null,
      "accepted_name": "",
      "authorship": "(Linnaeus, 1771)",
      "canonical_name": "Puma concolor",
      "classification": {
        "class": "Mammalia",
        "family": "Felidae",
        "genus": "Puma",
        "kingdom": "Animalia",
        "order": "Carnivora",
        "phylum": "Chordata",
        "species": "Puma concolor"
      },
      "common_name": "Puma",
      "dataset_key": "d7dddbf4-2cf0-4f39-9b2a-bb099caae36c",
      "descendant_count": 7,
      "habitats": [
        "Terrestrial"
      ],
      "is_synonym": false,
      "key": 2435099,
      "published_in": "Mantissa Plantarum vol.2 p.266",
      "rank": "Species",
      "scientific_name": "Puma concolor (Linnaeus, 1771)",
      "status": "Accepted",
      "threat_statuses": [
        "Least concern"
      ],
      "url": "https://www.gbif.org/species/2435099"
    }
  ],
  "total_count": 123
}

Search occurrence records

Find records of where a species has actually been found - museum specimens, survey results and citizen-science sightings pooled from thousands of institutions. Every filter is optional and they combine, so one step answers 'jaguars in Brazil since 2020 with a photo' as easily as 'everything in this dataset'. Each record comes back with what was found, where, when, who found it and where the data came from. No API key required.

Inputs

Speciesspeciestext
Optional. A scientific name such as Panthera onca, or a broader group such as Felidae or Aves. A species key from an earlier step works here too. GBIF matches scientific names rather than common ones, so if a name is not recognised the step says so instead of guessing - use 'Search for species' to find the right one.
Countrycountrytext
Optional. Only records found in this country.
Continentcontinenttext
Optional. Only records found on this continent. Use it instead of Country to cover a whole region at once.One of: AFRICA, ANTARCTICA, ASIA, EUROPE, NORTH_AMERICA (North America), OCEANIA, SOUTH_AMERICA (South America).
Found on or afterrecorded_fromdate
Optional. Only records from this date onwards. Leave the other date blank to mean 'ever since'.
Found on or beforerecorded_todate
Optional. Only records up to this date. Leave the other date blank to mean 'from the beginning'.
Kind of evidencebasis_of_recordlist
Optional. What the record is based on. Choose several to accept any of them, or leave it blank for all. Preserved specimens are the most reliably identified; human observations are much the most numerous.One or more of: HUMAN_OBSERVATION (Human observation - someone saw it), MACHINE_OBSERVATION (Machine observation - a camera or sensor caught it), PRESERVED_SPECIMEN (Preserved specimen - held in a museum or herbarium), LIVING_SPECIMEN (Living specimen - in a zoo, garden or culture collection), FOSSIL_SPECIMEN (Fossil specimen), MATERIAL_SAMPLE (Material sample - tissue, DNA or similar), MATERIAL_CITATION (Material citation - a specimen cited in a publication), LITERATURE (Literature - taken from a publication), OCCURRENCE (Occurrence - the publisher did not say which), UNKNOWN.
Present or absentoccurrence_statustext
Optional. Nearly every record says a species was found somewhere, but a few say it was looked for and not found. Leave this blank for both, as gbif.org does.One of: PRESENT (Present - the species was found), ABSENT (Absent - it was looked for and not found).
Only records with mediamedia_typelist
Optional. Only records with a photo, video or sound recording attached. Choose several to accept any of them.One or more of: StillImage (Photo), MovingImage (Video), Sound (Sound recording), InteractiveResource (Interactive resource).
Datasetdataset_keytext
Optional. Only records from this one dataset. 'Search datasets' returns the key, and so does every record.
Found byrecorded_bytext
Optional. Only records credited to this person or team.
Only records with coordinateshas_coordinatestrue/false
Optional. Turn on when you are going to map or measure the results - roughly a fifth of records have no position at all.
Place or keywordsearch_texttext
Optional. Matches the words in a record, which is the way to search by place: 'Yellowstone', 'Serengeti'. For a species, use the Species field above instead - it resolves the name properly.
How many to returnlimitnumber
Optional. Up to 300 records a page; 20 by default.From 1 to 300. Default: 20.
Skipoffsetnumber
Optional. How many to skip before this page, for walking through a long list. Leave blank to start at the beginning.From 0 to 100000. Default: 0.

Outputs

has_moretrue/false
True when there are more to fetch. Add the page size to Skip and run again.
limitnumber
The page size that was used.
offsetnumber
How many were skipped.
recordslist
The records that matched.
returned_countnumber
How many came back on this page.
species_matchedobject
Which species was actually searched for. Filled in when the Species field was used, so a name that resolved to something unexpected is visible in the result rather than hidden in the request. Empty when no species was given.
total_countnumber
How many records match in total, not just on this page.
Example output
{
  "has_more": true,
  "limit": 20,
  "offset": 0,
  "records": [
    {
      "accepted_scientific_name": "Panthera onca (Linnaeus, 1758)",
      "basis_of_record": "Human observation",
      "catalog_number": "333796888",
      "classification": {
        "class": "Mammalia",
        "family": "Felidae",
        "genus": "Panthera",
        "kingdom": "Animalia",
        "order": "Carnivora",
        "phylum": "Chordata",
        "species": "Panthera onca"
      },
      "collection_code": "Observations",
      "continent": "South America",
      "coordinate_uncertainty_metres": 30508.0,
      "country": "Brazil",
      "country_code": "BR",
      "dataset_key": "50c9509d-22c7-4a22-a47d-8c48425ef4a7",
      "dataset_name": "iNaturalist research-grade observations",
      "depth_metres": null,
      "elevation_metres": null,
      "identified_by": "Miguel A. Paix\u00e3o",
      "individual_count": null,
      "institution": "iNaturalist",
      "issues": [
        "COORDINATE_ROUNDED"
      ],
      "key": 6129956519,
      "latitude": -20.061761,
      "license": "CC BY 4.0 (credit required)",
      "license_url": "http://creativecommons.org/licenses/by/4.0/legalcode",
      "life_stage": "Adult",
      "locality": "Miranda, BR-MS, BR",
      "longitude": -56.797438,
      "media": [
        {
          "creator": "Miguel A. Paix\u00e3o",
          "format": "image/jpeg",
          "license": "http://creativecommons.org/licenses/by/4.0/",
          "page_url": "https://www.inaturalist.org/photos/626403359",
          "type": "Photo",
          "url": "https://inaturalist-open-data.s3.amazonaws.com/photos/626403359/original.jpg"
        }
      ],
      "occurrence_status": "Present",
      "publisher_key": "28eb1a3f-1c15-4a95-931a-4af90ecb574d",
      "rank": "Species",
      "recorded_by": "Miguel A. Paix\u00e3o",
      "recorded_on": "2026-01-04T15:31",
      "scientific_name": "Panthera onca (Linnaeus, 1758)",
      "species": "Panthera onca",
      "species_key": 5219426,
      "state_province": "Mato Grosso do Sul",
      "taxon_key": 5219426,
      "url": "https://www.gbif.org/occurrence/6129956519",
      "year": 2026
    }
  ],
  "returned_count": 1,
  "species_matched": {
    "confidence": 99,
    "key": 5219426,
    "match_type": "Exact match",
    "rank": "Species",
    "scientific_name": "Panthera onca (Linnaeus, 1758)"
  },
  "total_count": 979
}

Search publishers

Find the institutions that publish into GBIF - museums, herbaria, universities, government agencies and citizen-science projects - by name or by country, with how many datasets each has published. The far end of the trail that runs from a record to its dataset to whoever stands behind it. No API key required.

Inputs

Search textquerytext
Optional. Words to look for in the name and description.
Countrycountrytext
Optional. Only organizations based in this country.
How many to returnlimitnumber
Optional. Up to 1000 publishers a page; 20 by default.From 1 to 1000. Default: 20.
Skipoffsetnumber
Optional. How many to skip before this page, for walking through a long list. Leave blank to start at the beginning.From 0 to 100000. Default: 0.

Outputs

has_moretrue/false
True when there are more to fetch. Add the page size to Skip and run again.
limitnumber
The page size that was used.
offsetnumber
How many were skipped.
publisherslist
The organizations that matched.
returned_countnumber
How many came back on this page.
total_countnumber
How many publishers match in total, not just on this page.
Example output
{
  "has_more": false,
  "limit": 20,
  "offset": 0,
  "publishers": [
    {
      "address": "Calle Lord Cochrane 111, Of 110, San Isidro, Lima, Peru",
      "city": "Lima",
      "country_code": "PE",
      "dataset_count": 1,
      "description": "Assessments and long-term monitoring of biodiversity from the Amazon to the Andes.",
      "email": "",
      "homepage": "",
      "key": "7a2605e0-8a1e-4393-836b-d6d6ac064e74",
      "latitude": -12.11042,
      "longitude": -77.03707,
      "title": "Smithsonian Peru Biodiversity Program",
      "url": "https://www.gbif.org/publisher/7a2605e0-8a1e-4393-836b-d6d6ac064e74"
    }
  ],
  "returned_count": 1,
  "total_count": 8
}

On this page