Science & Math — entry 005 of 28

GBIF

Verified Jul 2026

The Global Biodiversity Information Facility is a keyless REST API for searching species, occurrence, and dataset records aggregated from natural history collections, herbaria, and citizen-science platforms worldwide — its occurrence index alone reports a live count past 3.9 billion records. It's operated by an intergovernmental nonprofit funded by member governments, so querying the API is free; registration is only needed to publish new datasets, not to read existing ones.

biodiversitytaxonomyoccurrence-dataopen-datanatural-history
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score94out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 94 on greatapis.com
<a href="https://greatapis.com/api/gbif/"><img src="https://greatapis.com/badge/gbif.svg" alt="Scored 94 on greatapis.com"></a>

Auth quickstart

  1. No key needed — call it now.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://api.gbif.org/v1/https://api.gbif-uat.org/v1/
Occurrences8

This API provides services related to the retrieval of single occurrence records.

GET/occurrence/termOccurrence terms
Responses
StatusDescriptionSchema
200OK
GET/occurrence/{datasetKey}/{occurrenceId}Occurrence by dataset key and occurrence id
Parameters
NameInRequiredType
datasetKeypathyesstring
occurrenceIdpathyesstring
Responses
StatusDescriptionSchema
200Occurrence foundOccurrence
400Invalid identifier supplied
404Occurrence not found
GET/occurrence/{datasetKey}/{occurrenceId}/fragmentOccurrence fragment by dataset key and occurrence id
Parameters
NameInRequiredType
datasetKeypathyesstring
occurrenceIdpathyesstring
Responses
StatusDescriptionSchema
200Occurrence fragment in JSON or XML format
400Invalid identifier supplied
404Occurrence not found
GET/occurrence/{datasetKey}/{occurrenceId}/verbatimVerbatim occurrence by dataset key and occurrence id
Parameters
NameInRequiredType
datasetKeypathyesstring
occurrenceIdpathyesstring
Responses
StatusDescriptionSchema
200Verbatim occurrence foundVerbatimOccurrence
400Invalid identifier supplied
404Occurrence not found
GET/occurrence/{gbifId}Occurrence by id
Parameters
NameInRequiredType
gbifIdpathyesinteger
Responses
StatusDescriptionSchema
200Occurrence foundOccurrence
400Invalid identifier supplied
404Occurrence not found
GET/occurrence/{gbifId}/experimental/relatedRelated occurrences by gbifId
Parameters
NameInRequiredType
gbifIdpathyesinteger
Responses
StatusDescriptionSchema
200Occurrence found, list of related occurrences returned.
400Invalid identifier supplied
404Occurrence not found
GET/occurrence/{gbifId}/fragmentOccurrence fragment by id
Parameters
NameInRequiredType
gbifIdpathyesinteger
Responses
StatusDescriptionSchema
200Occurrence fragment in JSON or XML format
400Invalid identifier supplied
404Occurrence not found
GET/occurrence/{gbifId}/verbatimVerbatim occurrence by id
Parameters
NameInRequiredType
gbifIdpathyesinteger
Responses
StatusDescriptionSchema
200Verbatim occurrence foundVerbatimOccurrence
400Invalid identifier supplied
404Occurrence not found
Searching occurrences19

This API provides services for searching occurrence records that have been indexed by GBIF. In order to retrieve all results for a given search filter you need to issue individual requests for each page, which is limited to a maximum size of 300 records per page. Note that for technical reasons we also have a hard limit for any query of 100,000 records. You will get an error if the offset + limit exceeds 100,000. To retrieve all records beyond 100,000 you should use our asynchronous download service (below) instead.

