GBIF logo

Research · Coming soon

GBIF Biodiversity Occurrence Search

Search species records from GBIF with a few filters. Get coordinates, taxonomy and the dataset that published each record. It is a quick way to explore a species.

Built and tested. Prices will be shown after release.

Coming soon to the Apify StoreFollow us on Apify

What you get, for example

gbifID5006926565
scientificNamePanthera leo melanochaita (C.E.H.Smith, 1858)
taxonKey5219411

How it will work: 3 steps

  1. Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: [] in Record licenses. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Search biodiversity observations from GBIF by species, country, area, year and record license. Get up to 1,000 records with published coordinates, taxonomy, dataset titles and publisher attribution. No GBIF account or API key is needed.

Who uses it

Ecologists and students

Explore where a species was recorded.

GIS users

Prepare points for a map.

Data teams

Check reuse licenses before you use records.

Price

Prices will be shown after release.

Questions

Do I need a GBIF account?

No. The tool uses public search endpoints.

Does a species search include subspecies?

Yes. A taxon includes its child taxa.

Is this a full GBIF download?

No. It is a limited live search of up to 1,000 records.

Why are some points missing?

Publishers may hide or blur sensitive places.

Can I use every record commercially?

No. The default allows CC BY-NC too. Use commercialUseOnly:true for CC0 and CC BY, and follow attribution and source terms.

Why are coordinates missing or less precise?

Publishers may omit or generalize sensitive locations. Check coordinateUncertaintyInMeters, informationWithheld and dataGeneralizations.

Is this a full download or a live monitor?

It is a limited live search. It has no download DOI, baseline or only-new mode. Dataset DOI and citation are included when available.

Details

Step by step on Apify
  1. Open Input.
  2. Keep the form example: Panthera leo, years 2020–2025, coordinates enabled, 50 records.
  3. Set a maximum run cost in Apify if you want a money limit.
  4. Click Start.
  5. Open Dataset → Occurrences. Use Attribution to check the dataset, publisher and license.
  6. Open Key-value store → RUN_SUMMARY to check the status and counts.
Use cases
TaskInputFields to use
Explore species recordstaxonName or taxonKeygbifID, taxonomy, eventDate
Prepare a map inputcountry, bbox, hasCoordinate:trueWGS84 coordinates and uncertainty
Check reuse licensescommercialUseOnly or licenseslicense, publisher, dataset citation
Tips for better results
  • Use an exact scientific name or a taxon key.
  • Turn on the commercial use setting to keep only CC0 and CC BY records.
  • Check the uncertainty column before you trust a point.
Limits and good to know
  • Maximum 1000 records and 8 search pages per run. GBIF search allows an offset plus result limit up to 100000
  • Each new dataset and publisher in the results needs metadata requests. A broad search whose records come from many dozens of datasets can reach the 100-request limit before 1000 records; the run then stops with REQUEST_LIMIT and keeps the records already saved. Narrow the taxon, area or years, or continue with nextOffset
  • The source can change between pages or runs. An offset continuation is not a frozen snapshot
  • At most 100 source requests including metadata and retries, 8 MiB per response, 24 MiB of downloaded responses, and 2 MiB of normalized output per run
  • Source work stops after 120 seconds, or 15 seconds before the platform deadline, whichever comes first. A larger Apify timeout does not increase this source-work budget
  • Requests are sequential, about one per second, with limited retries and Retry-After support. GBIF has no guaranteed search query rate
  • Invalid metadata, schema changes, rate-limit exhaustion and source outages fail honestly. Records saved before a later error remain available
  • Country and bounding box use published, interpreted locations. Null or generalized coordinates can limit map use. The Actor does not recover hidden coordinates

Troubleshooting

