ParseForge Scrapers

iNaturalist Observations Scraper

parseforge/inaturalist-observations-scraper

EducationAutomationIntegrations

Scrapes iNaturalist observations by taxon, place, and quality grade. Returns each observation as a flat row with species, location, date, observer, and photo URLs.

Run this scraper See the API call
Total users
2
Monthly active
0
Total runs
87
Bookmarked
0
Rating
Not rated yet
Last modified
9 days ago

Overview

ParseForge

iNaturalist Observations Scraper

Scrape iNaturalist observations by taxon, place, and quality grade, up to a million records per run. Each observation includes species, GPS coordinates, photos, observer details, and quality grade. No API key required. Export to CSV, JSON, Excel, or XML.

iNaturalist's official API requires authentication and rate limits that slow down large biodiversity studies. This scraper reads the public observation feed directly, filtering by taxon name, place, and quality grade, and returns each matching record in a consistent flat schema. Ideal for ecologists, GIS analysts, and machine learning teams building species distribution datasets.

Who uses it What they scrape iNaturalist for
Ecologists and conservation researchers Build species occurrence datasets for biodiversity assessments and habitat modeling
GIS analysts Extract geotagged wildlife observations for spatial analysis and map layers
Machine learning engineers Gather labeled image and location data for species classification model training
Environmental educators Collect local species sightings to create field guides and citizen science reports
Data journalists Track species migration patterns and seasonal changes for environmental stories

What it does

This Actor collects iNaturalist observations filtered by taxon, location, and quality grade, and returns each one as a flat row with species, coordinates, photos, and observer metadata.

  • πŸ” Taxon filter: search by common name like monarch butterfly or scientific name like Danaus plexippus
  • πŸ“ Place filter: narrow results to a specific region, state, or country by name
  • πŸ… Quality grade: choose Research grade, Needs ID, or Casual observations only
  • πŸ“Έ Photo URLs included: each record returns image links for visual verification and ML training
  • πŸ—ΊοΈ GPS coordinates: latitude and longitude for every observation, ready for GIS import

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with iNaturalist data

πŸ“Š Map species distribution.

An ecologist scrapes all Research grade observations of a threatened plant species across California to model its habitat range and inform conservation planning.

πŸ€– Build a species classifier.

A machine learning team collects thousands of Casual and Research grade butterfly photos with labels to train a computer vision model for automated species identification.

πŸ“° Report on urban wildlife.

A data journalist scrapes recent mammal observations in New York City to write a story on coyote and deer sightings in urban parks.

πŸŽ“ Create a campus field guide.

An environmental educator gathers all bird observations on a university campus to compile a printable field guide for students and visitors.

Why choose this scraper

What you get
No API key needed Start scraping public iNaturalist data immediately without registration
Flat row output Every observation arrives in one consistent schema for easy database import
Flexible filters Combine taxon, place, and quality grade to target exactly the records you need
Scalable volume Paid users can collect up to a million observations in a single run

How it compares

This Actor focuses on taxon, place, and quality grade filtering with a simple three-field input. Here is how it compares to other iNaturalist scrapers on Apify.

Feature ParseForge iNaturalist Observations Scraper iNaturalist Observations Scraper - Biodiversity Data iNaturalist Observations Scraper - Species, Photos & GPS
Filter by taxon name Yes, common or scientific name Yes Not listed Not listed
Filter by place name Yes, free-text place Yes Not listed Not listed
Filter by quality grade Yes, Research, Needs ID, Casual Not listed Yes Not listed
Photo URLs in output Yes Not listed Yes Yes
GPS coordinates in output Yes Not listed Not listed Yes
No API key required Yes Not listed Not listed Yes

Configure the run

Drive the Actor with a taxon name, a place name, and a quality grade filter, alone or together, and set a maximum number of observations to cap the run. The Input tab lists every parameter.

A first run with the defaults:

{
 "maxItems": 10
}

A larger pull:

{
 "maxItems": 200
}

Pricing

Pay-per-result: $0.0085 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $0.85
1,000 results $8.50
10,000 results $85.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the iNaturalist Observations Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to iNaturalist through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/inaturalist-observations-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check that your taxon name is spelled correctly and that the place name matches an iNaturalist place entry. Try broadening your filters: remove the place filter or set quality grade to Any to see if observations exist for your taxon.

Why does my run stop at 10 observations?

Free Apify users are limited to 10 items per run as a preview. Upgrade to a paid Apify plan to increase the maximum observations limit up to 1,000,000.

Why are some observations missing GPS coordinates?

Some observers choose to obscure or hide the exact location of sensitive species. iNaturalist automatically fuzzes coordinates for certain taxa. This is expected behavior and not a scraper error.

The taxon name I entered returns observations of a different species.

iNaturalist's search may match your query to a broader taxon or a synonym. Try using the exact scientific name from the iNaturalist taxonomy page for the species you want.

My run is taking a long time with a high maxItems value.

Large scrapes of hundreds of thousands of observations take time because the Actor paginates through results respectfully. You can reduce the maxItems value or narrow your filters to speed up the run.

FAQ

Question Answer
Do I need an iNaturalist account or API key to use this scraper? No. This Actor reads the public iNaturalist observation pages directly. You do not need to register an application, get an API key, or log in.
What filters can I apply to my scrape? You can filter by taxon name, which accepts both common names like monarch butterfly and scientific names like Danaus plexippus. You can also filter by place name and by quality grade: Research grade, Needs ID, or Casual.
How many observations can I scrape in one run? Free users are limited to 10 observations as a preview. Paid Apify users can set a maximum up to 1,000,000 observations per run.
What data fields does each observation include? Each row returns the species name, GPS coordinates, observation date, quality grade, observer name, photo URLs, and additional metadata. The exact field list is shown in the sample output on the Actor's page.
Can I scrape observations from a specific country or state? Yes. Use the Place input field with a free-text name like California, Costa Rica, or Yellowstone National Park to restrict results to that area.
What export formats are supported? You can export your dataset in CSV, JSON, Excel, or XML format from the Apify platform after the run completes.
Does this scraper get photos from the observations? Yes. Each observation record includes URLs to the photos uploaded by the observer, which you can download separately or use for visual analysis.
Can I search by scientific name instead of common name? Yes. The taxon name filter accepts both common names and scientific binomial names like Ursus americanus.
What is the difference between Research grade, Needs ID, and Casual? Research grade observations have been verified by the community. Needs ID means the species has not yet been confirmed. Casual observations lack sufficient evidence like a photo or date.
Is this scraper suitable for academic research? Yes. Researchers use it to build species occurrence datasets for biodiversity studies, ecological modeling, and conservation planning. The flat CSV output imports directly into R, Python, or GIS software.

Related actors

Browse the full ParseForge collection for more scrapers.

πŸ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by iNaturalist, LLC. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
taxonName string Filter by taxon name (common or scientific). Example: monarch butterfly. not set
place string Free-text place name filter. Example: California. not set
qualityGrade string (4 options) Filter by iNaturalist quality grade. not set
maxItems integer Free users. Limited to 10 items (preview). Paid users. Optional, max 1,000,000. 10

Pricing

from $7.50 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.0075 to $0.0085

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST Β· run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~inaturalist-observations-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run iNaturalist Observations Scraper on Apify All scrapers