# GBIF biodiversiteit

Meer dan 150 miljoen waarnemingen van soorten in Nederland, onder meer uit waarneming.nl en museumcollecties.

- Uitgever: Global Biodiversity Information Facility
- Gebied: Wereld · Laagste detail: waarneming
- Periode: 1700 – heden · Ververst: dagelijks
- Toegang: Open · Licentie: Per dataset CC0, CC BY of CC BY-NC (78% van de Nederlandse records is CC BY-NC, o.a. waarneming.nl)
- Koppelsleutels: soortnaam, coördinaten
- Status: grijs · 145380218 waarnemingen in NL
- URL: https://www.gbif.org

## Wat kun je ermee?
- **Welke soorten zijn er bij jou gezien?.** Zoek waarnemingen binnen een cirkel rond je huis.
- **Opschuivende soorten.** Volg een zuidelijke soort door de jaren heen en zie of hij noordwaarts trekt.

## Zo verwerk je het
1. **Tel waarnemingen zonder ze op te halen.** De zoek-API (api.gbif.org/v1, geen sleutel) geeft met limit=0 alleen het aantal. Voor Nederland: 150.268.404 waarnemingen op 16 oktober 2026.
   `https://api.gbif.org/v1/occurrence/search?country=NL&limit=0`
2. **Zoek de soortcode op.** Filteren gaat op taxonKey, niet op naam. De species-API zet een wetenschappelijke naam om in een sleutel; Halyomorpha halys (bruingemarmerde schildwants) is 4485843.
   `https://api.gbif.org/v1/species/match?name=Halyomorpha%20halys`
3. **Per jaar tellen met een facet.** Met facet=year krijg je de aantallen per jaar in één antwoord. Voor de bruingemarmerde schildwants in Nederland: 6 waarnemingen in 2018, 741 in 2022, 6.362 in 2025. Let op: meer waarnemingen kan ook betekenen dat er meer gezocht wordt.
   `https://api.gbif.org/v1/occurrence/search?country=NL&taxonKey=4485843&limit=0&facet=year&facetLimit=20`