ProblemLikely reasonWhat to do
AMBIGUOUS_TAXONOne name has several exact matchesRead taxonMatch.candidates, clear taxonName, and set the right taxonKey.
TAXON_NOT_EXACTMatch is fuzzy or at a higher rankUse a precise scientific name or numeric key.
TAXON_NOT_FOUND or NO_MATCHESName not found, or valid filters have no recordsCheck the name, year, country and license filters.
CHARGE_LIMITThe next record does not fit your budgetRead saved rows, then raise the cost limit or request fewer records.
OFFSET_LIMIT / invalid rangeOffset plus requested limit exceeds 100000Reduce offset or narrow your search.
DEADLINE, PAGE_LIMIT, REQUEST_LIMIT, byte limitsWork exceeds the run's fixed safety budgetNarrow the search or request fewer records.
SOURCE_*Provider failure or unexpected responseKeep saved rows. Retry later with a small request.
Null coordinatesCoordinates are absent in the public recordSet hasCoordinate:true; check uncertainty and withheld notices.

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "gbifID": "5006926565",
  "scientificName": "Panthera leo melanochaita (C.E.H.Smith, 1858)",
  "taxonKey": 5219411,
  "rank": "SUBSPECIES",
  "decimalLatitude": -2.637562,
  "decimalLongitude": 34.715044,
  "coordinateUncertaintyInMeters": 31434,
  "eventDate": "2025-01-02T13:53:58",
  "country": "Tanzania, United Republic of",
  "countryCode": "TZ",
  "basisOfRecord": "HUMAN_OBSERVATION",
  "datasetTitle": "iNaturalist Research-grade Observations",
  "publisher": "iNaturalist.org",
  "license": "http://creativecommons.org/licenses/by-nc/4.0/legalcode",
  "informationWithheld": "Coordinate uncertainty increased to 31434m to protect threatened taxon",
  "occurrenceUrl": "https://www.gbif.org/occurrence/5006926565"
}
Data fields (40)
FieldTypeMeaning
gbifIDstringStable GBIF occurrence ID as text.
providerstringData provider: GBIF.
sourceUrlstringGBIF occurrence API record URL.
occurrenceUrlstringGBIF occurrence page URL.
fetchedAtstringUTC time when this row was normalized.
keynumberStable GBIF occurrence ID as a safe integer.
scientificNamestringInterpreted scientific name including authorship.
rankstringInterpreted taxon rank.
eventDatestringObservation date as supplied by GBIF; may include time or a date interval.
countrystringCountry name of the observation.
countryCodestringISO alpha-2 country code.
basisOfRecordstringRecord type, for example HUMAN_OBSERVATION or PRESERVED_SPECIMEN.
occurrenceStatusstringPRESENT or ABSENT if the source supplies it; neither is inferred.
datasetKeystringUUID of the source dataset.
datasetTitlestringCurrent title from the GBIF dataset registry.
datasetUrlstringGBIF dataset page for attribution.
datasetDoistringDataset DOI where available; not a DOI for this search.
datasetCitationstringCitation provided by the dataset registry.
publisherstringPublishing organization title from the GBIF registry.
publishingOrgKeystringUUID of the publishing organization.
licensestringLicense URL of this record, which can differ from the dataset license.
recordedBystringObserver/collector exactly as published; no personal enrichment.
sourceUpdatedAtstringGBIF lastInterpreted timestamp; not the date of the observation.
informationWithheldstringSource notice about hidden sensitive information.
dataGeneralizationsstringSource notice about generalization of sensitive data.
kingdomstringInterpreted kingdom name; null when missing.
phylumstringInterpreted phylum name; null when missing.
classstringInterpreted class name; null when missing.
orderstringInterpreted order name; null when missing.
familystringInterpreted family name; null when missing.
genusstringInterpreted genus name; null when missing.
speciesstringInterpreted species name; null when missing.
taxonKeynumberGBIF backbone taxon key assigned to this record.
decimalLatitudenumberPublished WGS84 latitude in degrees; null when unavailable.
decimalLongitudenumberPublished WGS84 longitude in degrees; null when unavailable.
coordinateUncertaintyInMetersnumberPublished horizontal uncertainty in metres; zero is preserved.
yearnumberObservation year as an integer when supplied.
issuesarrayGBIF quality/interpretation flags.
latitudenumberSame published WGS84 latitude as decimalLatitude; compatibility alias.
longitudenumberSame published WGS84 longitude as decimalLongitude; compatibility alias.
Input settings (11)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Scientific nametaxonNamestring"Panthera leo"
GBIF taxon keytaxonKeyinteger
Country codecountrystring
Bounding boxbboxarray
First yearyearFrominteger2020
Last yearyearTointeger2025
Coordinate filterhasCoordinatebooleantrue
Record licenseslicensesarray[]
Commercial-use licenses onlycommercialUseOnlybooleanfalse
Maximum resultsmaxResultsinteger50
Start offsetoffsetinteger0

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure