GBIF API
Free GBIF API with no key: 2 billion+ species occurrence records, taxonomic data and distribution maps from museums and research institutions worldwide. Tested.
Endpoint tested and returned HTTP 200 on 2026-08-19
What is the GBIF API?
The GBIF API is a free, key-free interface to the Global Biodiversity Information Facility — over two billion species occurrence records, full taxonomic hierarchies and distribution data contributed by museums and research institutions worldwide.
GBIF is the largest open biodiversity dataset in existence, aggregating specimen records from natural history collections, research surveys and citizen science across the world. Reading it needs no key at all.
The taxonomic backbone is the part most projects need: every record is resolved to a normalised taxonomy with kingdom through species, plus a stable `key`. That lets you reconcile species names across datasets that spell them differently or use outdated synonyms.
Quick facts
- Base URL
https://api.gbif.org/v1- Authentication
- No API key required for reads. Publishing data requires an account.
- Rate limit
- No published hard limit; bulk users should use the download API rather than paging the search endpoints.
- Pricing
- Free open data; individual records carry their own licences.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the GBIF API
Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.
1. Search the species taxonomy
GET https://api.gbif.org/v1/species/search?q=puma&limit=1
curl 'https://api.gbif.org/v1/species/search?q=puma&limit=1'const res = await fetch("https://api.gbif.org/v1/species/search?q=puma&limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.gbif.org/v1/species/search?q=puma&limit=1", timeout=20)
res.raise_for_status()
print(res.json()){
"offset": 0,
"limit": 1,
"endOfRecords": false,
"count": 1051,
"results": [
{
"key": 326260942,
"datasetKey": "0ecf5aeb-0c50-4063-a9ab-48eba3d21f4b",
"nubKey": 2435098,
"parentKey": 326260933,
"parent": "Felidae",
"kingdom": "Animalia",
"phylum": "Chordata",
"order": "Carnivora",
"family": "Felidae",
"genus": "Puma",
"kingdomKey": 326260404,
"phylumKey": 326260446,
"classKey": 326260931,
"orderKey": 326260932,
"familyKey": 326260933,
"genusKey": 326260942,
"scientificName": "Puma",
"canonicalName": "Puma",
"taxonomicStatus": "ACCEPTED",
"rank": "GENUS",
"origin": "DENORMED_CLASSIFICATION",
"numDescendants": 0,
"numOccurrences": 0,
"habitats": [],
"nomenclaturalStatus": [],
"threatStatuses": [],
"descriptions": [],
"vernacularNames": [],
"synonym": false,
"higherClassificationMap": {
"326260404": "Animalia",
"326260446": "Chordata",
"326260931": "Mammalia",
"326260932": "Carnivora",
"326260933": "Felidae"
},
"class": "Mammalia"
}
],
"facets": []
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | Optional | Free-text search query. puma |
limit | integer | Optional | Results per page, max 1000. 20 |
offset | integer | Optional | Pagination offset. 20 |
rank | string | Optional | Taxonomic rank filter. SPECIES |
highertaxonKey | integer | Optional | Restrict to descendants of a taxon. 212 |
Response fields
countinteger- Total records matching the query.
endOfRecordsboolean- Whether more pages exist.
results[].keyinteger- Stable GBIF taxon identifier.
results[].scientificNamestring- Full scientific name with authorship.
results[].kingdom / phylum / class / order / family / genusstring- Normalised taxonomic hierarchy.
results[].taxonomicStatusstring- ACCEPTED, SYNONYM or DOUBTFUL.
What you can build with the GBIF API
- Build a species lookup or field guide application
- Reconcile species names across datasets using the GBIF backbone
- Map species occurrence records for ecological research
- Support conservation and biodiversity analysis
Common errors and how to fix them
Empty results
The query matched nothing.
Fix: Scientific names work better than common names; the species/match endpoint does fuzzy name resolution.
taxonomicStatus: SYNONYM
The name is an outdated synonym, not the accepted name.
Fix: Follow `acceptedKey` to the currently accepted taxon before displaying.
Very large occurrence queries time out
Occurrence search spans billions of records.
Fix: Use the asynchronous download API for anything beyond a few thousand records.
GBIF API — frequently asked questions
Is the GBIF API free?
Yes, completely free with no API key for reads. It is a publicly funded international biodiversity infrastructure.
How much data does GBIF hold?
Over two billion species occurrence records contributed by museums, herbaria, research surveys and citizen science projects worldwide.
What is the GBIF taxonomic backbone?
A normalised taxonomy that every record is matched against, so datasets using different or outdated names resolve to the same stable taxon key. It is the main reason to use GBIF for name reconciliation.
Why does my species show as a SYNONYM?
The name you searched is an outdated or alternative name. Follow the `acceptedKey` field to the currently accepted taxon.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
GBIF is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.