## Interessante koppelingen
- Eerste vlinders van het jaar → [knmi-daggegevens](https://www.opendataindex.nl/bron/knmi-daggegevens.md) via datum. Vergelijk de datum van de eerste waarneming met de voorjaarstemperatuur.

## Vergelijkbare bronnen
- [Waarneming.nl](https://waarneming.nl): De bron van veel Nederlandse waarnemingen, met meer detail.
- [Netherlands Biodiversity API (Naturalis)](https://bioportal.naturalis.nl/nl/api): De collectie van Naturalis zelf, zonder sleutel: 10.732.502 specimens (api.biodiversitydata.nl/v2/specimen/count), waarvan 1.714.520 verzameld in Nederland. Wereldwijde collectie, licentie per record (CC0 in de steekproef). GBIF heeft 9.866.175 records van Naturalis, dus het meeste staat ook daar.
- [OBIS (Ocean Biodiversity Information System)](https://api.obis.org/): Alleen zeeleven, zonder sleutel. Gebied 'Netherlands: all' (areaid 160): 6.090.465 waarnemingen van 6.348 soorten uit 336 datasets (api.obis.org/v3/statistics?areaid=160). Licentie per dataset (veld intellectualrights): ruwweg 195 CC BY, 65 CC0 en 65 CC BY-NC, dus niet alles mag commercieel.

## Waar je op moet letten
- **Pagineren stopt bij 100.000.** De zoek-API geeft maximaal 300 waarnemingen per verzoek, en voorbij offset 100.000 komt er een foutmelding (400). Tellen en groeperen met facet werkt wel over alles.

## API (REST (JSON), GBIF API v1)

- Basis: https://api.gbif.org/v1
- Toegang: Zoeken, tellen en soorten opzoeken zonder sleutel. Alleen grote downloads (occurrence/download/request) vragen een gratis GBIF-account (gebruikersnaam en wachtwoord). (getest)
- Formaten: json, csv, png
- Omvang: 150297511 waarnemingen met country=NL (16 okt 2026) (getest)
- Filteren: Queryparameters per veld; herhaal een parameter voor OF, verschillende parameters zijn EN. Bereiken met een komma (year=1990,2025).; =, ,, WKT

### Endpoints
- `GET /occurrence/search`: Waarnemingen zoeken met filters; limit=0 geeft alleen het aantal, facet= telt per veld (jaar, soort, dataset, licentie …).
- `GET /occurrence/{key}`: Eén waarneming met alle velden.
- `GET /occurrence/count?country=NL`: Alleen het aantal, als kaal getal.
- `GET /species/match?name={naam}`: Wetenschappelijke naam → taxonKey (Halyomorpha halys = 4485843), met rang, classificatie en zekerheid.
- `GET /species/search?q={tekst}`: Soorten zoeken op (ook Nederlandse) naam, bv. q=merel.
- `GET /species/{key}/vernacularNames`: Volksnamen per taal (language nld = Nederlands): 4485843 → Bruingemarmerde schildwants.
- `GET /dataset/search`: Datasets zoeken: publishingCountry=NL gaf 400 datasets.
- `GET /dataset/{key}`: Eén dataset: titel, uitgever, licentie, beschrijving, contact.
- `GET /organization?country=NL`: Uitgevende organisaties (70 in Nederland).
- `GET https://api.gbif.org/v2/map/occurrence/density/{z}/{x}/{y}@1x.png`: Kaarttegels met de dichtheid van waarnemingen; dezelfde filters als zoeken (country=NL, taxonKey …).
- `POST /occurrence/download/request`: Volledige download (SIMPLE_CSV, DWCA, SPECIES_LIST) met een JSON-predicaat; asynchroon, met account. Geeft een download-key en een DOI om te citeren.

### Parameters
- `country`: Land waar de waarneming is gedaan (NL). Niet hetzelfde als publishingCountry (land van de uitgever). (getest)
- `taxonKey`: Soort of hogere groep (uit species/match). Herhaalbaar. (getest)
- `year`: 2025 of 1990,2025 (bereik met komma). Ook month, eventDate. (getest)
- `geometry`: Gebied als WKT-polygoon tegen de klok in, bv. POLYGON((4.88 52.36,4.90 52.36,4.90 52.38,4.88 52.38,4.88 52.36)). (getest)
- `decimalLatitude / decimalLongitude`: Rechthoek: decimalLatitude=52.0,52.1&decimalLongitude=5.0,5.1. (getest)
- `hasCoordinate, basisOfRecord, datasetKey, license`: Met coördinaten, soort record (HUMAN_OBSERVATION, PRESERVED_SPECIMEN …), dataset, licentie. (getest)
- `limit`: Rijen per verzoek, hoogstens 300 (meer wordt stil 300). limit=0 voor alleen tellen. (getest)
- `offset`: Startpositie; offset + limit mag niet boven 100.001. (getest)
- `facet`: Tellen per veld: year, speciesKey, classKey, kingdomKey, datasetKey, basisOfRecord, license … Herhaalbaar. (getest)
- `facetLimit, facetOffset, facetMincount`: Aantal facetwaarden, pagineren door facetten, en alleen waarden met minstens N records. (getest)

### Velden in het zoekantwoord (selectie) (12)
`count` integer, `endOfRecords` boolean, `facets[].field / counts[]` lijst, `results[].key` integer, `results[].scientificName / species / speciesKey` tekst, `results[].eventDate / year / month / day` datum, `results[].decimalLatitude / decimalLongitude` getal, `results[].coordinateUncertaintyInMeters` getal, `results[].basisOfRecord` code, `results[].datasetKey / publishingOrgKey` uuid, `results[].license` url, `results[].issues` lijst

### Limieten en valkuilen
- Zoeken: hoogstens 300 records per verzoek en offset + limit ≤ 100.001; daarboven 400 'Max offset of 100001 exceeded'. Voor meer: facetten of een download. (getest)
- dataset/search pagineert diep heel traag (offset 123.000 = 186 s). Haal datasets liever per uitgevende organisatie op. (ervaring)
- Geen sleutel en geen gedocumenteerde aanvraaglimiet voor zoeken; robots.txt van api.gbif.org verbiedt alleen /v1/image/unsafe. (getest)
- Licentie per record. Van de NL-waarnemingen is 116,7 mln CC BY-NC 4.0 (niet-commercieel), 26,6 mln CC BY 4.0 en 7,0 mln CC0. De grootste dataset, Observation.org (waarneming.nl, 107,9 mln), is CC BY-NC. Tel met facet=license. (getest)
- 94% van de NL-records is een menselijke waarneming (HUMAN_OBSERVATION, 141,8 mln); museumstukken (PRESERVED_SPECIMEN) 2,3 mln. (getest)
- Filteren op soort gaat met taxonKey, niet op naam. Zoek de sleutel eerst met species/match en controleer matchType (EXACT) en confidence. (getest)
- Meer waarnemingen kan ook meer waarnemers betekenen: het aantal NL-records per jaar groeit (2022 10,9 mln, 2025 12,5 mln). Normaliseer, bv. per totaal aantal records in dat jaar. (getest)
- Voor Nederlandse soortnamen: species/{key}/vernacularNames met language nld. Voor sommige groepen (Magnoliopsida, Agaricomycetes) is er geen Nederlandse naam. (ervaring)
- POST /occurrence/download/request zonder inlog gaf een lege 404; downloads alleen met een account. Citeer de DOI van de download. (getest)

### Voorbeeld
```
https://api.gbif.org/v1/occurrence/search?country=NL&taxonKey=4485843&limit=0&facet=year&facetLimit=10
```

## Wat je ermee kunt bouwen
- [Natuur in je buurt: welke soorten zijn er gezien en hoe groen is het?](https://www.opendataindex.nl/bouwen/biodiversiteit-buurt.md): Een app die voor elk punt in Nederland laat zien welke planten en dieren er in een straal van 1 km zijn waargenomen, hoeveel van de grond groen is en hoe ver het dichtstbijzijnde Natura 2000-gebied ligt.


## Wat er allemaal in zit: 1.978 datasets

Alle datasets in GBIF van Nederlandse uitgevers of met waarnemingen in Nederland, per soort dataset, land van de uitgever en uitgever. Elke nacht opgehaald. Elke dataset heeft een eigen pagina met licentie, het aantal waarnemingen in Nederland en de API-aanroep.

- Soorten: dataset 1.978
- Laatst gewijzigd: 2026-10-31 (458 in de afgelopen 30 dagen)
- Met een API-aanroep op de datasetpagina: 1.978
- Zoeken: https://www.opendataindex.nl/api/catalogus/gbif-nl?q=… of de MCP-functie zoek_datasets met herkomst=gbif-nl
- Elke rij heeft een eigen pagina: https://www.opendataindex.nl/dataset/gbif-nl/<sleutel>

### Mappen
- Waarnemingen en collecties (occurrence) (1.517): Nederland (211), Verenigde Staten (359), Duitsland (157), België (108), Finland (63), Spanje (55), Frankrijk (50), Japan (49) …
- Bemonsteringen (sampling event) (138): Nederland (12), België (94), Verenigd Koninkrijk (11), Frankrijk (7), Duitsland (4), Denemarken (2), Spanje (2), Verenigde Staten (2) …
- Soortenlijsten (checklist) (168): Nederland (22), Zwitserland (115), Frankrijk (15), Bulgarije (12), België (2), Portugal (1), Verenigd Koninkrijk (1)
- Alleen metadata (metadata-only) (155): Nederland (155)

## Voorbeelden met echte cijfers (2)

Per voorbeeld de bevinding, de peildatum en de aanroep die precies deze cijfers ophaalt.

- **Waarnemingen van planten en dieren uit Nederland in GBIF: 12,5 miljoen waarnemingen in 2025, 24 keer zo veel als in 1990** (2025). Tabel occurrence/search. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/gbif-waarnemingen-per-jaar)
  - `https://api.gbif.org/v1/occurrence/search?country=NL&year=1990,2025&limit=0&facet=year&facetLimit=500`
- **Waarnemingen uit Nederland in GBIF per klasse: het meest vogels (5.567.722 waarnemingen), dan insecten en tweezaadlobbigen** (2025). Tabel occurrence/search. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/gbif-waarnemingen-per-klasse)
  - `https://api.gbif.org/v1/occurrence/search?country=NL&year=2025&limit=0&facet=classKey&facetLimit=1000`