GET/occurrence/searchOccurrence search
Parameters
NameInRequiredType
acceptedTaxonKeyquerynoarray
associatedSequencesquerynoarray
basisOfRecordquerynoarray
bedquerynoarray
catalogNumberquerynoarray
classKeyquerynoarray
checklistKeyquerynostring
collectionCodequerynoarray
collectionKeyquerynoarray
continentquerynoarray
coordinateUncertaintyInMetersqueryno
countryquerynoarray
crawlIdquerynoarray
datasetIdquerynoarray
datasetKeyquerynoarray
datasetNamequerynoarray
dayquerynoarray
decimalLatitudequeryno
degreeOfEstablishmentquerynoarray
decimalLongitudequeryno
depthqueryno
distanceFromCentroidInMetersqueryno
dwcaExtensionquerynoarray
earliestEonOrLowestEonothemquerynoarray
earliestEraOrLowestErathemquerynoarray
earliestPeriodOrLowestSystemquerynoarray
earliestEpochOrLowestSeriesquerynoarray
earliestAgeOrLowestStagequerynoarray
elevationqueryno
endDayOfYearquerynoarray
establishmentMeansquerynoarray
eventDatequerynoarray
eventIdquerynoarray
familyKeyquerynoarray
fieldNumberquerynoarray
formationquerynoarray
gadmGidquerynoarray
gadmLevel0Gidquerynoarray
gadmLevel1Gidquerynoarray
gadmLevel2Gidquerynoarray
gadmLevel3Gidquerynoarray
gbifIdquerynointeger
gbifRegionquerynoarray
genusKeyquerynoarray
geoDistancequerynostring
georeferencedByquerynoarray
geometryquerynoarray
groupquerynoarray
hasCoordinatequerynoboolean
higherGeographyquerynoarray
highestBiostratigraphicZonequerynoarray
hasGeospatialIssuequerynoboolean
hostingOrganizationKeyquerynoarray
identifiedByquerynoarray
identifiedByIDquerynoarray
installationKeyquerynoarray
institutionCodequerynoarray
institutionKeyquerynoarray
issuequerynoarray
isInClusterquerynoboolean
islandquerynoarray
islandGroupquerynoarray
isSequencedquerynoboolean
iucnRedListCategoryquerynoarray
kingdomKeyquerynoarray
lastInterpretedquerynoarray
latestEonOrHighestEonothemquerynoarray
latestEraOrHighestErathemquerynoarray
latestPeriodOrHighestSystemquerynoarray
latestEpochOrHighestSeriesquerynoarray
latestAgeOrHighestStagequerynoarray
licensequerynoarray
lifeStagequerynoarray
localityquerynoarray
lowestBiostratigraphicZonequerynoarray
measurementTypequerynoarray
measurementTypeIDquerynoarray
mediaTypequerynoarray
memberquerynoarray
modifiedquerynoarray
monthquerynoarray
networkKeyquerynoarray
nucleotideSequence.nucleotideSequenceIDquerynoarray
nucleotideSequence.targetGenequerynoarray
nucleotideSequence.sequencequerynoarray
nucleotideSequence.sequenceLengthquerynoarray
nucleotideSequence.gcContentquerynoarray
nucleotideSequence.nonIupacFractionquerynoarray
nucleotideSequence.nonACGTNFractionquerynoarray
nucleotideSequence.nFractionquerynoarray
nucleotideSequence.nRunsCappedquerynoarray
nucleotideSequence.naturalLanguageDetectedquerynoboolean
nucleotideSequence.endsTrimmedquerynoboolean
nucleotideSequence.gapsOrWhitespaceRemovedquerynoboolean
nucleotideSequence.invalidquerynoboolean
occurrenceIdquerynoarray
occurrenceStatusquerynostring
orderKeyquerynoarray
organismIdquerynoarray
organismQuantityquerynoarray
organismQuantityTypequerynoarray
otherCatalogNumbersquerynoarray
parentEventIdquerynoarray
pathwayquerynoarray
phylumKeyquerynoarray
preparationsquerynoarray
previousIdentificationsquerynoarray
programmequerynoarray
projectIdquerynoarray
protocolquerynoarray
publishingCountryquerynoarray
publishedByGbifRegionquerynoarray
publishingOrgquerynoarray
recordedByquerynoarray
recordedByIDquerynoarray
recordNumberquerynoarray
relativeOrganismQuantityquerynoarray
repatriatedquerynoboolean
sampleSizeUnitquerynoarray
sampleSizeValuequerynoarray
samplingProtocolquerynoarray
sexquerynoarray
scientificNamequerynoarray
speciesKeyquerynoarray
startDayOfYearquerynoarray
stateProvincequerynoarray
taxonConceptIdquerynoarray
taxonKeyquerynoarray
taxonIdquerynoarray
taxonomicIssuequerynoarray
taxonomicStatusquerynoarray
typeStatusquerynoarray
verbatimScientificNamequerynoarray
waterBodyquerynoarray
yearquerynoarray
geologicalTimequeryno
lithostratigraphyqueryno
biostratigraphyqueryno
matchCasequerynoboolean
shufflequerynostring
hlquerynoboolean
qquerynostring
limitquerynointeger
offsetquerynointeger
facetquerynostring
facetMincountquerynointeger
facetMultiselectquerynoboolean
facetLimitquerynointeger
facetOffsetquerynointeger
Responses
StatusDescriptionSchema
200Occurrence search is validSearchResponseOccurrenceOccurrenceSearchParameter
400Invalid query, e.g. invalid vocabulary values
GET/occurrence/search/catalogNumberSuggest catalogue numbers
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/collectionCodeSuggest collection codes
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/datasetNameSuggest dataset names
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/eventIdSuggest event ids
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/experimental/term/{term}Suggest values for supported terms
Parameters
NameInRequiredType
termqueryyesstring
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/identifiedBySuggest identified by values
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/institutionCodeSuggest institution codes
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/localitySuggest locality strings
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/occurrenceIdSuggest occurrence ids
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/organismIdSuggest organism ids
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/otherCatalogNumbersSuggest other catalogue numbers
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/parentEventIdSuggest parent event ids
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
POST/occurrence/search/predicateOccurrence search using predicates
Request body

