# GBIF Occurrence Search Scraper (`parseforge/gbif-occurrence-search-scraper`) Actor

Search 1.5B+ species occurrence records from the Global Biodiversity Information Facility. Filter by taxon, country, year, dataset, basis of record. Pulls coordinates, taxonomy, dates, recorder, IUCN status, license per record.

- **URL**: https://apify.com/parseforge/gbif-occurrence-search-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Education, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $18.00 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🦋 GBIF Occurrence Search Scraper

> 🚀 **Export species occurrence records in seconds.** Filter **1.5 billion+ biodiversity observations and museum specimens** by taxon, country, year, dataset, and basis of record. No API key, no registration, no SQL pipelines.

> 🕒 **Last updated:** 2026-05-22 · **📊 31 fields** per record · **🦋 1.5B+ occurrences** · **🌍 250+ countries** · **🔬 10 record types**

The **GBIF Occurrence Search Scraper** pulls structured species observation and specimen records from the Global Biodiversity Information Facility, returning **31 fields per record**, including full taxonomy, coordinates, event date, recorder, license, and links back to the source occurrence page. GBIF aggregates field observations, museum specimens, and citizen-science contributions from thousands of natural history institutions and biodiversity networks worldwide.

The dataset covers **every kingdom, more than 250 ISO country codes, and ten distinct basis-of-record categories** ranging from preserved specimens to fossil records and human observations. This Actor turns that catalog into downloadable CSV, Excel, JSON, or XML files in under five minutes. Server-side filters do the heavy lifting, so you skip building your own ingestion pipeline.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Ecologists, conservation NGOs, biodiversity researchers, GIS analysts, museum curators, environmental consultancies, agritech teams | Range maps, species distribution modeling, conservation status reports, red-list inputs, biosecurity feeds, ecology dashboards |

---

### 📋 What the GBIF Occurrence Search Scraper does

Five filtering workflows in a single run:

- 🌿 **Taxonomy search.** Pull every occurrence for a scientific name, taxon key, or rank.
- 🌍 **Country filter.** Restrict to one or many ISO codes such as `US`, `BR`, `KE`, `AU`.
- 📅 **Date window.** Limit to a year range, useful for trend analysis or recent surveys.
- 📐 **Coordinate filter.** Keep only records with decimal latitude and longitude for mapping.
- 🔬 **Record type filter.** Choose from human observations, machine observations, preserved specimens, fossils, living specimens, material samples, and more.

Each record includes the GBIF ID, full Linnaean hierarchy, scientific name, taxon rank, basis of record, country, locality, decimal coordinates, elevation, event date, recorder, dataset key, license, IUCN status when available, and the canonical occurrence URL.

> 💡 **Why it matters:** biodiversity data drives conservation funding, environmental impact reports, climate research, and legal compliance. Building your own GBIF pipeline means handling pagination, country-code lookups, and taxonomic backbone joins. This Actor skips all of that and refreshes the dataset on every run.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td><code>taxonKey</code></td><td>integer</td><td><code>null</code></td><td>GBIF taxon key. <code>212</code> Aves, <code>359</code> Mammalia, <code>6</code> Plantae.</td></tr>
<tr><td><code>scientificName</code></td><td>string</td><td><code>""</code></td><td>Filter by scientific name such as <code>Anas platyrhynchos</code>.</td></tr>
<tr><td><code>datasetKey</code></td><td>string</td><td><code>""</code></td><td>Single publisher dataset UUID.</td></tr>
<tr><td><code>country</code></td><td>array</td><td><code>[]</code></td><td>ISO 3166-1 alpha-2 codes. Empty list = worldwide.</td></tr>
<tr><td><code>yearFrom</code>, <code>yearTo</code></td><td>integer</td><td><code>null</code></td><td>Inclusive event year window.</td></tr>
<tr><td><code>hasCoordinate</code></td><td>boolean</td><td><code>false</code></td><td>Keep only records with decimal lat/lon.</td></tr>
<tr><td><code>basisOfRecord</code></td><td>array</td><td><code>[]</code></td><td>One or more of 10 record types.</td></tr>
</tbody>
</table>

