georeference.it API

v1 Public · No auth required 60 req/min

Open REST API returning Darwin Core occurrence data with community georeferences. No API key needed.

Endpoints

GET /api/v1/occurrences Try →

Paginated list of occurrences. All filters are optional and combinable.

Parameter Type Description
countryISO 3166-1 alpha-2Filter by country code — PT, ES, …
datasetKeyUUIDFilter by GBIF dataset key
institutionCodestringFilter by institution code, e.g. MHNC
statusstringOne or more of validated · has_suggestion · ungeoreferenced · gbif_georeferenced · gbif_reviewed · conflicted · not_georeferenceable, pipe-separated, e.g. ?status=validated|has_suggestion
scientificNamestringPartial match on scientific name
georeferencedAfterdateOnly occurrences last georeferenced/status-changed on or after this date (inclusive), e.g. 2026-01-01
georeferencedBeforedateOnly occurrences last georeferenced/status-changed on or before this date (inclusive)
perPageintegerRecords per page — default 100, max 500
pageintegerPage number — default 1
formatstringSet to csv to download all matching records as a UTF-8 CSV file (ignores perPage/page), or jsonld for JSON-LD output
https://georeference.it/api/v1/occurrences?country=PT&status=validated&perPage=50
GET /api/v1/occurrences/{occurrenceID} Try →

Returns a single occurrence by its GBIF numeric key. Accepts Accept: application/ld+json or ?format=jsonld.

Response format

Coordinates reflect the best available georeference: community-validated → pending suggestion → original GBIF coordinates.

JSON (default)

{
  "meta": {
    "total": 48213,
    "perPage": 100,
    "currentPage": 1,
    "lastPage": 483
  },
  "data": [
    {
      "occurrenceID": "3014169604",
      "scientificName": "Quercus robur L.",
      "verbatimLocality": "Redinha",
      "countryCode": "PT",
      "decimalLatitude": 39.8812,
      "decimalLongitude": -8.5234,
      "coordinateUncertaintyInMeters": 500,
      "georeferenceVerificationStatus":
        "verified by contributor",
      "georef_status": "validated",
      ...
    }
  ]
}

JSON-LD

Send Accept: application/ld+json or add ?format=jsonld

{
  "@context": {
    "@vocab":
      "http://rs.tdwg.org/dwc/terms/",
    ...
  },
  "@type": "owl:Ontology",
  "totalRecords": 48213,
  "@graph": [
    {
      "@type": "dwc:Occurrence",
      "@id": "https://www.gbif.org/
         occurrence/3014169604",
      "scientificName": "Quercus robur L.",
      "georeferenceVerificationStatus":
        "verified by contributor",
      ...
    }
  ]
}

CSV

Add ?format=csv — downloads all matching records as a file (no pagination). UTF-8 with BOM (Excel-compatible).

occurrenceID,datasetKey,institutionCode,collectionCode,catalogNumber,scientificName,countryCode,decimalLatitude,decimalLongitude,coordinateUncertaintyInMeters,georeferencedBy,georeferenceVerificationStatus,...
3014169604,8a863029-...,MHNC,COL,12345,Quercus robur L.,PT,39.8812,-8.5234,500,Jane Smith (https://orcid.org/...),verified by contributor,...
4729103821,8a863029-...,MHNC,COL,67890,Pinus pinaster Aiton,PT,37.1523,-8.9014,1000,,requires verification,...

Fields reference

Field Description
occurrenceID GBIF numeric occurrence key DwC
datasetKey GBIF dataset UUID DwC
institutionCode Institution that holds the specimen DwC
collectionCode Collection within the institution DwC
catalogNumber Catalog number in the collection DwC
basisOfRecord Nature of the record (PRESERVED_SPECIMEN, etc.) DwC
scientificName Full scientific name with authorship DwC
taxonRank Rank of the taxon (SPECIES, GENUS, etc.) DwC
kingdom / family Higher taxonomy DwC
eventDate Date of collection — ISO 8601 DwC
recordedBy Collector name(s) DwC
country / countryCode Country name and ISO 3166-1 alpha-2 code DwC
stateProvince State or province DwC
county County or second-level administrative area DwC
municipality Municipality DwC
island / islandGroup Island and island group when applicable DwC
waterBody Water body name when applicable DwC
verbatimLocality Original locality text from the specimen label DwC
decimalLatitude / decimalLongitude Best available coordinates DwC
geodeticDatum Coordinate reference system — WGS84 DwC
coordinateUncertaintyInMeters Radius of positional uncertainty in metres DwC
georeferencedBy Who georeferenced (contributor or system) DwC
georeferencedDate Date of georeference — ISO 8601 DwC
georeferenceProtocol Protocol used — Zermoglio et al. 2020 DwC
georeferenceSources Tools used (georeference.it, OpenStreetMap, etc.) DwC
georeferenceRemarks Free-text notes added by the georeferencer DwC
georeferenceVerificationStatus DwC verification status (see below) DwC
georef_status Platform internal status — omitted from JSON-LD
localityGroupID Locality group identifier — omitted from JSON-LD

georeferenceVerificationStatus

verified by contributor

Coordinates submitted and approved by community members.

validated
requires verification

Coordinates exist but not yet community-validated. Applies to records with pending suggestions, conflicting georeferences, or existing GBIF coordinates awaiting confirmation.

has_suggestion conflicted gbif_georeferenced
requires georeference

No coordinates available — specimen needs georeferencing.

ungeoreferenced

Code examples

curl

# Validated occurrences from Portugal
curl "https://georeference.it/api/v1/occurrences?country=PT&status=validated"

# As JSON-LD
curl -H "Accept: application/ld+json" \
  "https://georeference.it/api/v1/occurrences?country=PT&status=validated"

# Single occurrence
curl "https://georeference.it/api/v1/occurrences/3014169604"

JavaScript

const res = await fetch(
  'https://georeference.it/api/v1/occurrences?country=PT&status=validated&perPage=500'
);
const { meta, data } = await res.json();
data.forEach(o =>
  console.log(o.scientificName, o.decimalLatitude, o.decimalLongitude)
);

Python — fetch all pages

import requests

url = "https://georeference.it/api/v1/occurrences"
params = {"country": "PT", "status": "validated", "perPage": 500}

records, page = [], 1
while True:
    r = requests.get(url, params={**params, "page": page}).json()
    records.extend(r["data"])
    if page >= r["meta"]["lastPage"]:
        break
    page += 1

print(f"{len(records)} records")
Data provenance — Records are imported from GBIF. Community georeferences follow the Georeferencing Quick Reference Guide (Zermoglio et al. 2020). Please cite both GBIF and georeference.it when using this data.