
iNaturalist Observations Scraper
hipersoft/inaturalist-scraper
Collect wildlife and plant observations from iNaturalist: species (scientific and common name), place, coordinates, date, quality grade, observer and photos. Filter by taxon, place, quality or date and export as JSON, CSV or Excel for biodiversity research, education and mapping.
Total users
2Monthly users
1Total runs
33Per observation scraped
$0.0002Last rebuilt
Oct 26, 2026Overview
Collect wildlife and plant observations from iNaturalist with the iNaturalist Observations Scraper. Pull citizen-science records — species (scientific and common name), place, coordinates, date, quality grade, observer and photos — filtered by taxon, region, quality or date, and export each as JSON, CSV or Excel.
Built for biodiversity and ecology research, education and citizen science, conservation and GIS mapping, and nature apps, it turns millions of observations into a clean, structured dataset.
What it does
- 🦋 Species records — scientific name, common name, rank and broad group (birds, plants, insects…).
- 📍 Where & when — place name, latitude/longitude and observation date.
- 🏅 Quality grade — research-grade, needs-ID or casual, plus identification and comment counts.
- 📸 Photos — a primary photo plus all photo URLs for each observation.
- 🎛️ Filters — by species/taxon, region (place ID), quality, date range and photos-only.
- 📤 Export anywhere — JSON, CSV or Excel, or straight into a map, notebook or app.
Example output
{
"scientificName": "Panthera tigris",
"commonName": "Tiger",
"iconicTaxon": "Mammalia",
"placeGuess": "Ranthambore, India",
"latitude": 26.02,
"longitude": 76.5,
"observedOn": "2026-09-21",
"qualityGrade": "research",
"photo": "https://static.inaturalist.org/photos/.../medium.jpg",
"url": "https://www.inaturalist.org/observations/402369556"
}
How to use it
- Enter a species or taxon name (or a free-text query / region).
- Optionally set quality grade, date range and photos-only.
- Set Max observations and run. Download as JSON, CSV or Excel.
Input fields
| Field | Description |
|---|---|
| Species / taxon name | Scientific or common name (e.g. Panthera, Monarch). |
| Free-text search | Optional query across observations. |
| Place ID | iNaturalist numeric place ID to restrict to a region. |
| Quality grade | Research-grade, needs-ID or casual. |
| With photos only | Only observations that include a photo. |
| Observed from / to | Date range as YYYY-MM-DD. |
| Sort by | Date added, date observed, faves or ID. |
| Max observations | Maximum records to collect. |
Output fields
id, scientificName, commonName, rank, iconicTaxon, observedOn, createdAt, placeGuess, latitude, longitude, qualityGrade, user, userName, identificationsCount, commentsCount, photoCount, photo, photos, license, url.
Popular use cases
- Biodiversity research — build species-occurrence datasets for any region.
- Conservation & GIS — map where a species has been recorded over time.
- Education & citizen science — pull observations for lessons and projects.
- Nature apps — surface recent local sightings with photos.
- Analysis — study seasonality and distribution by taxon and place.
FAQ
Do I need an account or key? No. Set your filters and run.
Which observations are included? Public observations across all taxa — animals, plants, fungi and more — with optional filters for research-grade and photos.
Can I restrict to one region? Yes — use a place ID to limit results to a country or area.
Can I get only photographed observations? Yes — keep "With photos only" on (the default).
Can I export to Excel or Google Sheets? Yes — results download as JSON, CSV or Excel and integrate with maps, notebooks and apps.
Structured iNaturalist observation data — species, place, coordinates, date and photos — clean and export-ready for biodiversity research, education and mapping.
Input
| Field | Type | Description |
|---|---|---|
taxonNameSpecies / taxon name | string | Scientific or common name to filter by, e.g. "Panthera leo", "Monarch" or "Quercus". Leave empty for all species. |
queryFree-text search (optional) | string | Free-text query across observations (place, notes, species). Leave empty to ignore. |
placeIdPlace ID (optional) | string | iNaturalist numeric place ID to restrict results to a region (e.g. 1 = United States, 6803 = Canada). Leave empty for worldwide. |
qualityGradeQuality grade | string · , research, needs_id, casual | Filter by data quality. |
photosOnlyWith photos only | boolean | When on, return only observations that include at least one photo. Default: true |
dateFromObserved from (optional) | string | Earliest observation date, YYYY-MM-DD. Leave empty for no lower bound. |
dateToObserved to (optional) | string | Latest observation date, YYYY-MM-DD. Leave empty for no upper bound. |
orderBySort by | string · created_at, observed_on, votes, id | Order of returned observations (newest first). Default: "created_at" |
maxItemsMax observations | integer | Maximum number of observations to collect. Default: 200 |
proxyConfigurationProxy | object | Proxy used to reach the source. The default (Apify residential) works out of the box; you can switch groups or supply your own if you prefer. Default: {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~inaturalist-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"taxonName": "Panthera"
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/inaturalist-scraper").call(run_input={
"taxonName": "Panthera"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/inaturalist-scraper').call({
"taxonName": "Panthera"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Observation scraped One iNaturalist observation row | $0.0002 | $0.0001 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
North Data Scraper
Look up European companies on North Data: legal name, former names, register number, address, founding date, LEI, business purpose, managing directors and officers, and recent register publications. Germany, UK, France, Austria and 20+ countries. Bulk lookups.
2,467 runs · 5 users · $0.004 / companyWebsite Content Crawler
Extract clean, readable content from any list of websites: page title, meta description, headings, main body text, word count and link/image counts. Optional same-domain crawl. Bulk-ready. Great for LLM/RAG ingestion, content audits and research.
206 runs · 20 users · $0.0024 / page scrapedSpyFu Domain Scraper
Bulk SEO and PPC reports for any domain from SpyFu: organic keywords, monthly SEO clicks and value, Google Ads budget, paid keywords, top keywords, competitors, top countries and monthly history. Competitor research for agencies. Export CSV/JSON.
185 runs · 7 users · $0.008 / domain reportTrustpilot Reviews Scraper
Scrape Trustpilot reviews and company ratings by company domain or Trustpilot URL: star rating, title, text, reviewer name & country, verification, date, company reply, plus company TrustScore and total reviews.
146 runs · 4 users · $0.0006 / review scrapedACRA Singapore Company Registry Scraper
Search and export Singapore's full ACRA corporate registry: UEN, entity name, status, incorporation date, address, SSIC industry codes, officers, former names and audit firms. Filter by name, status, entity type or industry. Public open data, no setup.
138 runs · 10 users · $0.01 / company scrapedWayback Machine Scraper
List every Internet Archive (Wayback Machine) snapshot of a URL or whole domain: timestamp, snapshot URL, status code, MIME type and content digest. Filter by date, status and dedupe. For SEO, OSINT and historical research. No setup.
135 runs · 15 users · $0.002 / snapshot scrapedSend the site and the fields. We build it and you get it first.