**Example: 200 recent bird observations across the United States.**

```json
{
    "maxItems": 200,
    "taxonKey": 212,
    "country": ["US"],
    "yearFrom": 2020,
    "yearTo": 2024,
    "hasCoordinate": true,
    "basisOfRecord": ["HUMAN_OBSERVATION"]
}
````

**Example: every preserved specimen of mallard duck.**

```json
{
    "maxItems": 500,
    "scientificName": "Anas platyrhynchos",
    "basisOfRecord": ["PRESERVED_SPECIMEN"]
}
```

> ⚠️ **Good to Know:** GBIF aggregates from thousands of publishers. Coordinate precision varies by source. For ecological modeling, set `hasCoordinate` to true and inspect the `issues` array for known data-quality flags.

***

### 📊 Output

Each occurrence record contains up to **31 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🆔 `gbifID` | string | `"4011034398"` |
| 🔬 `scientificName` | string | `"Anas platyrhynchos Linnaeus, 1758"` |
| 🦜 `vernacularName` | string | null | `"Mallard"` |
| 👑 `kingdom` | string | `"Animalia"` |
| 🧬 `phylum` | string | `"Chordata"` |
| 🐦 `class` | string | `"Aves"` |
| 📚 `order` | string | `"Anseriformes"` |
| 🪶 `family` | string | `"Anatidae"` |
| 🏷️ `genus` | string | `"Anas"` |
| 🧪 `species` | string | `"Anas platyrhynchos"` |
| 🔢 `taxonRank` | string | `"SPECIES"` |
| ✅ `taxonomicStatus` | string | `"ACCEPTED"` |
| 📦 `basisOfRecord` | string | `"HUMAN_OBSERVATION"` |
| 🏳️ `country` | string | null | `"United States"` |
| 🆔 `countryCode` | string | null | `"US"` |
| 🗺️ `stateProvince` | string | null | `"California"` |
| 📍 `locality` | string | null | `"Bolsa Chica Ecological Reserve"` |
| 📍 `decimalLatitude` | number | null | `33.6849` |
| 📍 `decimalLongitude` | number | null | `-118.0353` |
| ⛰️ `elevation` | number | null | `5` |
| 🌊 `depth` | number | null | `0` |
| 📅 `eventDate` | string | null | `"2024-05-12T08:30"` |
| 📆 `year` / `month` / `day` | number | null | `2024 / 5 / 12` |
| 👤 `recordedBy` | string | null | `"Jane Doe"` |
| 🆔 `identifiedBy` | string | null | `"M. Smith"` |
| 🏛️ `collectionCode` | string | null | `"EBIRD"` |
| 🔖 `catalogNumber` | string | null | `"OBS123456"` |
| 📚 `datasetKey` | string | `"4fa7b334-ce0d-4e88-aaae-2e0c138d049e"` |
| 🏢 `publishingOrgKey` | string | `"e2e717bf-551a-4917-bdc9-4fa0f342c530"` |
| ⚖️ `license` | string | `"CC_BY_4_0"` |
| 🛡️ `iucnRedListCategory` | string | null | `"LC"` |
| ⚠️ `issues` | string\[] | `["GEODETIC_DATUM_ASSUMED_WGS84"]` |
| 🔗 `occurrenceUrl` | string | `"https://www.gbif.org/occurrence/4011034398"` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-22T10:00:00.000Z"` |

#### 📦 Sample record

<details>
<summary><strong>🦆 Human observation: Mallard duck, California, 2024</strong></summary>