application/json (required)

Responses
StatusDescriptionSchema
200Occurrence search is validSearchResponseOccurrenceOccurrenceSearchParameter
400Invalid query, e.g. invalid vocabulary values
GET/occurrence/search/recordNumberSuggest record numbers
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/recordedBySuggest recorded by values
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/samplingProtocolSuggest sampling protocols
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/stateProvinceSuggest states/provinces
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
GET/occurrence/search/waterBodySuggest water bodies
Parameters
NameInRequiredType
qqueryyesstring
limitqueryyesinteger
Responses
StatusDescriptionSchema
200OK
Occurrence downloads17

**For a guide to making downloads through the API, see the [guide to API downloads](/en/data-use/api-downloads).** *The documentation here is automatically generated from the Java code. It is always up-to-date, but the structure for the main download request method is complex.* This API provides services to request bulk downloads of occurrence records and retrieve information about those downloads. Occurrence downloads are created asynchronously — the user requests a download and, once complete, is sent an email with a link to the resulting file. It is necessary to register as a user at [GBIF.org](https://www.gbif.org/) to create a download request, and use HTTP authentication using the username (not the email) and password. ### Occurrence Download Predicates<a id="predicates"></a> For the API reference for download predicates expand the “Schema” → `predicate` section of the request body schema on the [creation API call](#Occurrence%20downloads/requestDownload) (the first one after this text). ### Occurrence Download Limits<a id="limits"></a> Occurrence downloads demand significant computational resources, and are monitored and limited according to the GBIF platform load. In order to avoid that downloads requested by a single user utilize most of the resources two rules have been set: 1. Download complexity limits: * A download predicate may contain a maximum of 101,000 items (taxon keys, kingdom keys, phylum keys, catalogue numbers, occurrence ids and so on). * A download predicate may contain a maximum of 10,000 points in any “within” predicate geometries. 2. Limits on incomplete (preparing, running) downloads: * If the total number of incomplete downloads is fewer than 100, any single user can have no more than 3 incomplete downloads. * If the total number of downloads is fewer than 1000 any single user may only have 1 download. The number of user downloads currently in progress can be seen on the [System Health page](https://www.gbif.org/system-health). Your own downloads can be seen on your [My Downloads](https://www.gbif.org/user/download) page.

GET/occurrence/download/dataset/{datasetKey}List the downloads activity of a dataset.
Parameters
NameInRequiredType
datasetKeypathyesstring
showDownloadDetailsquerynoboolean
limitquerynointeger
offsetquerynointeger
Responses
StatusDescriptionSchema
200Dataset found and download information returnedPagingResponseDatasetOccurrenceDownloadUsage
400Invalid request
404Entity or subentity not found
5XXSystem failure – try again
POST/occurrence/download/requestRequests the creation of a download file.
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Download requested, key returned.
400Invalid query, see [predicates](#predicates).
429Too many downloads, wait for one of your downloads to complete. See [limits](#limits)
GET/occurrence/download/request/predicateConverts a plain search query into a download predicate.
Parameters
NameInRequiredType
notification_addressquerynostring
formatqueryyesstring
verbatimExtensionsquerynostring
interpretedExtensionsquerynostring
descriptionquerynostring
machineDescriptionquerynostring
checklistKeyquerynostring
Responses
StatusDescriptionSchema
200OKDownloadRequest
GET/occurrence/download/request/sqlConverts a plain search query into an SQL download predicate.
Parameters
NameInRequiredType
notification_addressquerynostring
descriptionquerynostring
machineDescriptionquerynostring
checklistKeyquerynostring
Responses
StatusDescriptionSchema
200OK
POST/occurrence/download/request/sqlConverts a predicate download request into an SQL download request.
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK
POST/occurrence/download/request/validate**Experimental** Validates the SQL contained in an SQL download request.
Request body

application/json (required)

Responses
StatusDescriptionSchema
200SQL is valid.
400Invalid query, see other documentation.
GET/occurrence/download/request/{key}Retrieve the resulting download file
Parameters
NameInRequiredType
keypathyesstring
Responses
StatusDescriptionSchema
200OK
302Download found, follow the redirect to the data file (e.g. zip file).
404Invalid download key.
410Download file was erased and is no longer available.
DELETE/occurrence/download/request/{key}Cancel a running download
Parameters
NameInRequiredType
keypathyesstring
Responses
StatusDescriptionSchema
204Download cancelled.
404Invalid download key.
GET/occurrence/download/user/{user}Lists all occurrence downloads from a user
Parameters
NameInRequiredType
userpathyesstring
pagequeryno
statusquerynoarray
fromquerynostring
statisticsquerynoboolean
Responses
StatusDescriptionSchema
200OKPagingResponseDownload
GET/occurrence/download/user/{user}/countCounts all downloads from a user
Parameters
NameInRequiredType
userpathyesstring
statusquerynoarray
fromquerynostring
Responses
StatusDescriptionSchema
200OK
GET/occurrence/download/{key}Information about an occurrence download
Parameters
NameInRequiredType
keypathyesstring
statisticsquerynoboolean
Responses
StatusDescriptionSchema
200Occurrence download information.Download
400Invalid request
404Entity or subentity not found
5XXSystem failure – try again
GET/occurrence/download/{key}/citationShows the citation for an occurrence download
Parameters
NameInRequiredType
keypathyesstring
Responses
StatusDescriptionSchema
200Download citation.
400Invalid request
404Entity or subentity not found
5XXSystem failure – try again
GET/occurrence/download/{key}/datasetsLists datasets present in an occurrence download
Parameters
NameInRequiredType
keypathyesstring
datasetTitlequerynostring
sortByquerynostring
sortOrderquerynostring
pagequeryno
Responses
StatusDescriptionSchema
200OKPagingResponseDatasetOccurrenceDownloadUsage
GET/occurrence/download/{key}/datasets/exportExports datasets present in an occurrence download in TSV or CSV format
Parameters
NameInRequiredType
keypathyesstring
formatquerynostring
Responses
StatusDescriptionSchema
200Dataset usage within an occurrence download information.
400Invalid request
404Entity or subentity not found
5XXSystem failure – try again
GET/occurrence/download/{prefix}/{suffix}Information about an occurrence download
Parameters
NameInRequiredType
prefixpathyesstring
suffixpathyesstring
Responses
StatusDescriptionSchema
200Occurrence download information.Download
400Invalid request
404Entity or subentity not found
5XXSystem failure – try again
GET/occurrence/download/{prefix}/{suffix}/citationShows the citation for an occurrence download
Parameters
NameInRequiredType
prefixpathyesstring
suffixpathyesstring
Responses
StatusDescriptionSchema
200Download citation.
400Invalid request
404Entity or subentity not found
5XXSystem failure – try again
GET/occurrence/download/{prefix}/{suffix}/datasetsLists datasets present in an occurrence download
Parameters
NameInRequiredType
prefixpathyesstring
suffixpathyesstring
limitquerynointeger
offsetquerynointeger
Responses
StatusDescriptionSchema
200Dataset usage within an occurrence download information.PagingResponseDatasetOccurrenceDownloadUsage
400Invalid request
404Entity or subentity not found
5XXSystem failure – try again
Occurrence download formats6

This API lists the fields present in the various download formats, their data types and their term identifiers.

GET/occurrence/download/describe/dwca**Experimental.** Describes the fields present in a Darwin Core Archive format download
Responses
StatusDescriptionSchema
200Field descriptionDwcDownload
GET/occurrence/download/describe/simpleAvro**Experimental.** Describes the fields present in a Simple Avro format download
Responses
StatusDescriptionSchema
200Field descriptionTable
GET/occurrence/download/describe/simpleCsv**Experimental.** Describes the fields present in a Simple CSV format download
Responses
StatusDescriptionSchema
200Field descriptionTable
GET/occurrence/download/describe/simpleParquet**Experimental.** Describes the fields present in a Simple Parquet format download
Responses
StatusDescriptionSchema
200Field descriptionTable
GET/occurrence/download/describe/speciesList**Experimental.** Describes the fields present in a Species List format download
Responses
StatusDescriptionSchema
200Field descriptionTable
GET/occurrence/download/describe/sql**Very experimental.** Describes the fields available for searching or download when using an SQL query.
Responses
StatusDescriptionSchema
200Field descriptionTable
Occurrence download statistics6

This API provides statistics about occurrence downloads.

GET/occurrence/download/statisticsProvides summarized download statistics
Parameters
NameInRequiredType
fromDatequerynostring
toDatequerynostring
publishingCountryquerynostring
datasetKeyquerynostring
publishingOrgKeyquerynostring
limitquerynointeger
offsetquerynointeger
Responses
StatusDescriptionSchema
200OKPagingResponseDownloadStatistics
GET/occurrence/download/statistics/downloadedRecordsByDatasetSummarize downloaded records by dataset
Parameters
NameInRequiredType
fromDatequerynostring
toDatequerynostring
publishingCountryquerynostring
datasetKeyquerynostring
publishingOrgKeyquerynostring
Responses
StatusDescriptionSchema
200OK
GET/occurrence/download/statistics/downloadsByDatasetSummarize downloads by dataset
Parameters
NameInRequiredType
fromDatequerynostring
toDatequerynostring
publishingCountryquerynostring
datasetKeyquerynostring
publishingOrgKeyquerynostring
Responses
StatusDescriptionSchema
200OK
GET/occurrence/download/statistics/downloadsBySourceSummarize downloaded record totals by source
Parameters
NameInRequiredType
fromDatequerynostring
toDatequerynostring
sourcequerynostring
Responses
StatusDescriptionSchema
200Download statistics.
400Invalid request
404Entity or subentity not found
5XXSystem failure – try again
GET/occurrence/download/statistics/downloadsByUserCountrySummarizes downloads by month, grouped by the user's country, territory or island
Parameters
NameInRequiredType
fromDatequerynostring
toDatequerynostring
userCountryquerynostring
Responses
StatusDescriptionSchema
200Download statistics.
400Invalid request
404Entity or subentity not found
5XXSystem failure – try again
GET/occurrence/download/statistics/exportExport summary of occurrence downloads
Parameters
NameInRequiredType
formatquerynostring
fromDatequeryyesstring
toDatequeryyesstring
publishingCountryqueryyesstring
datasetKeyquerynostring
publishingOrgKeyquerynostring
Responses
StatusDescriptionSchema
200OK
Occurrence metrics2

This API provides services to retrieve various counts and metrics provided for occurrence records. The metrics that are currently supported are listed by the API itself, see [the schema method](#operation/getOccurrenceCountSchema) for details.

GET/occurrence/countOccurrence counts
Parameters
NameInRequiredType
arg0queryyes
basisOfRecordquerynostring
countryquerynostring
datasetKeyquerynostring
isGeoreferencedquerynoboolean
issuequerynostring
protocolquerynostring
publishingCountryquerynostring
taxonKeyquerynostring
typeStatusquerynostring
yearquerynointeger
checklistKeyquerynostring
Responses
StatusDescriptionSchema
200Count returned.
400Invalid query.
GET/occurrence/count/schemaSupported occurrence count metrics
Responses
StatusDescriptionSchema
200Supported metrics.
Occurrence inventories5

This API provides services that list all distinct values together with their occurrence count for a given occurrence property. Only a few properties are supported, each with its own service to call.

GET/occurrence/counts/basisOfRecordOccurrence inventory by basis of record
Responses
StatusDescriptionSchema
200Inventory counts returned.
GET/occurrence/counts/countriesOccurrence inventory by country
Parameters
NameInRequiredType
publishingCountryquerynostring
Responses
StatusDescriptionSchema
200Inventory counts returned.
400Invalid query.
GET/occurrence/counts/datasetsOccurrence inventory by dataset
Parameters
NameInRequiredType
countryquerynostring
nubKeyquerynointeger
taxonKeyquerynostring
checklistKeyquerynostring
Responses
StatusDescriptionSchema
200Inventory counts returned.
400Invalid query.
GET/occurrence/counts/publishingCountriesOccurrence inventory by publishing country
Parameters
NameInRequiredType
countryquerynostring
Responses
StatusDescriptionSchema
200Inventory counts returned.
400Invalid query.
GET/occurrence/counts/yearOccurrence inventory by year
Parameters
NameInRequiredType
yearquerynostring
Responses
StatusDescriptionSchema
200Inventory counts returned.
400Invalid query.
GADM regions7

The [GADM Global Administrative Area Database](https://gadm.org) is a high-resolution database of administrative areas of countries. Within GBIF, it is used to index occurrence data by administrative region. This API provides services to search and browse regions and sub-regions down to the third level sub-region.

GET/geocode/gadm/browseList all top-level GADM regions
Parameters
NameInRequiredType
qquerynostring
Responses
StatusDescriptionSchema
200List of GADM regions.
GET/geocode/gadm/browse/{level0}First-level subdivisions of a GADM region
Parameters
NameInRequiredType
level0pathyesstring
qquerynostring
Responses
StatusDescriptionSchema
200List of GADM regions.
404GADM region unknown.
GET/geocode/gadm/browse/{level0}/{level1}Second-level subdivisions of a GADM region
Parameters
NameInRequiredType
level0pathyesstring
level1pathyesstring
qquerynostring
Responses
StatusDescriptionSchema
200List of GADM regions.
404GADM region unknown.
GET/geocode/gadm/browse/{level0}/{level1}/{level2}Third-level subdivisions of a GADM region
Parameters
NameInRequiredType
level0pathyesstring
level1pathyesstring
level2pathyesstring
qquerynostring
Responses
StatusDescriptionSchema
200List of GADM regions.
404GADM region unknown.
GET/geocode/gadm/searchSearch for GADM regions.
Parameters
NameInRequiredType
qquerynostring
gadmLevelquerynostring
gadmGidquerynostring
pagequeryno
Responses
StatusDescriptionSchema
200List of GADM regions.PagingResponseGadmRegion
404GADM region unknown.
GET/geocode/gadm/{gid}Details for a GADM region
Parameters
NameInRequiredType
gidpathyesstring
Responses
StatusDescriptionSchema
200GADM region returned.GadmRegion
404GADM region unknown.
GET/geocode/gadm/{gid}/subdivisionsSubdivisions of a GADM region
Parameters
NameInRequiredType
gidpathyesstring
qquerynostring
Responses
StatusDescriptionSchema
200List of GADM regions.
404GADM region unknown.
Country usages occurrence downloads1
GET/occurrence/download/{key}/countriesLists countries present in an occurrence download
Parameters
NameInRequiredType
keypathyesstring
sortByquerynostring
sortOrderquerynostring
pagequeryno
Responses
StatusDescriptionSchema
200OKPagingResponseCountryOccurrenceDownloadUsage
Organization usages occurrence downloads1
GET/occurrence/download/{key}/organizationsLists organizations present in an occurrence download
Parameters
NameInRequiredType
keypathyesstring
organizationTitlequerynostring
sortByquerynostring
sortOrderquerynostring
pagequeryno
Responses
StatusDescriptionSchema
200OKPagingResponseOrganizationOccurrenceDownloadUsage
home-resource1
GET/
Responses
StatusDescriptionSchema
200OK
occurrence-species-multimedia-resource2
GET/occurrence/experimental/multimedia/species/{checklistKey}/{taxonKey}
Parameters
NameInRequiredType
checklistKeypathyesstring
taxonKeypathyesstring
mediaTypequeryyesstring
limitqueryyesinteger
offsetqueryyesinteger
Responses
StatusDescriptionSchema
200OKTaxonMultimediaSearchResponse
GET/occurrence/experimental/multimedia/species/{taxonKey}
Parameters
NameInRequiredType
taxonKeypathyesstring
mediaTypequeryyesstring
limitqueryyesinteger
offsetqueryyesinteger
Responses
StatusDescriptionSchema
200OKTaxonMultimediaSearchResponse

Try it

Developer reference

Base URLhttps://api.gbif.org/v1
Rate limit

GBIF publishes no fixed numeric quota (techdocs.gbif.org/en/openapi/#rate-limits) — throttling is dynamic based on server load. Common lookups (species matching, geocoding, single-occurrence retrieval) sustain rapid querying; occurrence *search* queries spanning thousands of records may return HTTP 429 under load, at which point GBIF recommends the asynchronous occurrence download API (accepts up to 100,000 search parameters per request) instead of paginating search results.

Key endpoints
  • GET/occurrence/search
  • GET/occurrence/{gbifId}
  • GET/occurrence/count
  • POST/occurrence/download/request
  • GET/occurrence/download/request/{key}