```json
{
    "gbifID": "4011034398",
    "scientificName": "Anas platyrhynchos Linnaeus, 1758",
    "kingdom": "Animalia",
    "phylum": "Chordata",
    "class": "Aves",
    "order": "Anseriformes",
    "family": "Anatidae",
    "genus": "Anas",
    "species": "Anas platyrhynchos",
    "taxonRank": "SPECIES",
    "taxonomicStatus": "ACCEPTED",
    "basisOfRecord": "HUMAN_OBSERVATION",
    "country": "United States",
    "countryCode": "US",
    "stateProvince": "California",
    "locality": "Bolsa Chica Ecological Reserve",
    "decimalLatitude": 33.6849,
    "decimalLongitude": -118.0353,
    "eventDate": "2024-05-12T08:30",
    "year": 2024,
    "month": 5,
    "day": 12,
    "recordedBy": "Jane Doe",
    "datasetKey": "4fa7b334-ce0d-4e88-aaae-2e0c138d049e",
    "publishingOrgKey": "e2e717bf-551a-4917-bdc9-4fa0f342c530",
    "license": "CC_BY_4_0",
    "issues": ["GEODETIC_DATUM_ASSUMED_WGS84"],
    "occurrenceUrl": "https://www.gbif.org/occurrence/4011034398",
    "scrapedAt": "2026-05-22T10:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🦴 Preserved specimen: museum vertebrate record</strong></summary>

```json
{
    "gbifID": "2496283715",
    "scientificName": "Panthera leo (Linnaeus, 1758)",
    "kingdom": "Animalia",
    "class": "Mammalia",
    "order": "Carnivora",
    "family": "Felidae",
    "genus": "Panthera",
    "species": "Panthera leo",
    "taxonRank": "SPECIES",
    "basisOfRecord": "PRESERVED_SPECIMEN",
    "country": "Kenya",
    "countryCode": "KE",
    "stateProvince": "Rift Valley",
    "decimalLatitude": -1.4061,
    "decimalLongitude": 35.0419,
    "year": 1958,
    "recordedBy": "F. Harper",
    "collectionCode": "MAMMALS",
    "catalogNumber": "AMNH-M-12345",
    "datasetKey": "821cc27a-e3bb-4bc5-ac34-89ada245069d",
    "license": "CC_BY_NC_4_0",
    "iucnRedListCategory": "VU",
    "issues": [],
    "occurrenceUrl": "https://www.gbif.org/occurrence/2496283715",
    "scrapedAt": "2026-05-22T10:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🌍 | **Global coverage.** 1.5 billion+ occurrence records across every continent and ocean basin. |
| 🎯 | **Multi-dimensional filtering.** Combine taxon, country, year, dataset, coordinate, and basis-of-record filters in one run. |
| 🧬 | **Full Linnaean hierarchy.** Kingdom through species in every record, ready for join with any external biodiversity store. |
| ⚡ | **Fast.** 10 records in under 5 seconds, 1,000 records in under a minute. |
| ⚖️ | **License-aware.** Every record carries its publisher license so commercial use is unambiguous. |
| 🔁 | **Always fresh.** Each run hits the live GBIF index, so the dataset reflects current contributions. |
| 🚫 | **No authentication.** Works against the public GBIF index. No login or API key needed. |

> 📊 Accurate biodiversity records are the foundation of conservation policy, species distribution models, and environmental impact assessments.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ GBIF Occurrence Search Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **1.5B+** worldwide | **Live per run** | taxon, country, year, dataset, basis | ⚡ 2 min |
| Manual GBIF portal exports | Free | Full | Days for large requests | Limited UI filters | 🐢 Hours |
| In-house ETL on GBIF dumps | Free + infra | Full | Quarterly snapshot | Build it yourself | 🛠️ Weeks |
| Commercial biodiversity APIs | $99+/month | Subset | Daily | Curated only | ⏳ Hours |

Pick this Actor when you want broad coverage, fresh data, and zero pipeline maintenance.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the GBIF Occurrence Search Scraper page on the Apify Store.
3. 🎯 **Set input.** Pick a taxon, country, year range, and basis of record. Set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your data.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 🌳 Conservation NGOs

- Species range refresh for protected-area planning
- Red-list inputs and population trend baselines
- Country-level occurrence reports for funders
- Threat overlap maps with land-use change

</td>
<td width="50%" valign="top">

#### 🏛️ Museums & Research Institutes

- Specimen network analyses across collections
- Pull occurrence partners by datasetKey
- Reconcile catalog numbers across publishers
- Reference data for taxonomic revisions

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 🌾 Agritech & Biosecurity

- Pest and pathogen distribution feeds
- Pollinator presence mapping by region
- Invasive species early-warning datasets
- Crop-relative wild ancestor surveys

</td>
<td width="50%" valign="top">

#### 🏢 Environmental Consultancies

- ESG and impact assessment inputs
- Pre-construction biodiversity baselines
- Mitigation hierarchy supporting datasets
- Compliance reports for regulators and lenders

</td>
</tr>
</table>

***

### 🔌 Automating GBIF Occurrence Search Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Weekly or monthly pulls keep downstream species distribution models in sync automatically.

***

### 🌟 Beyond business use cases

Biodiversity records support far more than enterprise workflows. The same structured occurrences power research, education, civic projects, and citizen science.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Species distribution modeling for ecology PhDs
- Reproducible datasets cited in peer-reviewed papers
- GIS coursework with real coordinate data
- Comparative phylogeography studies

</td>
<td width="50%">

#### 🎨 Personal and creative

- Nature blogs, birding maps, field guide apps
- Wildlife photography location research
- Educational visualizations of species ranges
- Hobbyist range databases for collectors

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Local conservation group baseline reports
- Citizen-science dashboards tied to occurrence data
- Investigative journalism on biodiversity loss
- Open-data contributions to OpenStreetMap nature layers

</td>
<td width="50%">

#### 🧪 Experimentation

- Train species classification ML models on labeled coords
- Prototype agents that resolve scientific to common names
- Build climate-impact dashboards with occurrence trends
- Test ecology product hypotheses with real survey data

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20GBIF%20Occurrence%20Search%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20GBIF%20Occurrence%20Search%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20GBIF%20Occurrence%20Search%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20GBIF%20Occurrence%20Search%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Configure your taxon, country, year, and basis-of-record filters in the input form, click Start, and the Actor applies the filters server-side and emits a clean structured record per occurrence. No browser automation, no captchas, no setup.

#### 📏 How accurate is the data?

GBIF aggregates from thousands of publishers, so accuracy varies by source. Each record exposes an `issues` array with known data-quality flags. For modeling work, set `hasCoordinate` to true and review issues before downstream use.

#### 🔁 How often is the dataset refreshed?

The GBIF index ingests publisher updates continuously. Every run of this Actor pulls the latest records, so your dataset reflects the live catalog at run time.

#### 🐦 Can I filter by specific species or taxa?

Yes. Use `taxonKey` to scope to a clade like Aves (212) or Mammalia (359), or use `scientificName` for an exact binomial such as `Anas platyrhynchos`.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor on any cron interval (daily, weekly, monthly) and keep a downstream database in sync.

#### ⚖️ Is this data legal to use?

GBIF records carry per-publisher licenses (CC0, CC BY, CC BY-NC). The Actor exposes the `license` field on every record so you can filter for commercial use. Always credit GBIF and the dataset publisher per the license terms.

#### 💼 Can I use this data commercially?

Yes, for records under CC0 or CC BY. Filter the dataset by the `license` field to exclude non-commercial publishers. You are responsible for attribution and license compliance.

#### 💳 Do I need a paid Apify plan to use this Actor?

No. The free Apify plan is enough for testing and small runs (10 records per run). A paid plan lifts the limit and gives you access to scheduling, higher concurrency, and larger datasets.

#### 🔁 What happens if a run fails or gets interrupted?

Apify automatically retries transient errors. If a run still fails, you can inspect the log in the Runs tab, fix the input, and re-run. Partial datasets from failed runs are preserved so you never lose progress.

#### 🛰️ What if I need climate or environmental layers next to the occurrences?

This Actor returns occurrence records only. For climate, soil, or land-use overlays, reach out via the contact form below to request a companion environmental data scraper.

#### 🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.

***

### 🔌 Integrate with any app

GBIF Occurrence Search Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe occurrence data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh occurrence data into your model retraining loop, or alert your team in Slack.

***

### 🔗 Recommended Actors

- [**🛬 OurAirports Global Airport Database Scraper**](https://apify.com/parseforge/ourairports-scraper) - Global aviation reference dataset
- [**🌦️ NOAA Weather Scraper**](https://apify.com/parseforge/noaa-weather-scraper) - Official U.S. weather observations
- [**🗺️ Nominatim OSM Scraper**](https://apify.com/parseforge/nominatim-osm-scraper) - Geocode addresses via OpenStreetMap
- [**🏛️ Met Museum Scraper**](https://apify.com/parseforge/met-museum-scraper) - Open Access museum collection records
- [**📈 Indexmundi Scraper**](https://apify.com/parseforge/indexmundi-scraper) - Global demographic and economic indicators

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more reference-data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the Global Biodiversity Information Facility (GBIF) or any of its publishing institutions. All trademarks mentioned are the property of their respective owners. Only publicly available open biodiversity data is collected.

# Actor input Schema

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `taxonKey` (type: `integer`):

GBIF taxon key. Example: 212 = Aves (birds), 359 = Mammalia, 6 = Plantae.

## `scientificName` (type: `string`):

Filter by scientific name. Example: Anas platyrhynchos.

## `datasetKey` (type: `string`):

GBIF dataset UUID. Restricts results to a single publishing dataset.

## `country` (type: `array`):

ISO 3166-1 alpha-2 country codes. Leave empty for worldwide.

## `yearFrom` (type: `integer`):

Earliest event year (inclusive). Example: 2010.

## `yearTo` (type: `integer`):

Latest event year (inclusive). Example: 2024.

## `hasCoordinate` (type: `boolean`):

Only include records with decimal latitude/longitude.

## `basisOfRecord` (type: `array`):

Type of evidence backing the occurrence record.

## Actor input object example

```json
{
  "maxItems": 10,
  "hasCoordinate": false
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/gbif-occurrence-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/gbif-occurrence-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10
}' |
apify call parseforge/gbif-occurrence-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/gbif-occurrence-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "GBIF Occurrence Search Scraper",
        "description": "Search 1.5B+ species occurrence records from the Global Biodiversity Information Facility. Filter by taxon, country, year, dataset, basis of record. Pulls coordinates, taxonomy, dates, recorder, IUCN status, license per record.",
        "version": "1.0",
        "x-build-id": "w7DkP4gjsbiSIbeie"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~gbif-occurrence-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-gbif-occurrence-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~gbif-occurrence-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-gbif-occurrence-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~gbif-occurrence-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-gbif-occurrence-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "taxonKey": {
                        "title": "Taxon Key",
                        "type": "integer",
                        "description": "GBIF taxon key. Example: 212 = Aves (birds), 359 = Mammalia, 6 = Plantae."
                    },
                    "scientificName": {
                        "title": "Scientific Name",
                        "type": "string",
                        "description": "Filter by scientific name. Example: Anas platyrhynchos."
                    },
                    "datasetKey": {
                        "title": "Dataset Key",
                        "type": "string",
                        "description": "GBIF dataset UUID. Restricts results to a single publishing dataset."
                    },
                    "country": {
                        "title": "Country",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "ISO 3166-1 alpha-2 country codes. Leave empty for worldwide.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "US",
                                "CA",
                                "MX",
                                "BR",
                                "AR",
                                "CL",
                                "CO",
                                "PE",
                                "VE",
                                "UY",
                                "PY",
                                "BO",
                                "EC",
                                "GY",
                                "SR",
                                "CR",
                                "PA",
                                "GT",
                                "HN",
                                "NI",
                                "SV",
                                "BZ",
                                "CU",
                                "DO",
                                "HT",
                                "JM",
                                "BS",
                                "BB",
                                "TT",
                                "GB",
                                "IE",
                                "FR",
                                "DE",
                                "ES",
                                "PT",
                                "IT",
                                "NL",
                                "BE",
                                "LU",
                                "CH",
                                "AT",
                                "DK",
                                "SE",
                                "NO",
                                "FI",
                                "IS",
                                "PL",
                                "CZ",
                                "SK",
                                "HU",
                                "RO",
                                "BG",
                                "GR",
                                "HR",
                                "SI",
                                "RS",
                                "BA",
                                "ME",
                                "MK",
                                "AL",
                                "UA",
                                "BY",
                                "RU",
                                "TR",
                                "CY",
                                "MT",
                                "EE",
                                "LV",
                                "LT",
                                "CN",
                                "JP",
                                "KR",
                                "KP",
                                "TW",
                                "HK",
                                "MO",
                                "MN",
                                "IN",
                                "PK",
                                "BD",
                                "LK",
                                "NP",
                                "BT",
                                "MV",
                                "AF",
                                "ID",
                                "MY",
                                "SG",
                                "TH",
                                "VN",
                                "PH",
                                "KH",
                                "LA",
                                "MM",
                                "BN",
                                "TL",
                                "AU",
                                "NZ",
                                "FJ",
                                "PG",
                                "SB",
                                "VU",
                                "NC",
                                "PF",
                                "WS",
                                "TO",
                                "KI",
                                "TV",
                                "NR",
                                "MH",
                                "FM",
                                "PW",
                                "SA",
                                "AE",
                                "QA",
                                "KW",
                                "BH",
                                "OM",
                                "YE",
                                "IQ",
                                "IR",
                                "JO",
                                "LB",
                                "SY",
                                "IL",
                                "PS",
                                "EG",
                                "LY",
                                "TN",
                                "DZ",
                                "MA",
                                "SD",
                                "SS",
                                "ET",
                                "ER",
                                "DJ",
                                "SO",
                                "KE",
                                "UG",
                                "TZ",
                                "RW",
                                "BI",
                                "CD",
                                "CG",
                                "CF",
                                "CM",
                                "GA",
                                "GQ",
                                "TD",
                                "NE",
                                "NG",
                                "BJ",
                                "TG",
                                "GH",
                                "CI",
                                "LR",
                                "SL",
                                "GN",
                                "GW",
                                "SN",
                                "GM",
                                "MR",
                                "ML",
                                "BF",
                                "CV",
                                "ST",
                                "AO",
                                "ZM",
                                "ZW",
                                "MZ",
                                "MW",
                                "MG",
                                "MU",
                                "SC",
                                "KM",
                                "ZA",
                                "NA",
                                "BW",
                                "SZ",
                                "LS",
                                "RE",
                                "YT",
                                "GL",
                                "FO",
                                "AX",
                                "GE",
                                "AM",
                                "AZ",
                                "KZ",
                                "UZ",
                                "TM",
                                "TJ",
                                "KG",
                                "AD",
                                "MC",
                                "SM",
                                "VA",
                                "LI",
                                "XK"
                            ]
                        }
                    },
                    "yearFrom": {
                        "title": "Year From",
                        "minimum": 1700,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Earliest event year (inclusive). Example: 2010."
                    },
                    "yearTo": {
                        "title": "Year To",
                        "minimum": 1700,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Latest event year (inclusive). Example: 2024."
                    },
                    "hasCoordinate": {
                        "title": "Has Coordinates",
                        "type": "boolean",
                        "description": "Only include records with decimal latitude/longitude.",
                        "default": false
                    },
                    "basisOfRecord": {
                        "title": "Basis Of Record",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Type of evidence backing the occurrence record.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "HUMAN_OBSERVATION",
                                "MACHINE_OBSERVATION",
                                "OBSERVATION",
                                "PRESERVED_SPECIMEN",
                                "FOSSIL_SPECIMEN",
                                "LIVING_SPECIMEN",
                                "MATERIAL_SAMPLE",
                                "MATERIAL_CITATION",
                                "OCCURRENCE",
                                "LITERATURE"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
